El servicio web IntelliJ y el cliente Java IllegalArgumentException TestWebService no es una interfaz

En IntelliJ 10.0.3

Utilizo la opción de menú "nuevo servicio web" y esto genera un archivo de clase y se agrega a sun-jaxws.xml - esto está bien - está funcionando.

Ahora, si trato de escribir un cliente Java para este servicio web, obtengo IllegalArgumentException TestWebService no es una interfaz

Aquí está mi código de cliente:

public class WebServiceTest {

    public static void main(String[] args) throws Exception {
        URL url = new URL("http://localhost/services/TestWebService?wsdl");
        //1st argument service URI, refer to wsdl document above
        //2nd argument is service name, refer to wsdl document above
        QName qname = new QName("http://ws.mydomain.com/", "TestWebServiceService");

        Service service = Service.create(url, qname);

        TestWebService test = service.getPort(TestWebService.class); // fails here

        System.out.println(test.sayHelloWorldFrom("TESTING...."));
    }
}

¿Cómo debo implementar esto? ¿Debería tener una interfaz y una clase? ¿Existe un buen ejemplo? ¿Mejores prácticas?

esta es mi definición de punto final en sun-jaxws.xml

<endpoint
        name='TestWebService'
        implementation='com.allscripts.ws.TestWebService'
        url-pattern='/services/TestWebService'/>

preguntado el 16 de mayo de 11 a las 18:05

... ¿y qué sucede cuando realmente crea la interfaz? -

Si escribo una interfaz, entonces necesito hacer una clase TestWebServiceImpl pero luego el nombre del servicio web cambia a TestWebServiceImplService. -

¿Y funciona? Siempre puedes ajustar los nombres. -

No estoy seguro de cómo. Edité la pregunta con la configuración del punto final. ¿Necesito poner las anotaciones tanto en la interfaz como en la clase? -

Cuando cambio el punto final a la implementación = TestWebServiceImpl, el nombre del servicio también cambia. No entiendo qué configuraciones en el XML cambiar. -

1 Respuestas

Me estaba equivocando porque estaba tratando de usar el servicio web dentro de mi aplicación usando la misma ruta de clase. Ejecutar una prueba en un proyecto java diferente funciona bien.

contestado el 17 de mayo de 11 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.