domingo, 28 de septiembre de 2008

Web services con Spring y XFire

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.xml un DispatcherServlet de 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.xml la 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 archivo applicationContext.xml podrí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.xml un bean XFireExporter para 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 propiedad serviceBean contendrá la referencia al bean de Spring (definido en el archivo applicationContext.xml); y en la propiedad serviceClass se indicará el nombre de la interface del servicio.
  • Incluir en el archivo xfire-servlet.xml el siguiente import de Spring:
    <import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
  • Configurar un HandlerMapping de Spring para dirigir las peticiones que llegan al DispatcherServlet hacia los Web services exportados con el XFireExporter:
    <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:

nelson Perez dijo...

Perfecto, justo lo que andaba buscando, gracias.

Publicar un comentario

 

RSS RSS