为具有相同名称的多个类实现组件工厂并通过属性/过滤器值检索

时间:2015-11-09 05:29:27

标签: java osgi apache-karaf karaf

我正在开发OSGi(Rev 4)项目,我必须使用karaf注册表。要么我可以将我的实现声明为组件或服务。 ie)我可以使用组件工厂/服务工厂在karaf中注册我的组件/服务,以生成组件/服务的对象。 我有多个类实现,所以对于服务工厂,我希望它可以用单个类实现,即通过注册具有不同属性/过滤器值的相同名称的所有服务。虽然检索服务我可以查询属性,以便只有一个检索类就足够了。 项目结构

\Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE

我使用相同的项目结构在SO中引发了另一个question。任何人都可以告诉我这种情况是否可以通过组件工厂实现,即注册具有不同属性的相同工厂名称 1. Service(interface) - implementation 1 - implementation 2 (different implemenations) - .... 2. Factory(register as a component factory) 3. FactoryManager(which produces objects) 并通过属性值检索(目标属性的动态调用)。 以更精确的方式

第一家工厂

(factory="com.java.test.ClassImpl")

第二工厂

 @Component(name = "ExampleComponentFactoryServiceProvider", factory = "example.factory.provider")
    public class ExampleComponentFactoryServiceProvider implements ExampleFactoryService {

以上是两家注册了相同工厂名称的工厂。我期望注册不同的属性值。 在activate()方法中检索部分

@Component(name = "ExampleComponentFactoryServiceProvider1", factory = "example.factory.provider")
public class ExampleComponentFactoryServiceProvider1 implements ExampleFactoryService {

在上面的代码中,组件工厂尝试通过属性过滤来创建两个不同的实例。但是如果第一个停止,它会创建第一个并创建第二个。如何通过相同的工厂id创建对象,并在运行时生成不同的目标属性。

0 个答案:

没有答案