Domanda

Sto usando Juddi v3.0.4 client per inchiesta un server UDDI (Juddi-Portal-Bundle-3.0.4).Il mio interesse è trovare un servizio (che sono riuscito) e query per i suoi modelli vincolanti, infatti per ottenere il punto di accesso WSDL per essere in grado di interrogare il WebService in seguito.

Posso solo ottenere il punto di accesso se conosco il tasto BINDINGTEMPLATE, che ottengo tramite il portale PLUTO rilasciato con il server UDDI.

Quando provo a interrogare per le bindingTemplates di un servizio, con un oggetto FindBinding, ottengo "javax.xml.ws.soap.soapfaultException: è necessario fornire almeno una categoriaBag, find_tmodel o tmodelbag".Ma non riesco a riempire nessuno di quelli nell'oggetto di Findbinding.

Mi manca qualcosa?, non è il modo corretto di ottenere un modello di servizio e il suo wsdl più tardi?

Grazie.

Oscar.

È stato utile?

Soluzione

Ho scoperto la soluzione. La chiave è cercare i modelli di rilegatura tramite l'oggetto del servizio Business, questo porta all'oggetto BindingTemplate.

Allora,

    .
  1. Query per i tasti di servizio tramite API di Findservice (Findservice FS) offerto da uddiinquiryportType.
  2. Per il serviceList restituito, ottenere gli oggetti ServiceInfo che contengono i tasti di servizio.
  3. Dato i tasti di servizio che stai cercando (il FindService può essere ambito tramite un oggetto Nome), ottenere il dettaglio del servizio tramite l'API GetDerviceDetail (GeterverCeetail SD) offerto da UDDIInquiryportType, dove l'oggetto GetDerViceDetail è compilato con i tasti di servizio.
  4. L'elenco degli oggetti ServiceDetail restituito dalla query precedente ti guiderà alle bindingTemplates che contengono la definizione del servizio Web (WSDL).

    Spero che aiuti.

Altri suggerimenti

Grazie a 秦玉珠 per l'aiuto.Il codice può essere il seguente:

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);
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top