我有一个简单的组件,如下:
@Component (name="Test")
@Instantiate
public class Test {
@Property(name="foo", value="my-instance-2")
String buffer = "abcbuffer";
public Test() {
System.out.println("test running");
}
}我使用"instance iTest“,我得到了结果
g! instance iTest
instance name="iTest" state="valid" bundle="31" component.type="Test"
handler name="org.apache.felix.ipojo:properties" state="valid"
property name="foo" value="abcbuffer"
handler name="org.apache.felix.ipojo:callback" state="valid"
handler name="org.apache.felix.ipojo:architecture" state="valid"
object name="test.Test@637a91a"如何通过“内省”从另一个组件获取"buffer“属性?我想得到"abcbuffer“的值。
谢谢,
发布于 2016-01-22 16:02:43
为了回答这个问题,我做了以下几件事:
for (Factory factory : factories) {
if (factory.getName().equals("Test")) { //Test is default name of a component name
InstanceManager im = (InstanceManager) factory.getInstances().get(0);
String buffer = (Strig) im.getFieldValue("buffer");
System.out.println(buffer);
}
}发布于 2016-01-22 16:08:18
为了动态更新缓冲值,我们使用:
ComponentInstance ci = (ComponentInstance) factory.getInstances().get(0);
Properties props = new Properties();
String newbuffer = new String("newValue");
props.put("buffer", newbuffer);
ci.reconfigure(props);发布于 2016-11-14 21:50:36
所有iPOJO组件都包装了一个体系结构处理程序。您可以通过architecture服务跟踪此体系结构处理程序,并使用它来内省组件。如果我没记错的话,这是目前实例命令所做的事情。
https://stackoverflow.com/questions/34931355
复制相似问题