Apache JUDDI: поиск шаблонов - PullRequest
1 голос
/ 13 мая 2011

Я использую клиент jUDDI v3.0.4 для запроса сервера UDDI (juddi-portal-bundle-3.0.4).Я заинтересован в том, чтобы найти службу (что мне удалось) и запросить ее шаблоны привязки, фактически для того, чтобы точка доступа WSDL могла позже запрашивать WebService.

Я могу получить точку доступа только в том случае, еслиЯ знаю ключ BindingTemplate, который я получаю через портал Pluto, выпущенный вместе с UDDI-сервером.

Когда я пытаюсь выполнить запрос на BindingTemplates службы с помощью объекта FindBinding, я получаю "javax.xml.ws.soap.SOAPFaultException: должен быть указан хотя бы один categoryBag, find_tModel или tModelBag ".Но я не могу заполнить ни один из них в объекте FindBinding.

Я что-то упустил? Разве это не правильный способ получения шаблона службы и его WSDL позже?

Спасибо.

Оскар.

Ответы [ 2 ]

1 голос
/ 01 сентября 2012

Спасибо 秦玉珠 за помощь. Код может быть следующим:

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 голос
/ 19 мая 2011

Я нашел решение.Ключ заключается в поиске шаблонов привязки через объект бизнес-службы, это относится к объекту BindingTemplate.

Итак,

  1. запрос служебных ключей через API-интерфейс findService (FindService fs)предложенный UDDIInquiryPortType.
  2. для возвращенного ServiceList, получите объекты ServiceInfo, которые содержат служебные ключи.
  3. с учетом искомых служебных ключей (findService можно ограничить с помощью объекта Name)получить подробности службы с помощью API getServiceDetail (GetServiceDetail sd), предлагаемого UDDIInquiryPortType, где объект GetServiceDetail заполнен служебными ключами.
  4. список объектов ServiceDetail, возвращаемых предыдущим запросом, поможет вам перейти к BindingTemplatesкоторые содержат определение веб-службы (WSDL).

Надеюсь, это поможет.

...