<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Blog de Antonio Manuel Muñiz &#187; WSO2</title>
	<atom:link href="http://amunizmartin.wordpress.com/tag/wso2/feed/" rel="self" type="application/rss+xml" />
	<link>http://amunizmartin.wordpress.com</link>
	<description>Desarrollo, Ingeniería y Calidad del Software</description>
	<lastBuildDate>Mon, 30 Nov 2009 19:27:18 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='amunizmartin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/3f7b8b4861abbf6680395419293e44a6?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Blog de Antonio Manuel Muñiz &#187; WSO2</title>
		<link>http://amunizmartin.wordpress.com</link>
	</image>
			<item>
		<title>Spring beans como Web Services con WSO2 Framework</title>
		<link>http://amunizmartin.wordpress.com/2008/07/17/spring-beans-como-web-services-con-wso2-framework/</link>
		<comments>http://amunizmartin.wordpress.com/2008/07/17/spring-beans-como-web-services-con-wso2-framework/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 23:14:10 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WSO2]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=27</guid>
		<description><![CDATA[Hace algún tiempo hablaba de WSO2 y su gran iniciativa en el mundo de los servicios web. He estado probando Web Services Framework for Spring y la verdad es que han conseguido que la árdua tarea de integrar un servicio web basado en Apache Axis2 con Spring sea cuestión de minutos.
Para ilustrar el proceso configuraremos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=27&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hace algún tiempo <a href="http://amunizmartin.wordpress.com/2008/03/08/apache-axis2-y-spring-framework/" target="_blank">hablaba de WSO2</a> y su gran iniciativa en el mundo de los servicios web. He estado probando <a href="http://wso2.org/projects/wsf/spring" target="_blank">Web Services Framework for Spring</a> y la verdad es que han conseguido que la árdua tarea de integrar un servicio web basado en Apache Axis2 con Spring sea cuestión de minutos.</p>
<p>Para ilustrar el proceso configuraremos una aplicación web basada en Spring para que exponga uno de sus beans como un servicio web.</p>
<p>La estructura de nuestra aplicación será la siguiente:</p>
<pre>+META-INF
+WEB-INF
   + lib
   - applicationContext.xml
   - dispatcher-servlet.xml
   - axis2Config.xml
   - web.xml
+axis2-web
-index.jsp</pre>
<p>En <em>WEB-INF/lib</em> debemos copiar el directorio <em>/lib</em> distribuido con el framework. Sería posible evitar esto si nuestro proyecto esta modelado con maven, aprovechando que WSF-Spring también es un proyecto Maven 2, para esto habría que estudiar más a fondo la estructura de WSF-Spring e integrarlo como un módulo de nuestro proyecto.</p>
<p>También debemos copiar el fichero <em>axis2Config.xml</em> a nuestro <em>WEB-INF</em>, y por último copiar el directorio <em>axis2-web</em> (incluido en la distribución) a la raíz de nuestro proyecto.</p>
<p>El bean que expondremos como un servicio será el siguiente:</p>
<pre>package sample.spring.axis;
public class Sample {

    private int offset;

    public int add(int i, int j){
        return offset + i + j;
    }

    public void setOffset(int value){
        this.offset = value;
    }
}</pre>
<p>Se ha incluido el atributo <em>offset</em> para comprobar como se comporta el servicio manteniendo un estado interno representado mediante esta variable.</p>
<p>El siguiente paso es la inicialización del bean en el contexto de la aplicación (applicationContext.xml):</p>
<pre>&lt;bean id="addBean" class="sample.spring.axis.Sample"&gt;
    &lt;property name="offset" value="0" /&gt;
&lt;/bean&gt;</pre>
<p>En principio el valor de <em>offset</em> será 0 y la configuración necesaria para mostrar el bean como un servicio será:</p>
<pre>&lt;bean id="services" class="org.wso2.spring.ws.WebServices"&gt;
    &lt;property name="services"&gt;
        &lt;list&gt;
            &lt;bean id="helloService" class="org.wso2.spring.ws.SpringWebService"&gt;
                &lt;property name="serviceBean" ref="addBean" /&gt;
                &lt;property name="serviceName" value="addBeanService" /&gt;
            &lt;/bean&gt;
        &lt;/list&gt;
    &lt;/property&gt;
&lt;/bean&gt;</pre>
<p>Importar el fichero axis2Config.xml en el applicationContext.xml:</p>
<pre>&lt;import resource="axis2Config.xml"/&gt;</pre>
<p>En el fichero web.xml de nuestra aplicación incluiremos:</p>
<pre>&lt;servlet&gt;
    &lt;servlet-name&gt;axis2&lt;/servlet-name&gt;
    &lt;servlet-class&gt;org.wso2.spring.ws.servlet.SpringAxis2Servlet&lt;/servlet-class&gt;
    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;axis2&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/axis2/*&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;axis2&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/services/*&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;</pre>
<p>Y nada más. Esta es toda la configuración necesaria, si empaquetamos la aplicación web en un WAR y la desplegamos en un servidor de aplicaciones podemos comprobar que el servicio se esta exponiendo correctamente accediendo a http://&lt;dirección_ip&gt;:&lt;puerto&gt;/&lt;contexto&gt;/services/addBeanService?wsdl</p>
<p>Yo lo he desplegado en un servidor Glassfish (donde también tengo una instancia de Hudson ;) dicho sea de paso):</p>
<p><a href="http://amunizmartin.files.wordpress.com/2008/07/glassfish.png"><img class="aligncenter size-medium wp-image-28" src="http://amunizmartin.files.wordpress.com/2008/07/glassfish.png?w=300&#038;h=181" alt="" width="300" height="181" /></a></p>
<p>El WSDL se muestra en la URL indicada:</p>
<p><a href="http://amunizmartin.files.wordpress.com/2008/07/wsdl.png"><img class="aligncenter size-medium wp-image-29" src="http://amunizmartin.files.wordpress.com/2008/07/wsdl.png?w=300&#038;h=181" alt="" width="300" height="181" /></a></p>
<p>Para probar que el servicio funciona correctamente haremos una petición con SoapUI:</p>
<p><a href="http://amunizmartin.files.wordpress.com/2008/07/soapui.png"><img class="aligncenter size-medium wp-image-30" src="http://amunizmartin.files.wordpress.com/2008/07/soapui.png?w=300&#038;h=181" alt="" width="300" height="181" /></a></p>
<p>Se puede observar que el servicio generado por WSF-Spring muestra como operaciones todos los métodos públicos del bean, en este caso <em>add</em> y <em>setOffset</em>. Mediante una llamada a <em>setOffset</em> modificaremos la propiedad <em>offset</em> del bean (simulación de estado):</p>
<p><a href="http://amunizmartin.files.wordpress.com/2008/07/soapui-setoffset.png"><img class="aligncenter size-medium wp-image-31" src="http://amunizmartin.files.wordpress.com/2008/07/soapui-setoffset.png?w=300&#038;h=181" alt="" width="300" height="181" /></a></p>
<p>Si volvemos a realizar la llamada a la operación add con los parámetros 2, 3 por ejemplo comprobamos que efectivamente es posible modificar el estado del bean expuesto como servicio.</p>
<p><a href="http://amunizmartin.files.wordpress.com/2008/07/soapui-add.png"><img class="aligncenter size-medium wp-image-32" src="http://amunizmartin.files.wordpress.com/2008/07/soapui-add.png?w=300&#038;h=181" alt="" width="300" height="181" /></a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/amunizmartin.wordpress.com/27/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/amunizmartin.wordpress.com/27/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=27&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2008/07/17/spring-beans-como-web-services-con-wso2-framework/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>

		<media:content url="http://amunizmartin.files.wordpress.com/2008/07/glassfish.png?w=300" medium="image" />

		<media:content url="http://amunizmartin.files.wordpress.com/2008/07/wsdl.png?w=300" medium="image" />

		<media:content url="http://amunizmartin.files.wordpress.com/2008/07/soapui.png?w=300" medium="image" />

		<media:content url="http://amunizmartin.files.wordpress.com/2008/07/soapui-setoffset.png?w=300" medium="image" />

		<media:content url="http://amunizmartin.files.wordpress.com/2008/07/soapui-add.png?w=300" medium="image" />
	</item>
	</channel>
</rss>