首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iPOJO中获取属性

如何在iPOJO中获取属性
EN

Stack Overflow用户
提问于 2016-01-22 02:19:18
回答 3查看 68关注 0票数 0

我有一个简单的组件,如下:

代码语言:javascript
复制
@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“,我得到了结果

代码语言:javascript
复制
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“的值。

谢谢,

EN

回答 3

Stack Overflow用户

发布于 2016-01-22 16:02:43

为了回答这个问题,我做了以下几件事:

代码语言:javascript
复制
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);
    }

}
票数 0
EN

Stack Overflow用户

发布于 2016-01-22 16:08:18

为了动态更新缓冲值,我们使用:

代码语言:javascript
复制
            ComponentInstance ci = (ComponentInstance) factory.getInstances().get(0);
            Properties props = new Properties();
            String newbuffer = new String("newValue");
            props.put("buffer", newbuffer);
            ci.reconfigure(props);
票数 0
EN

Stack Overflow用户

发布于 2016-11-14 21:50:36

所有iPOJO组件都包装了一个体系结构处理程序。您可以通过architecture服务跟踪此体系结构处理程序,并使用它来内省组件。如果我没记错的话,这是目前实例命令所做的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34931355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档