Pregunta

Estoy usando el cliente Juddi v3.0.4 al cliente de UDDI (Juddi-Portal-Bundle-3.0.4).Mi interés es encontrar un servicio (que lo sucedí) y consulta por sus plantillas vinculantes, de hecho, para obtener el punto de acceso WSDL para poder consultar el servicio web más tarde.

Solo puedo obtener el punto de acceso si conozco la tecla BindingTemplate, que recibo a través del Portal de Plutón lanzado con el servidor UDDI.

Cuando intento consultar para los puntos de referencia de un servicio, con un objeto FindBinding, obtengo "javax.xml.ws.soap.soapfaultException: al menos una bolsa de categorías, Find_Tmodel o Tmodelbag deben ser suministrados".Pero no puedo rellenar ninguno de los en el objeto FindBinding.

¿Estoy perdiendo algo?, ¿no es esa la forma correcta de obtener una plantilla de servicio y su WSDL más tarde?

gracias.

Oscar.

¿Fue útil?

Solución

Descubrí la solución. La clave es buscar las plantillas de unión a través del objeto de servicio comercial, esto lleva al objeto BindingTemplate.

Entonces,

  1. Consulta para las claves de servicio a través de la API de búsqueda de búsqueda (FindService FS) ofrecida por uddiinquiryporttype.
  2. Para el Servicio de Servicio regresó, obtenga los objetos de ServiceInfo que contienen las claves de servicio.
  3. Dadas las claves de servicio que está buscando (el servidor de búsqueda puede ser alcanzado a través de un objeto de nombre), obtenga el detalle del servicio a través de la API de GetServiceEtail (GetServiceEtail SD) que ofrece UDDIInquiryportType, donde el objeto GetServiceTetail se completa con las claves de servicio.
  4. La lista de objetos de correo electrónico devueltos por la consulta anterior lo guiará a las playuntas de enlace que contienen la definición del servicio web (WSDL).

    espero que ayude.

Otros consejos

gracias a 秦玉珠 por la ayuda.El código puede ser el siguiente:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top