Question

J'utilise Juddi V3.0.4 Client pour enquêter un serveur UDDI (Juddi-Portal-Bundle-3.0.4). Mon intérêt est de trouver un service (que j'ai réussi) et de remettre en question ses modèles de liaison, en fait pour obtenir le point d'accès WSDL pour pouvoir interroger le service Web plus tard.

Je ne peux obtenir le point d'accès que si je connais la touche BindingTemplate, que j'obtiens via le portail Pluton libéré avec le serveur UDDI.

Lorsque j'essaie de demander les liestes de liaison d'un service, avec un objet FindBinding, je reçois "javax.xml.wsoap.soapfaultException: au moins une catégoriebag, find_tmodel ou tmodelbag doit être fourni". Mais je ne peux remplir aucun de ceux de l'objet Findbinding.

Est-ce que je manque quelque chose?, N'est-ce pas la bonne façon d'obtenir un modèle de service et son WSDL plus tard?

Merci.

Oscar.

Était-ce utile?

La solution

J'ai découvert la solution. La clé consiste à rechercher les modèles de liaison via l'objet de service commercial, cela transporte l'objet BindingTemplate.

Alors,

  1. Requête pour les clés de service via API FindService (FindService FS) offerte par UddiinQuiryportType.
  2. Pour le retour de services, obtenez les objets ServiceInfo qui contiennent les clés de service.
  3. Compte tenu des clés de service que vous recherchez (le FindService peut être portée via un objet de nom), obtenez le détail du service via l'API GetServicedEtail (GetServicedEtail SD) offerte par UddiinQuiryportType, où l'objet GetServicedEtail est rempli avec les clés de service.
  4. La liste des objets ServicedEtail renvoyés par la requête précédente vous guidera vers les listes de liaison qui contiennent la définition du service Web (WSDL).

J'espère que cela aide.

Autres conseils

Merci à 秦玉珠 pour l'aide. Le code peut être le suivant:

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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top