Servicios Web con Java SE 6.0 (Parte 2)

Creando un Servicio Web muy simple

Para ilustrar la creación de Servicio Web XML con el JAX-WS 2.0 incluido en Java SE 6.0 emplearemos el clásico ejemplo de Hola Mundo (posteriormente abordaremos otros ejemplos) el cual luce así:

Listado de Hello.java

package hello;
import javax.jws.WebService;

@WebService
public class Hello {
    private String message = new String(”Hola “);
    public String sayHello(String name) {
        String msg = message + name + “.”;
        System.out.println(msg);
        return msg;
    }
}

Nótese que luce como una clase Java normal pero con un par de adiciones: En primer lugar importamos javax.jws.WebService, lo cual es necesario para marcar la clase Hello con la anotación @WebService. Con esto habilitamos la clase para que pueda ser publicada como un Servicio Web de una sola operación, en nuestro caso, la del método sayHello.

El siguiente paso es generar los artefactos de despliegue para dicha clase, para ello utilizamos la herramienta wsgen, incluida en Java SE 6.0, a la cual pasamos como argumento la clase hello.Hello compilada:

>javac hello/Hello.java

>wsgen -cp . hello.Hello

Las clases de los artefactos de implementación se generan dentro de un sub-paquete de nombre "jaxws", en nuestro caso hello.jaxws.

Con todo lo anterior ya tenemos un sencillo Servicio Web casi listo para ser desplegado en algún contenedor Java EE, no obstante podemos probarlo sin un contenedor... Pero eso lo veremos en la siguiente ocasión.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de benek

Webservices

Bastante bueno willy, tengo poco conocimiento en Webservices y esto es un buen comienzo. Muy útil.

Imagen de poloche

Error

Holas esta bueno el tuto, he querido implementarlo y al momento de generar con el wsgen -cp . hello.Hello me sale este error

Problem encountered during annotation processing;
see stacktrace below for more information.
com.sun.tools.internal.ws.processor.modeler.ModelerException: [failed to localize] A web service endpoint could not be found()
        at com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceAP.onError(WebServiceAP.java:215)
        at com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceAP.buildModel(WebServiceAP.java:322)
        at com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceAP.process(WebServiceAP.java:256)
        at com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(AnnotationProcessors.java:60)
        at com.sun.tools.apt.comp.Apt.main(Apt.java:454)
        at com.sun.tools.apt.main.JavaCompiler.compile(JavaCompiler.java:258)
        at com.sun.tools.apt.main.Main.compile(Main.java:1102)
        at com.sun.tools.apt.main.Main.compile(Main.java:964)
        at com.sun.tools.apt.Main.processing(Main.java:95)
        at com.sun.tools.apt.Main.process(Main.java:85)
        at com.sun.tools.apt.Main.process(Main.java:67)
        at com.sun.tools.internal.ws.wscompile.WsgenTool.buildModel(WsgenTool.java:204)
        at com.sun.tools.internal.ws.wscompile.WsgenTool.run(WsgenTool.java:112)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:105)
        at com.sun.tools.internal.ws.WsGen.main(WsGen.java:41)
error: compilation failed, errors should have been reported

he querido hacerlo desde netbeans y no me ha funcionado tampoco sera que me dan una manito please gracias

Imagen de paranoid_android

Falta indicar el end point

Creo que falta indicar el end point donde se desplegara el web service como parámetros de la anotación

@WebService(endpointInterface= "hello.Hello")

Muchas Gracias por el tutorial esta muy interesante

Imagen de macaruchi

En este ejemplo como puedo

En este ejemplo como puedo poder correr este WS ?
Donde se generan los wsdl ?