miércoles, 23 de octubre de 2013

Mejores prácticas: WebCenter Portal (antes Spaces) web.xml

Para modificar el archivo web.xml en Oracle WebCenter Spaces (PS1-PS6) / WebCenter Portal (PS7) la documentación oficial tiene la siguiente información:
  • Documentación oficial 11.1.1.1-11.1.1.7: La documentación para las versiones previas a la actual dicen de desempaquetar la aplicación de webcenter.ear y realizar las modificaciones pertinentes.
  • Documentación oficial 11.1.1.8: Elimina la parte de desempaquetar y cambiar la configuración manualmente en el servidor. Sin embargo, se refiere a ciertos parámetros que podrían querer modificarse.
¿Qué ocurre en caso de modificar manualmente el archivo web.xml?
Los cambios realizados en web.xml se pierder tras cada aplicación de parche o actualización a WebCenter.

¿Cuál es la mejor práctica en caso de querer modificar el archivo web.xml?
El archivo web.xml puede modificarse usando la aplicación de extensión de WebCenter Spaces / Portal.

Para ello hay que tener en cuenta la versión de WebCenter:

Versiones inferiores a WebCenter Portal 11.1.1.8 
En la aplicación DesignWebCenterSpaces, añadir el archivo web.xml como recurso en el despliegue de la extension de WebCenter Spaces.
  • En el proyecto WebCenterSpacesExtensionLibrary. Habilita en la carpeta Resources que se pueda editar web.xml.
    Añadir el archivo web.xml a los recursos para que sea editable desde el proyecto
  • En el proyecto WebCenterSpacesExstensionLibrary, acceder a las los detalles del Deployment Profile llamado custom_webcenter_spaces_war

  •  En File Groups -> Web Files -> Filters activar web.xml
    Activación del archivo web.xml
  • El archivo web.xml se verá en el proyecto y se desplegará con la librería extendida. Ahora podemos añadir / sobreescribir los parámetros de contexto o añadir servlets propios.
    web.xml solo con información extendida
Nota: Cuando se añaden tecnologias o dependencias al proyecto puede que el archivo web.xml se rellene con filtros e información sobrante. Se debe mantener este archivo limpio con sólo aquello nuevo / sobreescrito. En el caso de haber contenido extra en el web.xml puede que los ANT scripts de despliegue fallen a la hora de desplegar el código extendido. 

Versión WebCenter Portal 11.1.1.8
En esta versión de WebCenter Portal (renombrado Spaces a Portal). JDeveloper trae consigo su propia Aplicación y Proyecto para extender WebCenter Portal.

Para seguir desarrollando recursos de Portal como plantillas, estilo de páginas, plantillas de content presenter... La aplicación DesignWebCenterSpaces debe seguir siendo utilizada. Sin embargo, el proyecto WebCenterSpacesExstensionLibrary ya no se usa en esta versión para desplegar código.

En este caso debe crear una nueva aplicación usando la nueva plantilla de JDeveloper: WebCenter Portal Server Extension.

WebCenter Portal Server Extension

Esta plantilla generará dos proyectos (que podemos nombrar en la creación).
  • PortalExtension: Se usa para encapsular los Task Flow y código adicional.
  • PortalSharedLibrary: Actuará como WebCenterSpacesExtensionLibrary con la diferencia de que el manejo del versionado y el despliegue se realiza utilizando el asistente de despliegue de JDeveloper en lugar de los ANT Script que proporcionaba el anterior mecanismo.
Haciendo foco en PortalSharedLibrary se puede comprobar que solamente trae consigo el archivo MANIFEST.MF
MANIFEST.MF de la aplicación PortalSharedLibrary
¿Dónde se encuentran entonces weblogic.xml y web.xml?
Los archivos de configuración deben ser generados manualmente. Por ejemplo para generar el archivo weblogic.xml nada más que crear un nuevo WebLogic Deployment Descriptor.
Nuevo WebLogic Deployment Descriptor
weblogic.xml como nuevo descriptor
En caso de web.xml, usar el mismo procedimiento, pero creando un Java EE Deployment Descriptor.

Nuevo Java EE Deployment Descriptor
web.xml

Automáticamente los archivos web.xml y weblogic.xml formarán parte del despliegue de la librería extendida.

Al igual que ocurría con las versiones anteriores, se debe mantener web.xml con sólo la información añadida o sobrescrita.

Referencias:
 

5 comentarios:

  1. Hola Daniel,

    Quiero modificar un fichero jsff via modificación del MDS. En concreto quiero añadir un taglib al jsff.
    Leí que modificando el web.xml (via ExtendingSpaces) era posible añadir un taglib. ¿Pero como lo defino y referencio des del jsff para utilizarlo?

    Muchas gracias

    Un saludo

    ResponderEliminar
  2. Hola.

    Tienes varias opciones.
    Implementar la taglib en el propio proyecto de PortalExtension o crearte un Proyecto separado el cual luego incluiras como shared-lib usando el PortalExtension project.

    Los steps que haria son:
    - Crea tu taglib en un proyecto separado como JAR o ADF JAR Library separada.
    - Crea una conexion en JDeveloper a tu JAR (usando el Resource Palette view) o Registra la Taglib en JDeveloper para poder usarla desde el catalogo.
    - Anyade y prueba esta taglib en alguna app de ejemplo ADF o Framework Portal.
    - Para Portal Builder. Despliega tu taglib como shared-lib para tenerla dentro del classpath the WebCenter Portal.
    - En el caso de modificar el .jsff. Si se trata de un TF de producto usa el Projecto de Customizacion en el modo Customization Role y haz Drag & Drop de tu taglib en la .jsff que quieras (esto incluira la taglib en cabecera tb). Despliega el .MAR con las customizaciones y chequea que todo es correcto.

    En principio en Portal Builder no necesitas registrar el .tld en el .web.xml. En caso de tener problemas y querer hacerlo genera un descriptor web.xml en el proyecto PortalSharedLibrary. Asegurate que ese web.xml solo tiene lo que quieras adherir a WebCenter Portal (sin basura por medio) y que forma parte del despliegue de la shared-lib de extension.

    No se si me he explicado bien o resuelve tu duda.
    Un saludo.

    ResponderEliminar
    Respuestas
    1. Hola Daniel,

      Muchas gracias por tu respuesta tan rápida. Concreto el problema:

      Estoy modificando un jsff standard de WC Spaces. En concreto, quiero añadir la taglib http://java.sun.com/jsp/jstl/functions en un jsff que no la tiene.
      Tengo el proyecto de customization funcionando (arranco con Role Developer), modifico el .jsff, genero el metadata.mar, lo desplego y funciona ok.

      He intentado añadir la taglib en el jsp:root pero no hay manera.

      Con tus indicaciones, ahora he intentado hacer drag&drop de la library (activo show libraries a nivel de Application) pero no hay manera.

      Que me falta para poder hacer drag & drop de la taglib?

      Muchas gracias

      Eliminar
    2. Hola.

      Estuve probando y revisando también internamente como MDS genera las customizaciones. MDS no entiende del JSP:Root asi que el approach que te di no era valido del todo.

      Nosotros una vez hicimos el cambio manual de la propia libreria de producto para incluir la taglib (cosa no soportada por Oracle, obviamente).

      Ya vi que publicaste la pregunta en OTN, te di otra sugerencia alli. En vez de usar una taglib create tu propio Helper Backing Bean para ello.

      Un saludo.

      Eliminar
    3. Hola,

      Tienes algun ejemplo o referencia?

      Muchas gracias

      Eliminar