首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache jUDDI:查找模板

Apache jUDDI:查找模板
EN

Stack Overflow用户
提问于 2011-05-13 20:35:45
回答 2查看 716关注 0票数 1

我正在使用jUDDI v3.0.4客户端查询UDDI服务器(UDDI portal-bundle-3.0.4)。我的兴趣是找到一个服务(我成功了)并查询它的绑定模板,实际上是让Access Point WSDL稍后能够查询WebService。

我只有在知道BindingTemplate密钥的情况下才能获得访问点,该密钥是通过随UDDI服务器发布的Pluto门户网站获得的。

当我尝试使用FindBinding对象查询服务的BindingTemplates时,我得到"javax.xml.ws.soap.SOAPFaultException:至少必须提供一个categoryBag、find_tModel或tModelBag“。但是我不能在FindBinding对象中填充其中的任何一个。

我是不是遗漏了什么?这不是以后获取服务模板及其WSDL的正确方式吗?

谢谢。

奥斯卡。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-19 22:06:06

我找到了解决方案。关键是通过业务服务对象查找绑定模板,这将传递到BindingTemplate对象。

所以,

  1. 通过UDDIInquiryPortType.
  2. for提供的findService(FindService fs)接口查询服务密钥返回的ServiceList,获取包含服务密钥的ServiceInfo对象。
  3. 给定您正在查找的服务密钥( findService可以通过名称对象限定作用域),通过UDDIInquiryPortType提供的getServiceDetail(GetServiceDetail sd)接口获取服务详细信息,其中GetServiceDetail对象用服务密钥填充。
  4. 上一次查询返回的ServiceDetail对象列表将引导您找到包含web服务定义(WSDL)的BindingTemplates。

希望能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2012-09-01 22:34:09

感谢秦玉珠的帮助。代码可以如下所示:

代码语言:javascript
复制
ServiceList list1=inquiryService.findService(findservice);
GetServiceDetail gsd=new GetServiceDetail();
for(ServiceInfo serviceInfo :list1.getServiceInfos().getServiceInfo()){
    gsd.getServiceKey().add(serviceInfo.getServiceKey());
    System.out.println(serviceInfo.getServiceKey());
    String servicekey=serviceInfo.getServiceKey();

    GetServiceDetail getServiceDetail=new GetServiceDetail();
    getServiceDetail.setAuthInfo(authinfo);
    getServiceDetail.getServiceKey().add(servicekey);
    ServiceDetail serviceDetail=inquiryService.getServiceDetail(getServiceDetail);
    BusinessService businessservice=serviceDetail.getBusinessService().get(0);
    System.out.println("fetched service name:"+businessservice.getName().get(0).getValue());
    String bindingkey = businessservice.getBindingTemplates().getBindingTemplate().get(0).getBindingKey();
    System.out.println(bindingkey);

    GetBindingDetail gbd = new GetBindingDetail();
    gbd.setAuthInfo(authinfo);
    gbd.getBindingKey().add(bindingkey);
    BindingDetail bindingdetail=inquiryService.getBindingDetail(gbd);
    BindingTemplate bindingtemplate=bindingdetail.getBindingTemplate().get(0);
    String accesspoint=bindingtemplate.getAccessPoint().getValue();
    System.out.println(accesspoint);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5991920

复制
相关文章

相似问题

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