im 面向 wso2 ESB 4.8.1 和 WSO2 GREG 4.6.0。我已经将 GREG 连接为 esb 的远程注册表,现在我需要开发一个类调解器,通过它我可以在远程注册表中存储共享资源。
1) 注册表可以存储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 设置的属性。
谢谢。
以下是您问题的答案。
- 目前注册表不支持保存 java 对象,
但您可以编写一个注册表处理程序 [1],它将 java 实例数据保存在注册表资源中,并在检索对象时从注册表资源中的数据创建一个 java 对象。你可以使用 java Reflection[2]。
您应该使用注册表API或治理API,而不是用于synapse资源的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