我正在使用jUDDI v3.0.4客户端来查询UDDI服务器(juddi-portal-bundle-3.0.4)。我的兴趣是找到一个服务(我成功)并查询其绑定模板,实际上是为了让Access Point WSDL能够在以后查询WebService。
如果我知道BindingTemplate密钥,我只能通过随UDDI服务器发布的Pluto门户网站获取Access点。
当我尝试使用FindBinding对象查询服务的BindingTemplates时,我得到“javax.xml.ws.soap.SOAPFaultException:必须提供至少一个categoryBag,find_tModel或tModelBag”。但是我无法填写FindBinding对象中的任何一个。
我错过了什么?,这不是以后获取服务模板及其WSDL的正确方法吗?
感谢。
的奥斯卡。
答案 0 :(得分:1)
我找到了解决方案。 关键是通过业务服务对象查找绑定模板,这将携带到BindingTemplate对象。
所以,
希望它有所帮助。
答案 1 :(得分:1)
感谢秦玉珠的帮助。代码如下:
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);
}