Eclipse plugin 可以在Eclipse插件中使用Felix依赖关系管理器吗?

Eclipse plugin 可以在Eclipse插件中使用Felix依赖关系管理器吗?,eclipse-plugin,osgi,apache-felix,Eclipse Plugin,Osgi,Apache Felix,我编写了一个使用。它是激活剂 . 但是插件我的插件激活器扩展了。如何从eclipse插件中从felix依赖关系管理器获取服务 有一个getDependencyManager方法,但它是一个列表,不确定如何知道列表中的正确管理器。是的,您可以在任何OSGi框架中使用依赖关系管理器,包括Equinox(Eclipse基于它) 为什么bundle-activator需要扩展AbstractUIPlugin??您实际使用的是AbstractUIPlugin,,还是因为您使用EclipsePDE生成初始

我编写了一个使用。它是激活剂 . 但是插件我的插件激活器扩展了。如何从eclipse插件中从felix依赖关系管理器获取服务


有一个getDependencyManager方法,但它是一个列表,不确定如何知道列表中的正确管理器。

是的,您可以在任何OSGi框架中使用依赖关系管理器,包括Equinox(Eclipse基于它)

为什么bundle-activator需要扩展
AbstractUIPlugin
??您实际使用的是
AbstractUIPlugin,
,还是因为您使用EclipsePDE生成初始代码而为您生成的?PDE中的项目模板基本上都是垃圾,大多数捆绑包根本不需要激活器,真正需要扩展
AbstractUIPlugin
的很少


因此,只需将激活器更改为扩展
DependencyActivatorBase
,而不是
AbstractUIPlugin
,是的,您可以在任何OSGi框架中使用依赖关系管理器,包括Equinox(Eclipse基于它)

为什么bundle-activator需要扩展
AbstractUIPlugin
??您实际使用的是
AbstractUIPlugin,
,还是因为您使用EclipsePDE生成初始代码而为您生成的?PDE中的项目模板基本上都是垃圾,大多数捆绑包根本不需要激活器,真正需要扩展
AbstractUIPlugin
的很少


因此,只需将激活器更改为扩展
DependencyActivatorBase
,而不是
AbstractUIPlugin

DependencyActivatorBase类只是为了方便起见而存在的一个基类。如果出于某种原因,您不能使用它(比如,可以说,在您的情况下),那么您总是可以自己从自己的类实例化DependencyManager的实例。它所需要的只是对BundleContext的引用(您可以从BundleActivator的start()方法获得,假设您自己实现了该方法)。那么就这样做:

DependencyManager dm = new DependencyManager(bundleContext);
dm.add(dm.createComponent()
  .setImplementation(YourComponent.class)
  .add(dm.createServiceDependency()
    .setService(LogService.class)
  )
);

DependencyActivator基类只是为了方便您而存在的一个基类。如果出于某种原因,您不能使用它(比如,可以说,在您的情况下),那么您总是可以自己从自己的类实例化DependencyManager的实例。它所需要的只是对BundleContext的引用(您可以从BundleActivator的start()方法获得,假设您自己实现了该方法)。那么就这样做:

DependencyManager dm = new DependencyManager(bundleContext);
dm.add(dm.createComponent()
  .setImplementation(YourComponent.class)
  .add(dm.createServiceDependency()
    .setService(LogService.class)
  )
);

完全正确,我扩展了PDE样本。我想我只是假设AbstractUIPlugin是在我的插件中添加任何UI元素的必要组件。您能简单地说一下AbstractUIPlugin的用途吗?
AbstractUIPlugin
让您更容易访问首选项和图像注册表等内容。类的JavaDoc有完整的细节。然而,这些东西都不难获得。。。如果您需要它们,那么只需阅读
AbstractUIPlugin
的代码,并遵循相同的模式。完全正确,我从PDE示例中进行了扩展。我想我只是假设AbstractUIPlugin是在我的插件中添加任何UI元素的必要组件。您能简单地说一下AbstractUIPlugin的用途吗?
AbstractUIPlugin
让您更容易访问首选项和图像注册表等内容。类的JavaDoc有完整的细节。然而,这些东西都不难获得。。。如果您需要它们,那么只需阅读
AbstractUIPlugin
的代码,并遵循相同的模式。我想到的是类似Spring的ApplicationContext的DependencyManager。所以,与Spring的ApplicationContext不同,可以有多个DependencyManager吗?我假设不需要一个DependencyManager,因为它只是与OSGI容器维护的服务交互,而不是在自己的上下文中维护它们?这很好。每个bundle应该至少有一个DependencyManager,但这是因为它使用您在构造函数中传递的BundleContext,不应该在bundle之间共享。如果需要,每个捆绑包可以使用多个DependencyManager。它只是一个保存组件及其依赖关系的声明性数据的实例。所以,与Spring的ApplicationContext不同,可以有多个DependencyManager吗?我假设不需要一个DependencyManager,因为它只是与OSGI容器维护的服务交互,而不是在自己的上下文中维护它们?这很好。每个bundle应该至少有一个DependencyManager,但这是因为它使用您在构造函数中传递的BundleContext,不应该在bundle之间共享。如果需要,每个捆绑包可以使用多个DependencyManager。它只是一个实例,用于保存有关组件及其依赖关系的声明性数据。