Plugin Maven para Weblogic

De Dos Ideas.
Saltar a: navegación, buscar

El plugin de Weblogic no solo nos permite poder administrar el servidor sin tener que acceder a la consola de administración, sino que también nos permite automatizar el despliegue de componentes para las pruebas unitarias.

Instalación del plugin

La instalación de este plugin está llena de pequeños detalles, los cuales se pasan a enumerar.

  • En caso que no se encuentre en ningún repositorio de artefactos, deberemos instalarlo a mano. Para ello deberemos conectarnos al repositorio de Codehaus, descargarlo manualmente y de la misma forma, subirlo al repositorio empresaria.
  • Tiene un bug oscuro con JDK 6.0.0., el cual se puede solucionar modificando el archivo de linea de comando mvn.bat y agregando en la linea en que se invoca a Maven, la siguiente propiedad:
 -Dsun.lang.ClassLoader.allowArraySyntax=true 
  • En caso que se surja el error de que no puede parsear el parametro " and ", se debe a que el repositorio local de Maven se encuentra en la carpeta C:\Documents and Settings\<usuario. Este error se soluciona migrando el repositorio local a una carpeta sin espacios. Para ello se puede definir la propiedad M2_REPO entre las propiedades del sistema
  • El plugin solo puede ser utilizado en artefactos desplegables. Esto quiere decir que no se puede utilizar en artefactos del tipo POM. En caso que se intente hacer esto, se desplegará el siguiente error: java.lang.IllegalArgumentException: Unsupported project packaging pom

Configuración de ejemplo

        <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>weblogic-maven-plugin</artifactId>
           <version>2.9.3-SNAPSHOT</version>
           <executions>
              <execution>
                 <id>start-weblogic</id>
                 <phase>pre-integration-test</phase>
                 <goals>
                    <goal>deploy</goal>
                 </goals>
                 <configuration>
                    <artifactPath>{path al artefacto a desplegar}</artifactPath>
                    <projectPackaging>ear</projectPackaging>
                    <name>{nombre artefacto}</name>
                 </configuration>
              </execution>
              <execution>
                 <id>stop-weblogic</id>
                 <phase>post-integration-test</phase>
                 <goals>
                    <goal>undeploy</goal>
                 </goals>
                 <configuration>
                    <artifactPath>{path al artefacto a desplegar}</artifactPath>
                    <projectPackaging>ear</projectPackaging>
                    <name>{nombre artefacto}</name>
                 </configuration>
              </execution>
           </executions>
           <configuration>
              <adminServerHostName>localhost</adminServerHostName>
              <adminServerPort>7001</adminServerPort>
              <adminServerProtocol>http</adminServerProtocol>
              <userId>weblogic</userId>
              <password>weblogic</password>
              <upload>false</upload>
              <remote>false</remote>
              <verbose>false</verbose>
              <debug>false</debug>
              <noExit>true</noExit>
              <targetNames>AdminServer</targetNames>
           </configuration>
        </plugin>

La configuración de ejemplo despliega un artefacto pasado como parámetro en la etapa previa a la ejecución de las pruebas de integración (pre-integration-test). En caso que no se le pase por parámetro la configuración del artefacto a desplegar, tomará por default el artefacto donde se encuentra esta configuración. Luego de la ejecución de las pruebas unitarias repliega dicho componente.

El resto de la configuración es bastante clara. No obstante, se aclaran las siguientes propiedades:

  • upload: false, toma la referencia al sistema de archivos, true equivale a hacer un upload por consola.
  • remote: false, ejecuta como si el servidor está corriendo local.
  • noExit: true, permite que siga ejecutando el ciclo de vida de los componentes; false (valor predeterminado) hace que se termine el ciclo de vida abruptamente luego de ejecutar cualquier tarea.
  • targetNames: Nombres de los nodos donde se quiere desplegar el componente.