Seleccionar página

Actualmente la integración de Tomahawk con Jboss Portal da muchos problemas, que por el momento no han sido resueltos por el equipo de Jboss (y no se asegura que sean resueltos).

La integración directa, usando el Extension Filter suministrado por Tomahawk falla, algunos componentes sin embargo terminan funcionando. Esto sale explicado en:

http://myfaces.apache.org/tomahawk/extensionsFilter.html y http://wiki.jboss.org/wiki/Wiki.jsp?page=JSFInPortletEnvironment

Una de las soluciones a este problema es utilizar la librería Tomahawk Bridge que se puede obtener en la dirección del creador: http://palab.blogspot.com/ , así como otro portlets.

En primer lugar debemos configurar la librería como se índica en la página, esto es:

  1. Añadir las librerías: faces-response-filter-0.2.jar, portals-bridges-portletfilter-1.0.jar, tomahawk-bridge-0.9.1.jar, commons-fileupload-1.1.jar y commons-io-1.1.jar a /WEB-INF/lib. (Todas estas librerias pueden ser encontradas en la página nombrada anteriormente o buscandolas por google, la única que necesita una modificación, y en la siguiente versión estara actualizado, es el faces-response-filter-0.2.jar).

  1. Debemos modificar el archivo portlet.xml. A continuación tenemos un ejemplo:

Original:

<portlet>

<portlet-name>NeodooPortlet</portlet-name>

<portlet-class>org.apache.myfaces.portlet.MyFacesGenericPortlet</portlet-class>

<init-param>

<name>default-view</name>

<value>/WEB-INF/jsp/view.jsp</value>

</init-param>

<supports>

<mime-type>text/html</mime-type>

<portlet-mode>VIEW</portlet-mode>

<portlet-mode>EDIT</portlet-mode>

</supports>

<portlet-info>

<title>Neodoo Portlet</title>

</portlet-info>

</portlet>

Lo modificamos para quedar:

<portlet>

<portlet-name>NeodooPortlet</portlet-name>

<portlet-class>org.apache.portals.bridges.portletfilter.FilterPortlet</portlet-class>

<init-param>

<name>portlet-class</name>

<value>org.apache.myfaces.portlet.MyFacesGenericPortlet</value>

</init-param>

<init-param>

<name>portlet-filters</name>

<value>jp.sf.pal.facesresponse.FacesResponseFilter,jp.sf.pal.tomahawk.filter.ExtensionsPortletFilter</value>

</init-param>

<init-param>

<name>default-view</name>

<value>/WEB-INF/jsp/view.jsp</value>

</init-param>

<supports>

<mime-type>text/html</mime-type>

<portlet-mode>VIEW</portlet-mode>

<portlet-mode>EDIT</portlet-mode>

</supports>

<portlet-info>

<title>Neodoo Portlet</title>

</portlet-info>

</portlet>

En el archivo web.xml agregamos la configuración de Tomahawk:

<jsp-config>

<taglib>

<taglib-uri>http://myfaces.apache.org/tomahawk</taglib-uri>

<taglib-location>/WEB-INF/tomahawk.tld</taglib-location>

</taglib>

</jsp-config>

<context-param>

<param-name>javax.faces.STATE_SAVING_METHOD</param-name>

<param-value>server</param-value>

</context-param>

<filter>

<filter-name>extensionsFilter</filter-name>

<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>

<init-param>

<param-name>uploadMaxFileSize</param-name>

<param-value>100m</param-value>

<description>Set the size limit for uploaded files.

Format: 10 – 10 bytes

10k – 10 KB

10m – 10 MB

1g – 1 GB

</description>

</init-param>

<init-param>

<param-name>uploadThresholdSize</param-name>

<param-value>100k</param-value>

<description>Set the threshold size – files

below this limit are stored in memory, files above
this limit are stored on disk.
Format: 10 – 10 bytes
10k – 10 KB
10m – 10 MB
1g – 1 GB

</description>

</init-param>

</filter>

<filter-mapping>

<filter-name>extensionsFilter</filter-name>
<url-pattern>/faces/*</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>extensionsFilter</filter-name>

<url-pattern>*.jsf</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>extensionsFilter</filter-name>

<url-pattern>*.jsp</url-pattern>

</filter-mapping>

<listener>

<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</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>

<servlet-mapping>

<servlet-name>Faces Servlet</servlet-name>

<url-pattern>/faces/*</url-pattern>

</servlet-mapping>

Con esto ya debería funcionar la librería de Tomahawk en nuestro portlet. Sin embargo, se han encontrado algunos problemas en el Response Filter, en la versión 0.2, si deseas modificar la versión original en palab.blogspot.com te explican el fallo, y que estara subsanado en la siguiente versión.

Las librerías que se ofrecen aquí estan modificadas y funcionan correctamente.

Actualmente solo he probado los tags Schedule e InputCalendar que funcionan correctamente, si os animais a probar más librerías ya contareis que tal.

Gracias a Shinsuke por su gran trabajo, visitar su blog para más información.

Descargar Response Filter modificado: Descargar