openxava / documentación / Stringbeans Portal

Aquí tenemos algunos pantallazos de una aplicación OpenXava en el
Stringbeans es un sistema portal compatible con el estandar JSR-168 que permite añadir portlets que se encuentran en otros contextos del servidor de aplicaciones. Para ello es requisito imprescindible que tanto el propio contexto de Stringbeans, como el que contiene los portlets, sean accesibles declarándolos en ./conf/server.xml como crossContext="true" . Por ejemplo:
server.xml
<Host appBase="webapps" autoDeploy="true" name="localhost"
    unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
 
    <Context path="/stringbeans"
        docBase="stringbeans" crossContext="true" />
 
    <Context path="/misportlets"
        docBase="misportlets" crossContext="true" />
Vamos a aprovechar que estamos editando el fichero server.xml para incluir emptySessionPath="true" en la sección del conector. Ejemplo:
<Connector
    acceptCount="100" connectionTimeout="20000"
    disableUploadTimeout="true" enableLookups="false" maxSpareThreads="75"
    maxThreads="150" minSpareThreads="25" port="8080" redirectPort="8443"
    emptySessionPath="true"/>
Esto es necesario para que la sesión sea compartida entre los contextos de Stringbeans y de nuestros portlets. Concretamente es requisito imprescindible para la integración con portlets desarrollados con OpenXava y que funcionen correctamente los servlets de generación de reports PDF y CSV, ya que de otra forma no serían capaces de obtener los valores del tab y se produciría una excepción.

Se deben mover los siguientes .jar de ./stringbeans/WEB-INF/lib a un repositorio común de librerías compartidas del servidor J2EE, en el caso de Tomcat a ./common/lib
Se deben añadir las siguiente librerías (de Stringbeans) al contexto de nuestra aplicación:
Igualmente se debe añadir el fichero portlet.tld a un lugar que posteriormente referenciaremos en web.xml, por ejemplo en ./WEB-INF

En el fichero web.xml del contexto de nuestra aplicación, se deben añadir las siguientes entradas:

<servlet>
 <servlet-name>PortletServlet</servlet-name>
 <servlet-class>com.nabhinc.portal.core.PortletServlet</servlet-class>
 <load-on-startup>1</load-on-startup>
</servlet>
:
:
<servlet-mapping>
 <servlet-name>PortletServlet</servlet-name>
 <url-pattern>/portlet_servlet</url-pattern>
</servlet-mapping>
 
<taglib>
 <taglib-uri>http://java.sun.com/portlet</taglib-uri>
 <taglib-location>/WEB-INF/portlet.tld</taglib-location>
</taglib>
Es importante indicar que éste servlet se cargue en el arranque (1)
ya que si no se carga antes que Stringbeans se producirá un error.

Finalmante en Stringbeans, entramos como administrador a la sección de configuración del portal y de ahí a Portlet App Context. Como "Context Path" ponemos nuestro contexto (ej: /misportlets) y como "Servlet URI" indicamos "/portlet_servlet"
Si hemos seguido correctamente todos los pasos, Stringbeans indicará que el contexto ha sido añadido correctamente y habrá añadido nuestra lista de portlets a su fichero interno de portlets, de tal manera que desde "Portlet Admin" los veremos listados y se podrá hacer uso de ellos.

*Nota: Si queremos clasificar los nuestros portlets, manualmente debemos editar el fichero portlet.xml y en cada portlet añadir:
<portlet-info>
            <title>Titulo del portlet</title>
            <keywords>Categoria</keywords>
</portlet-info>
De esta forma, posteriormente en la selección de portlets que queremos agregar a un layout, se mostrarán ordenados por categorías.
Referencias