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.
Funciona a la perfeccion gracias te dejo los puntos +1
LikeLike