RSS

JavaEE: JAX-WS

08 Jul

De nuevo, vamos allá con otra de las pequeñas demos que estamos realizando estos días. La seguiente de ellas es la correspondiente a JAX-WS, que es el API de Java para los servicios web basados en XML. Al igual que en proyectos anteriores vamos a utilizar Eclipse, Maven y como servidor yo he utilizado GlashFish.

Lo primero, es crear el projecto Maven sin arquetipo, como las veces anteriores, y completar el fichero pom.xml con lo siguiente:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.wordpress.infow</groupId>
    <artifactId>jaxws</artifactId>
    <version>1.0</version>
    <packaging>war</packaging>
    <name>jaxws</name>
    <url>http://www.infow.wordpress.com</url>
  
    <dependencies>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>2.2.7</version>
        </dependency>
    </dependencies>
</project>

El siguiente fichero a definir será el sun-jaxws.xml, el la carpeta webapp/WEB-INF/, en el cual especificaremos el endpoint de la aplicación. En este caso, escribiremos el valor de la implementación de nuestra clase de ejemplo:

sun-jaxws.xml

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
    version="2.0">
    <endpoint name="Message"
        implementation="com.wordpress.infow.jaxws.MessageImpl"
        url-pattern="/message" />
</endpoints>

Tras esto definiremos el fichero web.xml en la misma ruta que el anterior:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, 
    Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
    <listener>
        <listener-class>
            com.sun.xml.ws.transport.http.servlet.WSServletContextListener
        </listener-class>
    </listener>
    <servlet>
        <servlet-name>message</servlet-name>
        <servlet-class>
            com.sun.xml.ws.transport.http.servlet.WSServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>message</servlet-name>
        <url-pattern>/message</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>120</session-timeout>
    </session-config>
</web-app>

Y ya por fin, empezamos a escribir código. Como en los casos anteriores, vamos a definir un servicio que nos devuelva un mensaje, para ello vamos a definir un intefaz, su implementación y a colocar las anotaciones correspondientes:

Message.java (interface)

@WebService
@SOAPBinding(style = Style.RPC)
public interface Message {
    @WebMethod
    String getMessage(String name);
}

En ella podemos ver las siguientes anotaciones:

  • @WebService: Con la que especificamos que esto es un servicio web.
  • @SOAPBinding: Con la que especificamos el tipo.
  • @WebMethod: Con la que especificamos que el método será ofertado como parte del catálogo del servicio web.

Para la implementación del servicio tendremos el siguiente fichero:

MessageImpl.java

@WebService(endpointInterface = "com.wordpress.infow.jaxws.Message")
public class MessageImpl implements Message {
    @WebMethod
    public String getMessage(String name) {
        return "Hello " + ((name != null) && (name.length() > 0) ? name : "anonymous");
    }
}

Las anotaciones son como las ya vistas anteriormente. La única distinción es que aquí, dentro de la anotación @WebService, se ha añadido la ruta de la interfaz.

Con todo esto, ya solo necesitaremos desplegarlo en nuestro servidor y probarlo con algún cliente. Antes de implementar el cliente, lo que si que podemos hacer es acceder al fichero WSDL para ver que todo está correcto.

Como en las veces anteriores, os dejo el código de todo el projecto para que podáis echarle un ojo.

Codigo JAX-WS Hello World: JAX-WS

Hasta aquí, todo por hoy. Nos vemos.

Anuncios
 
1 comentario

Publicado por en 8 julio, 2013 en JavaEE

 

Una respuesta a “JavaEE: JAX-WS

  1. Santiago

    23 abril, 2015 at 12:22 am

    Funciona a la perfeccion gracias te dejo los puntos +1

     

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: