我正在使用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的正确方式吗?
谢谢。
奥斯卡。
发布于 2011-05-19 22:06:06
我找到了解决方案。关键是通过业务服务对象查找绑定模板,这将传递到BindingTemplate对象。
所以,
希望能有所帮助。
发布于 2012-09-01 22:34:09
感谢秦玉珠的帮助。代码可以如下所示:
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);
}https://stackoverflow.com/questions/5991920
复制相似问题