Pergunta

Estou usando o cliente jUDDI v3.0.4 para consultar um servidor UDDI (juddi-portal-bundle-3.0.4).Meu interesse é encontrar um serviço (o que consegui) e consultar seus Binding Templates, na verdade conseguir o WSDL do Access Point para poder consultar o WebService posteriormente.

Só posso obter o ponto de acesso se conhecer a chave BindingTemplate, que obtenho através do portal Plutão lançado com o servidor UDDI.

Quando tento consultar o BindingTemplates de um serviço, com um objeto FindBinding, recebo "javax.xml.ws.soap.SOAPFaultException:Pelo menos uma categoriaBag, find_tModel ou tModelBag deve ser fornecida".Mas não consigo preencher nenhum deles no objeto FindBinding.

Estou faltando alguma coisa? Essa não é a maneira correta de obter um modelo de serviço e seu WSDL posteriormente?

Obrigado.

Óscar.

Foi útil?

Solução

Eu descobri a solução. A chave é procurar os modelos de ligação através do objeto de serviço comercial, isso realiza para o objeto BindingTemplate.

Então,

    .
  1. consulta para as chaves de serviço via Findservice (findservice fs) API oferecido por UddiinquiryPorttype.
  2. Para o serviceelist retornado, obtenha os objetos ServiceInfo que contêm as teclas de serviço.
  3. Dadas as teclas de serviço que você está procurando (o FindService pode ser escopo por meio de um nome de nome), obter o detalhe do serviço através da API GetServiceTail (GetServiceTail SD) oferecida pelo UddiinquiryPortType, onde o objeto GetServiceTail é preenchido com as teclas de serviço.
  4. A lista de objetos ServicedEteil retornada pela consulta anterior irá guiá-lo para os blindingtemplates que contêm a definição de serviço da Web (WSDL).

    Espero que ajude.

Outras dicas

Obrigado a 秦玉珠 pela ajuda.O código pode ser o seguinte:

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);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top