Para este primer caso vamos a hacer un webservices con JAX-WS pero nada de spring, algo básico. Además aparte del post iré poniendo la dirección GIT donde lo tengo subido para que cualquiera pueda descargarlo y continuar con el mismo.
Si no estas familiarizado con la tecnología te hago aquí un pequeño resumen de que es cada estandar con el que crearemos la aplicación:
- JAX-WS: Es la API de Java para la creación de servicios web que forma parte de JAVA EE.
- jaxws-rt: La implementación para el funcionamiento de JAX-WS
- slf4j-api y log4j: Librerías para realizar logs
Una vez configurado el cliente vamos ha hacer dos cosas. Crear la propia interfaz del servicio web:
@WebService public interface WebServiceSample { @WebMethod Saludo saludar(); @WebMethod String despedir(); }
Y aquí esta su implementación, una cosa sencillita. La importancia del asunto recae en las anotaciones que marcan a la clase y a su implementación como servicio web.
@WebService(endpointInterface = "es.home.ws.example.WebServiceSample") public class WebServiceSampleImpl implements WebServiceSample { @Override public Saludo saluda() { Saludo s = new Saludo(); s.setNombre("John"); s.setSaludo("Doe"); return s; } @Override public String despedir() { return "Goodbye"; } }
En principio con esto nos valdría si desplegásemos en un servidor de aplicaciones web como weblogic o jboss. Pero nosotros vamos a hacerlo en un contenedor de servlets como Tomcat. Y para ello necesitaremos de dos configuraciones más. modificar el web.xml y crear el fichero sun-jaxws.xml
El fichero web.xml configuramos para la ruta por la que queremos que pasen las llamadas a nuestro webservices e indicamos el servlet que captará estas llamadas.
com.sun.xml.ws.transport.http.servlet.WSServletContextListener webservice-sample com.sun.xml.ws.transport.http.servlet.WSServlet 1 webservice-sample /webservice-sample
En el fichero sun-jaxws.xml indicamos la configuración para que el servicio funcione correctamente. Esta configuración será leída por el servlet indicado en el web.xml y en ella le indicamos la url por la cual va a ser llamado el servicio (configurado en el web.xml) y que implementación realizará las llamadas
Una vez configurado si arrancamos el tomcat y accedemos a la URL: http://localhost:8080/ExampleWS/webservice-sample veremos la configuración del servicio web y tendremos acceso a su WSDL.
En este enlace (ExampleWS) podreis encontrar el código fuente subido a Github.
Anotación: He tenido problema con maven al resolver las dependencias de jax-rt en su versión 2.2.10. La he cambiado por al 2.2.3 y ha funcionado correctamente.
Buenas noches, una consulta, si yo estoy desplegando en weblogic no debo configurar el web.xml ni el sun.java? y que ruta debo colocar para ver mi web service?. Gracias
ResponderEliminarHola buenas.
ResponderEliminarComo bien dices, en caso de desplegarlo en un servidor de aplicaciones (weblogic, jboss, etc) no te harán falta las configuraciones del sun-jaxws.xml ni del web.xml. Puesto que los servidores serán capaces de configurar el servicio en base a las anotaciones (las librerías de maven además tendrían un scope 'provided' ya vendrían en el servidor).
Por otro lado, la ruta se compondría de la siguiente forma:
http://servidor:puerto/nombreAplicacion/nombreDeLaClase+Service?wsdl
Si quieres cambiar el nombre del servicio, utiliza el atributo 'serviceName' dentro de la anotación @WebService. Importante, esta configuración hazla en la clase de implementación y no en la interfaz.