Вопрос
Я использую juddi v3.0.4 клиент для запроса сервера uddi (juddi-portal-pundle-3.0.4).Мой интерес заключается в том, чтобы найти услугу (которое мне удалось) и запросить его шаблоны связывания, на самом деле, чтобы получить точку доступа WSDL, чтобы иметь возможность запросить Webservice позже.
Я могу только получить точку доступа, если я знаю ключ BindingTemplate, которую я получаю через Pluto Portal, выпущенный с помощью сервера UDDI.
Когда я пытаюсь запросить для запроса BindingTemplates сервиса, с объектом поиска, я получаю «javax.xml.ws.soap.soapfaultException: по крайней мере один категорий, find_tmodel или tmodelbag) должен поставляться".Но я не могу заполнить ни одно из них в объекте поиска.
Я что-то упускаю?, это не правильный способ получить сервисный шаблон и его WSDL позже?
спасибо.
Оскар.
Решение
Я обнаружил решение. Ключ состоит в том, чтобы искать шаблоны связывания через объект Business Service, это несет на объект BindingTemplate.
Так,
- Запрос для ключей службы через API Findservice (Findservice FS), предлагаемый UDDiinquiryporttype.
- для возврата сервисного обслуживания, получите объекты ServiceInfo, которые содержат сервисные клавиши.
- Учитывая ключи обслуживания, которые вы ищете (Findservice может быть выделен с помощью объекта имени), получить подробную информацию о обслуживании через API GESTERVICEICETAIL (GESTERVICEICEALETAIL SD), предлагаемый UDDiinquiryporttype, где объект GESTERVICEICHICAIL заполнен с помощью клавиш сервиса,
- Список объектов Servicedetail, возвращаемые предыдущим запросом, проведут вас к BindingTeMplates, которые содержат определение веб-службы (WSDL).
Надеюсь, это поможет.
Другие советы
благодаря 秦玉珠 для помощи.Код может быть следующим:
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);
}
.