<?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/"
	>

<channel>
	<title>Blog de Justo Aguilar &#187; weblogic</title>
	<atom:link href="http://blog.justoaguilar.com/tag/weblogic/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.justoaguilar.com</link>
	<description>Libros, Java y lo que surja.</description>
	<lastBuildDate>Sun, 22 Jan 2012 14:26:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Configurar Axis 2 + Spring 2 + Weblogic 9.2</title>
		<link>http://blog.justoaguilar.com/2008/07/configurar-axis-2-spring-2-weblogic-92/</link>
		<comments>http://blog.justoaguilar.com/2008/07/configurar-axis-2-spring-2-weblogic-92/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 16:54:04 +0000</pubDate>
		<dc:creator>justo</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[axis]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://blog.justoaguilar.com/?p=45</guid>
		<description><![CDATA[Aunque existen en la red muchos posts acerca de este tipo de configuración, no hay ninguno, que yo haya leído, que explique todo el proceso de forma sencilla. Este es el propósito de este post, describir de una manera cercana la configuración de Axis 2 para que use el contexto de Spring todo ello sobre [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<!--INFOLINKS_ON-->
<p><p>Aunque existen en la red muchos <em>posts</em> acerca de este tipo de configuración, no hay ninguno, que yo haya leído, que explique todo el proceso de forma sencilla. Este es el propósito de este post, describir de una manera cercana la configuración de <em>Axis 2</em> para que use el contexto de <em>Spring</em> todo ello sobre el servidor <em>Weblogic 9.2</em>.</p>
<p>Antes de empezar a describir todos los detalles de la configuración vamos a intentar explicar el porqué de ésta, particularmente la interacción entre <em>Axis</em> y <em>Spring</em>.</p>
<p><strong>Sin <em>Spring</em></strong></p>
<p>Supongamos que en nuestra aplicación no usamos <em>Spring</em>, el fichero <em>service.xml </em>de un servicio de <em>Axis</em> sería como sigue:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;service name=&quot;ServicioWebSinSpring&quot;&gt;
  &lt;parameter name=&quot;ServiceClass&quot;&gt;
    com.jmaguilar.springaxisweblogic.ws.services.ServicioWebSinSpring
  &lt;/parameter&gt;
  &lt;operation name=&quot;saluda&quot;&gt;
    &lt;messageReceiver class=&quot;org.apache.axis2.receivers.RawXMLINOutMessageReceiver&quot;/&gt;
  &lt;/operation&gt;
&lt;/service&gt;
</pre>
<p>En el código anterior se indica que el servicio web tiene el nombre de <em>ServicioWebSinSpring</em>, está asociado a la clase <code>com.jmaguilar.springaxisweblogic.ws.services.ServicioWebSinSpring</code> y tiene publicado el método <em>saluda</em>. Simple.</p>
<p><strong>Con <em>Spring</em></strong></p>
<p>Ahora la cosa cambia, <em>Axis</em> no debería poder instanciar la clase del servicio que va a usar, sino que debe solicitarla a <em>Spring</em> para que le proporcione la instancia ya creada y configurada previamente, de forma declarativa, a través del <em>applicationContext-manager.xml</em>.</p>
<p>En primer lugar vamos a ver el fichero de configuración de <em>Spring</em>.</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
            xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
            xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&quot;&gt;

  &lt;bean id=&quot;applicationContext&quot; class=&quot;org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder&quot; /&gt;
  &lt;bean id=&quot;servicioWebConSpring&quot; class=&quot; com.jmaguilar.springaxisweblogic.ws.services.ServicioWebConSpring&quot; /&gt;
&lt;/beans&gt;
</pre>
<p>El fichero define dos <em>beans</em>, <em>applicationContext</em> y <em>servicioWebConSpring</em>. El primero de ellos será utilizado por el motor de <em>Axis</em> para recuperar el <em>applicationContext </em>y, a partir de él, extraer cualquier <em>bean </em>ahí definido. Si hemos leido con atención el código nos habrá llamado la atención la clase asociada a este <em>bean</em>, <code>ApplicationContextHolder </code>se  encuentra en el <em>jar axis2-spring-x.y</em>, que viene en el fuente de <em>Axis</em>. El segundo <em>bean</em>, <em>servicioWebConSpring</em>, es nuestro servicio.</p>
<p>Para indicar al motor de <em>Axis</em> que debe recuperar el <em>bean servicioWebConSpring</em> se debe incluir el siguiente código en el fichero <em>service.xml</em> del nuestro servicio web.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;service name=&quot;ServicioWebConSpring&quot;&gt;
  &lt;parameter name=&quot;ServiceObjectSupplier&quot; locked=&quot;false&quot;&gt;org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier&lt;/parameter&gt;
  &lt;parameter name=&quot;SpringBeanName&quot; locked=&quot;false&quot;&gt;servicioWebConSpring&lt;/parameter&gt;
  &lt;operation name=&quot;saluda&quot;&gt;
    &lt;messageReceiver class=&quot;org.apache.axis2.receivers.RawXMLINOutMessageReceiver&quot;/&gt;
  &lt;/operation&gt;
&lt;/service&gt;
</pre>
<p>En este caso, dentro del fichero <em>service.xml</em> se indica mediante el parámetro <em>ServiceObjectSupplier</em> la clase que proporcionará los objetos de servicio, <code>SpringAppContextAwareObjectSupplier</code> que también está dentro del <em>jar</em> <em>axis2-spring-x.y</em>. A través del parámetro <em>SpringBeanName</em> se especifica el <em>bean</em> que actuará como servicio, <em>ojo se debe especifica el nombre del bean, no su clase</em>. Y, por último, se indican las operaciones disponibles.</p>
<p><strong>Weblogic 9.2</strong></p>
<p>Sólo faltan por ultimar los detalles para que el despliegue en <em>Weblogic</em> sea correcto.</p>
<p><em>web.xml</em></p>
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE web-app PUBLIC &quot;-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&quot; &quot;http://java.sun.com/dtd/web-app_2_3.dtd&quot; &gt;
&lt;web-app&gt;
  &lt;context-param&gt;
    &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
    &lt;param-value&gt;&lt;!-- indica los ficheros que contienen los beans a inyectar --&gt;
      classpath*:applicationContext-manager.xml
    &lt;/param-value&gt;
  &lt;/context-param&gt;

  &lt;listener&gt;&lt;!-- permite la inyeccion de los beans definidos ficheros indicados anteriormente --&gt;
    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;
  &lt;/listener&gt;

  &lt;!-- AXIS 2 Configuration --&gt;
  &lt;servlet&gt;
    &lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt;
    &lt;servlet-class&gt;org.apache.axis2.transport.http.AxisServlet&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;AxisServlet&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/services/*&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;

  ...

&lt;/web-app&gt;
</pre>
<p>Debido a que el servidor de <em>BEA</em> tiene una implementación propia del <em>pull-parser StAX</em> es necesario, para el correcto funcionamiento de <em>Axis</em>, tirar de los <em>jars</em> que vienen incluidos en la distribución de <em>Axis</em>. Para ello es necesario indicar a <em>Weblogic</em> que la preferencia en el <em>classpath</em> es para los <em>jars </em>contenidos en el directorio <em>WEB-INF/lib</em>, ésto se hace a través del fichero <em>weblogic.xml</em> que debe situarse bajo <em>WEB-INF</em>.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
&lt;weblogic-web-app xmlns=&quot;http://www.bea.com/ns/weblogic/90&quot;&gt;
  &lt;container-descriptor&gt;
    &lt;prefer-web-inf-classes&gt;true&lt;/prefer-web-inf-classes&gt;
  &lt;/container-descriptor&gt;
&lt;/weblogic-web-app&gt;
</pre>

<!--INFOLINKS_OFF-->
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://blog.justoaguilar.com/2008/07/configurar-axis-2-spring-2-weblogic-92/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

