web-services - services - jax ws java 7
JAVA JAX-WS NullPointerException en javax.xml.ws.Service.getPort(Service.java:188) (1)
He tenido el mismo problema por unos días, porque el archivo WSDL (y el servicio) que estaba usando se movió a una nueva URL. Finalmente encontré la solución aquí:
http://techtracer.com/2007/08/15/jax-ws-jaxp-tutorial-building-a-stockquote-web-service-client/
En resumen, todo (debería tener) comenzó a funcionar después de que volví a generar todos los archivos java y de clase generados automáticamente con el siguiente comando (en Windows / CygWin)
"C:/Program Files/Java/jdk1.8.0_31/bin/wsimport.exe" -keep https://domain.com/path_to_wsdl
Tuve algunos problemas adicionales porque algunos archivos viejos quedaron y chocaron con los recién generados, pero todo comenzó a funcionar lentamente después de que moví todos los archivos viejos a la papelera de reciclaje.
Tengo el sencillo servicio web "HelloWorld" desplegado en jboss bajo ubuntu. Creé un cliente simple, pero no puedo hacer que funcione. Obtengo NullPointerException cada vez que ejecuto el cliente.
Tenga en cuenta que me estoy ejecutando en Oracle Java 7 en Ubuntu.
Aquí está el código: HelloWorldClient.java
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class HelloWorldClient {
public static void main(String[] args){
URL url;
try {
url = new URL("http://localhost:8080/WebServiceProject/helloWorld?wsdl");
QName qname = new QName("http:///", "HelloWorldImplService");
Service service = Service.create(url, qname);
HelloWorld hello = service.getPort(HelloWorld.class);
System.out.println(hello.sayHello("mkyong"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
HelloWorld.java
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
@WebMethod
public String sayHello(String name);
}
Stacktrace:
Exception in thread "main" java.lang.NullPointerException
at com.sun.xml.internal.ws.model.RuntimeModeler.getPortTypeName(RuntimeModeler.java:1407)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:334)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:354)
at javax.xml.ws.Service.getPort(Service.java:188)
at HelloWorldClient.main(HelloWorldClient.java:18)
La excepción se lanza en esta línea:
HelloWorld hello = service.getPort(HelloWorld.class);