Desplegando Oracle ADF Essentials en Oracle Weblogic 12c

Oracle ADF Essentials es la oferta reciente de Oracle que comprede los componentes básicos para construir una aplicación ADF utilizando los componentes ADF Faces, taskflows, adf bindings, adf business components y/o EJBs; todo de forma gratuita y con la opción de llevar sus aplicativos a cualquier servidor de aplicaciones. Para más información acerca de ADF Essentials pueden leer esta entrada pasada del blog. En la actualidad ninguna de las versiones de ADF se encuentra oficialmente certificada en Oracle Weblogic Server 12c, sin embargo con algunas modificaciones sencillas, podemos desplegar una aplicación ADF Essentials en este servidor de aplicaciones.
Advertencia: Oracle al día de hoy no ofrece soporte sobre la configuración que se expone en este artículo. En caso de presentarse problemas, déje su comentario en el blog o crée una entrada en los foros de OTN.

Instalar ADF Essentials en Oracle Weblogic 12c y realizar algunos cambios

Realize los siguientes pasos para instalar ADF Essentials en Weblogic 12c y alistarlo para que se puedan desplegar aplicaciones en el mismo:
  1. Instalar Weblogic 12c, crée un dominio exclusivo para las aplicaciones ADF Essentials, p.ej. adfessentials_domain. Tenga en cuenta que este dominio no debe contener el runtime JRF que normalmete se instala ya que en este caso ADF Essentials se trata como un framework de terceros.
  2. Descargue y extraiga las librerias de ADF Essentials dentro de la carpeta <adfessentials_domain>/lib a través del comando unzip -j adf_essentials.zip
  3. En mi portátil antes de iniciar el servidor, configuro el entorno con las siguientes valores:
  4.  export USER_MEM_ARGS="-Xms1024M -Xmx2048m -XX:MaxPermSize=640m"
  5. Arranque el servidor utilizando la siguiente instrucción <adfessentials_domain>/bin/startWebLogic.sh -Doracle.mds.cache=simple
  6. Cree un data source directamente en el servidor utilizando la Weblogic Console. e.g jdbc/summit_adfDS

Cambios a nivel de aplicación para desplegar

Toda aplicación que utilice ADF Essentials contiene una serie de liberías adicionales que se empaquetan con el archivo EAR para que la aplicación pueda ser desplegada en el servidor de aplicaciones. Para esta entrada utilicé la aplicación llamada ADF Summit la cuál se puede descargar desde aquí. Una vez tenga la aplicación, realice los siguientes cambios:
  1. Ajuste la configuración local de los Application Module para que utilice el data source que se definió previamente.
  2. Asegúrese que la plataforma de despliegue seleccionada tanto a nivel de aplicación, como a nivel del ViewController sea Glassfish3.1. Esta es la forma en que las librerías extra se adicionan al archivo EAR.

  3. Ponga en comentario el contenido del archivo weblogic-application.xml ubicado en application resources->META-INF ya que estas configuraciones presentan conflictos con WLS12c.
  4.  
  5. Esta aplicación utiliza el template llamado oracleThreeColumnTemplate, desafortunadamente la forma en que se este resolviendo el path de este template esta errado, esto es algo que se este investigando. Por lo tengo, remueva su uso de la página index.jspx.
  6. Despliegue la aplicación como archivo EAR.
  7. Antes de llevar el archivo al servidor, se tiene que poner en comentario el uso de un listener de Glassfish que se adiciona cuando el archivo se empaqueta en el EAR, para esto extraiga el web.xml y realize el siguiente cambio. Luego, vuelvalo a incluir dentro del EAR:

     <filter-mapping>
        <filter-name>ADFLibraryFilter</filter-name>
        <url-pattern>/*</url-pattern>  
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher>
      </filter-mapping>
        <!--listener>
            <listener-class>oracle.adf.share.glassfish.listener.ADFGlassFishAppLifeCycleListener</listener-class>
        </listener-->
      <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
  8. Aquí les dejo el video que creé en ingles explicando todo el proceso.