Web services con Spring y XFire
XFire es un framework Java para desarrollo y consumo de Web services. Trabajando junto al framework Spring permite exportar los beans de Spring como Web services, es decir, permite publicar como Web service toda la lógica de negocio de una aplicación sin apenas esfuerzo.
Una vez que XFire (
xfire-all-1.2.6.jar) y sus dependencias ya están en el classpath se han de seguir los siguientes pasos:- Configurar en el archivo
web.xmlunDispatcherServletde Spring para manejar las peticiones HTTP entrantes:
<servlet> <servlet-name>xfire</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>xfire</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
- Indicar en el archivo
web.xmlla ubicación del archivo de definición de los beans de Spring:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param>
El contenido del archivoapplicationContext.xmlpodría ser el siguiente:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="echoBean" class="example.EchoImpl"/> </beans>
- Configurar en el archivo
xfire-servlet.xmlun beanXFireExporterpara exportar un bean de Spring como Web service:
<bean id="echo" class="org.codehaus.xfire.spring.remoting.XFireExporter"> <property name="serviceFactory"> <ref bean="xfire.serviceFactory"/> </property> <property name="xfire"> <ref bean="xfire"/> </property> <property name="serviceBean"> <ref bean="echoBean"/> </property> <property name="serviceClass"> <value>example.Echo</value> </property> </bean>
Las dos primeras propiedades serán fijas en todos los Web services; la propiedadserviceBeancontendrá la referencia al bean de Spring (definido en el archivoapplicationContext.xml); y en la propiedadserviceClassse indicará el nombre de la interface del servicio. - Incluir en el archivo
xfire-servlet.xmlel siguienteimportde Spring:
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
- Configurar un
HandlerMappingde Spring para dirigir las peticiones que llegan alDispatcherServlethacia los Web services exportados con elXFireExporter:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/EchoService"><ref bean="echo"/></entry> </map> </property> </bean>
De esta forma, accediendo a una URL del tipo
http://server:port/application/EchoService?WSDL se puede obtener el WSDL (Web Services Description Language) correspondiente al Web service exportado.
1 comentarios:
Perfecto, justo lo que andaba buscando, gracias.
3 de diciembre de 2008, 5:39
Publicar un comentario