2011-03-11 11 views
7

Estoy intentando consumir un servicio web en Java, utilizando un cliente generado a partir del archivo wsdl con wsdl2java.javax.xml.ws.WebServiceException: Port {http://tempuri.org/}WSHttpBinding_IDWService no encontrado

Estoy usando Eclipse versión JDK 1.6.0_20 y Helios, y he generado los archivos .class utilizando wsld2java con las opciones:

"-dc: \ WebServices \ generada -client -verbose -compile -autoNameResolution -p org.dwservice -sn DWService -wsdlLocation /WEB-INF/wsdl/DWService.wsdl c: \ WebServices \ DWService.wsdl"

empaqué los archivos resultantes en un .jar y ha añadido que a mi proyecto que compila bien Pero cuando trato de usar el servicio web, tengo la excepción:

javax.xml.ws.WebServiceException: Port {http://tempuri.org/}WSHttpBinding_IDWService not found. 
at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:311) 
at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:302) 
at javax.xml.ws.Service.getPort(Service.java:92) 
at org.dwservice.DWService.getWSHttpBindingIDWService(DWService.java:63) 

y este es mi código:

import org.dwservice.*; 
... 

private DWService dwService = new DWService(); 
private IDWService iDWService = ***dwService.getWSHttpBindingIDWService()***; 

sería muy apreciado Cualquier idea.

+0

¿Se puede acceder a su puerto de servicio web y WSDL utilizando el navegador? – Pushkar

Respuesta

8

Sé que esta publicación tiene más de un año, pero es un resultado de búsqueda muy clasificado para este error. Estoy agregando esta respuesta para la posteridad.

Su comando wsdl2java sugiere que su WSDL es local y lo está empaquetando en una aplicación web. Sospecho que la aplicación no está encontrando el WSDL empaquetado en tiempo de ejecución. Una opción es cargar como un recurso Java y pasar a su ubicación en el constructor de su servicio:

QName qname = new QName("my.name.space", "myName"); 
URL wsdlLocation = MyServiceClient.class.getResource("/WEB-INF/wsdl/DWService.wsdl"); 

dwService = new DWService(wsdlLocation, qname); 

Si utiliza este enfoque, triple comprobar la ruta a su WSDL. Es fácil que getResource() falle silenciosamente, lo que producirá el mismo error.

+0

Además: no utilice la ruta relativa al crear el cliente con wsdl2java, solo absoluto. Por lo tanto, no "../wsdl/x.wsdl", sino "/usr/share/wsdl/x.wsdl". –