viernes, 9 de marzo de 2012

Weblogic 10.3.4 + Axis2 1.4.1 + Eclipse Indigo + Web services

Hace algunos días me fue encomendada la tarea de hacer funcionar un paquete de Web services, de fabricación propia, en el servidor de aplicaciones Weblogic 10.3.4 (en adelante sólo Weblogic). Como esa versión es antigua, casi obsoleta, me costó dolor y sangre hacerla funcionar. Finalmente lo logré, y aquí dejo plasmada mi amarguísima experiencia:


Restricciones
Lo primero que debo decir es que intenté hacer mejorías en cuanto a las versiones de todo el software que entraba en juego y ninguna funcionó: esto es así porque la instalación de Weblogic contiene su propio jdk-1.6 para ejecutar las aplicaciones y es casi imposible sustituirla por otra que convenga más. Por otra parte, nuestra librería había estado funcionando en Tomcat 5.5 a través del contenedor Axis2, así que no tenía ningún sentido cambiar esa organización.
Versión de JDK
No confundir la versión de JAVA instalada en el sistema operativo (en mi caso la 1.6.0_24), con la que se utiliza para ejecutar las aplicaciones. Internamente Weblogic contiene dos versiones: la jrockit_160_22_D1.1.1-3 y la jdk160_21. Las aplicaciones sólo funcionan con ésta última.
Contenedor de servicios WEB
La única versión de Axis2 que funciona en esa versión de Weblogic es la 1.4.1. Ninguna otra funciona correctamente, así que es innecesario intentarlo.


Y ahora sí describiré todo lo que hay hacer para ofrecer servicios WEB a través de dicho servidor.


1. Instalar Weblogic
- el directorio de instalación es opcional, y en adelante se presume que es BEA_HOME. En mi caso, al tratarse de un Linux Debian 3.2.0-1-686-pae i686, éste era /opt/bea

2. Crear el dominio Axis2
- crear un dominio en el que cargar el contenedor Axis2. Weblogic funciona así: al instalarlo no crea ningún espacio por defecto, y entonces debemos configurar el nuestro. Se crea ejecutando el scritp $BEA_HOME/wlserver_10.3/common/bin/config.sh. Durante la instalación todas las opciones pueden dejarse por defecto. Yo solamente modifiqué el nombre del dominio; la asigné axis. Para el usuario también me fui por lo más fácil, o sea usr=weblogic, pass=12345678.


- levantar el dominio; se hace ejecutando el script $BEA_HOME/user_projects/domains/xxxx/startWebLogic.sh, en donde xxxx es el nombre del dominio recién creado.
- esperar varios minutos hasta ver la confirmación de que el dominio se está ejecutando. La salida en la consola sería:


3. Instalar el contenedor axis2.war
- acceder a la administración del dominio: http:/localhost:7001/console ; se accede con el usuario solicitado durante la creación (weblogic + 12345678)
- pulsar el botón Lock & Edit - pone el dominio en modo edición
- pulsar el link Deployments - nos lleva a otra pantalla
- pulsar el botón Install - aquí es donde se selecciona el archivo axis2.war.
- Después de seleccionar el archivo, iniciará el wizard. Las opciones a seleccionar son:
  • Choose targeting style - Install this deployment as an application -> pulsar next
  • Optional Settings -> pulsar next
  • Review your choices and click Finish -  No, I will review the configuration later -> pulsar finish
  • Pulsar el botón Activate Changes
- levantar el contenedor y comprobar que se ejecuta correctamente (viz imagen)




- en la consola de ejecución del domino comprobar que no hay errores.
- el dominio quedará instalado en $BEA_HOME/user_projects/domains/xxxx/servers/AdminServer/tmp/_WL_user/axis2/e3k1qo/war/ , o algo parecido (en adelante DOMAIN_HOME).

NOTA: algunas veces, en dependencia de la versión del JDK del sistema y de otros factores, Weblogic no puede cargar el contenedor. En ese caso es recomendable leerse el artículo: http://axis.apache.org/axis2/java/core/docs/app_server.html . Básicamente se trata de hacer lo siguiente:
  • copiar el archivo weblogic.xml =>  $DOMAIN_HOME/WEB-INF/
  • copiar el archivo weblogic-application.xml =>  $DOMAIN_HOME/META-INF/
  • editar el archivo  $DOMAIN_HOME/WEB-INF/modules/modules.list de manera que los nombres contenidos dentro cuadren con los nombres de los archivos que están en ese mismo directorio
4. Compilación de los servicios WEB en Eclipse Indigo
Hay muchas maneras de compilar los servicios WEB en el entorno Eclipse. En este caso, lo importante será tener en cuenta lo siguiente:
- se debe configurar el proyecto para compilar con un JRE 1.5 (o en su defecto, compatible).
- en caso de usar el archivo de exportación "services.xml", asegurarse de que Axis2 no utilice el wsdl compilado internamente (para ésto se configura el flag: <parameter name="useOriginalwsdl">false</parameter>)

5. Instalar librería de servicios WEB
Pongamos que para este caso la librería se llama web_services_client.aar. Luego, sólo hay que:
- copiarla al directorio $DOMAIN_HOME/WEB-INF/services/
- modificar el archivo services.list
- en la consola de Weblogic reiniciar la aplicación Axis2
- vigilar en la consola que no hay errores.




Espero sea de gran ayuda.

2 comentarios:

  1. Hola, gracias por compartir la info, dentro de poco vere un proyecto con WebLogic 10.3 espero contar con tu ayuda, mas bien hay un tutorial que conocas que me puedas recomendar ... Pdta: Tengo experiencia con Tomcat

    ResponderEliminar
    Respuestas
    1. Claro,
      todos mis conocimientos estás a tu disposición, hermano.

      Un saludo.
      N.

      Eliminar