我还有另一个与iPOJO中的动态更新有关的问题:
1。问题:
//
@Component(name="C", immediate=true)
@Instantiate
public class C_impl {
@Requires
A_Service service;
}
//
2。要求:
问题:
如何开发独立组件以重新配置(控制)组件实施?我读过(http://felix.apache.org/site/dive-into-the-ipojo-manipulation-depths.html),但我不太了解。 在此先感谢您的回复
答案 0 :(得分:1)
那么,您想要更改组件的组件类吗?这不会真的有效。
唯一的方法是让两个实现在没有声明实例的情况下可用(没有@instantiate),并创建一个需要Factories(org.apache.felix.ipojo.Factory服务)的组件,并在需要时创建实例。显然,如果你需要替换,你还需要在创建第二个时创建第一个创建的实例。
所以,它需要一个像这样的组件(这是伪代码):
@Component(immediate=true)
@Instantiate
public class Controller {
@Requires(filter="(factory.name=A)")
Factory factoryOfA;
@Requires(filter="(factory.name=B)")
Factory factoryOfB;
ComponentInstance instance;
@Validate
public void createA() throws Exception {
instance = factoryOfA.createInstance(null);
}
public void switchToB() throws Exception {
instance.dispose();
instance = factoryOfB.createInstance(null);
}
}