WSO2 Governance API from WSO2 ESB Mediator



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. 但您可以编写一个注册表处理程序 [1],它将 java 实例数据保存在注册表资源中,并在检索对象时从注册表资源中的数据创建一个 java 对象。你可以使用 java Reflection[2]。

  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

最新更新