1

我面临着 wso2 ESB 4.8.1 和 WSO2 GREG 4.6.0。我已将 GREG 连接为 esb 的远程注册表,现在我需要开发一个类调解器,通过它我可以将共享资源存储在远程注册表中。

1) Registry 是否可以存储 Java 对象?

2)我应该使用 org.apache.synapse.registry.Registry 来浏览注册表吗?还是在调解器项目中导入治理api更好?

例如,我需要添加和获取资源并将其设置为我的自定义属性。然后我想读它们。使用此代码:

    org.apache.axis2.context.MessageContext axis2MsgContext;
    axis2MsgContext =  ((Axis2MessageContext) synapseMsgContext).getAxis2MessageContext();
    Registry regInstance = synapseMsgContext.getConfiguration()
            .getRegistry();


    Object obj = regInstance.getResource(new Entry ("conf:/provaDUE"), null);


    Properties prop  = regInstance.getResourceProperties("conf:/provaDUE");

我无法获取使用 UI 设置的属性。

谢谢。

4

1 回答 1

1

这是您的问题的答案。

  1. 目前 Registry 不支持保存 java 对象,但您可以编写一个注册表处理程序 [1],将 java 实例数据保存在注册表资源中,并在检索对象时从注册表资源中的该数据创建一个 java 对象。您可以使用 java 反射 [2]。

  2. 您应该使用注册表 API 或治理 API,而不是用于突触资源的 org.apache.synapse.registry.Registry。这就是为什么您没有获得在 UI 中设置的属性的原因。

这是访问配置注册表中资源属性的示例代码。

Registry registry = CarbonContext.getThreadLocalCarbonContext(). getRegistry(RegistryType.USER_CONFIGURATION);

Resource resource = registry.get("/provaDUE");

Properties properties = resource.getProperties();

[1]。https://docs.wso2.com/display/Governance460/Handler+Sample

[2]。http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html

[3]。https://docs.wso2.com/display/Governance460/Registry+API

[4]。https://docs.wso2.com/display/Governance460/Governance+API

于 2015-01-20T01:38:19.650 回答