如何在WSO2 GREG中使用API访问服务的属性?

如何在WSO2 GREG中使用API访问服务的属性?,wso2,soa,Wso2,Soa,我可以使用治理API添加和读取属性,如下所示: registry = Util.initialize(); governanceRegistry = Util.getGovernanceRegistry(registry); serviceManager = new ServiceManager(governanceRegistry); services = Arrays.asList(serviceManager.getAll

我可以使用治理API添加和读取属性,如下所示:

        registry = Util.initialize();
        governanceRegistry = Util.getGovernanceRegistry(registry);

        serviceManager = new ServiceManager(governanceRegistry);

        services = Arrays.asList(serviceManager.getAllServices());
        services.get(2).addAttribute("what", "isthis");
        serviceManager.updateService(services.get(2));
但是,当我使用WSO2 Governance Registry管理控制台并打开服务时,我只是添加了参数/值“what”/“isthis”,我在属性列表中没有看到它


如何使用API访问属性(而不是属性)列表?我很难弄清楚它们之间的关系。

您可以使用以下代码检索它

List<Resource> paths = getServicePath(registry, "/_system/governance/trunk/services");

 for (Resource service : paths) {
                // we've got all the services here

               Properties props = service.getProperties();
                for (Object prop : props.keySet()) {
                    System.out.println(prop + " - " + props.get(prop));
                }
        }
List path=getServicePath(注册表,“/_system/governance/trunk/services”);
用于(资源服务:路径){
//我们这里有所有的服务
Properties props=service.getProperties();
对于(对象属性:props.keySet()){
System.out.println(prop+“-”+props.get(prop));
}
}
有关完整代码,请参阅此示例

----后来添加---

这更符合您的代码

 Registry governanceRegistry = GovernanceUtils.getGovernanceUserRegistry(registry, "admin");
       ServiceManager serviceManager = new ServiceManager(governanceRegistry);
       Service[] services = serviceManager.getAllServices();

        for(int i =0 ; i<services.length ; i++){
            Service service = services[i];
            Resource resource = governanceRegistry.get(service.getPath());
            System.out.println(resource.getProperties());
        }
注册表governanceRegistry=GovernanceUtils.getGovernanceUserRegistry(注册表,“admin”); ServiceManager ServiceManager=新的ServiceManager(governanceRegistry); 服务[]服务=serviceManager.getAllServices();
对于(inti=0;i,您可以使用以下代码检索它

List<Resource> paths = getServicePath(registry, "/_system/governance/trunk/services");

 for (Resource service : paths) {
                // we've got all the services here

               Properties props = service.getProperties();
                for (Object prop : props.keySet()) {
                    System.out.println(prop + " - " + props.get(prop));
                }
        }
List path=getServicePath(注册表,“/_system/governance/trunk/services”);
用于(资源服务:路径){
//我们这里有所有的服务
Properties props=service.getProperties();
对于(对象属性:props.keySet()){
System.out.println(prop+“-”+props.get(prop));
}
}
有关完整代码,请参阅此示例

----后来添加---

这更符合您的代码

 Registry governanceRegistry = GovernanceUtils.getGovernanceUserRegistry(registry, "admin");
       ServiceManager serviceManager = new ServiceManager(governanceRegistry);
       Service[] services = serviceManager.getAllServices();

        for(int i =0 ; i<services.length ; i++){
            Service service = services[i];
            Resource resource = governanceRegistry.get(service.getPath());
            System.out.println(resource.getProperties());
        }
注册表governanceRegistry=GovernanceUtils.getGovernanceUserRegistry(注册表,“admin”); ServiceManager ServiceManager=新的ServiceManager(governanceRegistry); 服务[]服务=serviceManager.getAllServices();
对于(int i=0;它有两个后续问题:1.哪个类有getServicePath方法?我不需要像这样调用它SomeClassInstance.getServicePath(registry,“/…”)?2.是否无法从org.wso2.carbon.governance.api.services.dataobjects.Service转换到org.wso2.carbon.registry.api.Resource?1)这段代码是从我提到的博客文章中提取出来的。因此,完整的源代码就在那里。2)没有。因此,我添加了一个更清晰的代码段,它与您的代码一致。下面有两个问题:1。哪个类具有getServicePath方法?我不需要像这样调用SomeClassInstance.getServicePath(注册表“/…”)吗?2.是否无法从org.wso2.carbon.governance.api.services.dataobjects.Service转换为org.wso2.carbon.registry.api.Resource?1)此代码摘自我提到的博客文章。所以完整的源代码就在那里。2)没有。所以我添加了一个更清晰的代码段,它与您的代码一致。