14 de Septiembre de 2006 (Daniel P.)Introducción Este artículo muestra los distintos archivos de configuración necesarios para la migración entre una aplicación Struts a una aplicación JSR168. En este caso se ha desplegado sobre JetSpeed 2 y bajo Tomcat.(aunque se ha probado con vignette, también) Para leer este artículo se recomienda la lectura del artículo: Migración de una aplicación Struts a un Portlet JSR-168, en el contendor de portlets Jetspeed 2.
Archivo porlet.xmlSe explicarán las distintas etiquetas y atributos que nos podemos encontrar dentro del archivo de configuración porlet.xml, lo que nos permitirá conocer la funcionalidad de este. Ejemplo del archivo porlet.xml: <?xml version="1.0" encoding="UTF-8"?> <portlet-app id="asistenciaTecnica2" xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"> <portlet id="AsistenciaTecnica2"> <portlet-name>AsistenciaTecnica2</portlet-name> <portlet-class>org.apache.portals.bridges.struts.StrutsPortlet</portlet-class> <init-param> <name>ServletContextProvider</name> <value>org.apache.jetspeed.portlet.ServletContextProviderImpl </value> </init-param> <init-param> <name>ViewPage</name> <value>/Welcome.do</value> </init-param> <init-param> <name>HelpPage</name> <value>/help.shtml</value> </init-param> <!-- <expiration-cache>-1</expiration-cache> --> <supports> <mime-type>text/html</mime-type> <portlet-mode>VIEW</portlet-mode> <portlet-mode>HELP</portlet-mode> </supports> <portlet-info> <title>JPetstore</title> <keywords>Struts</keywords> </portlet-info> </portlet>
Atributo Encoding
El encoding del documento debe ser UTF-8, si se utiliza otro puede presentar problemas como sucede en Vignette.
Atributos de la etiqueta portlet-app
id - Es el identificador de la aplicación que contiene al portlet, por lo tanto se debe de llamar igual que la aplicación (En Jetspeed parece ser necesario, en Vignette no hace falta pero funciona con su presencia).
El resto de atributos parece que sin ellos funciona bien en Jetspeed, pero son necesarios para Vignette, por tanto siempre será mejor incluirlos.
Etiqueta portlet
Se explicará los atributos de esta etiqueta y todas las etiquetas que están contenidas dentro de esta y las funciones que desempeñan.
id - Es el identificador del portlet (se corresponderá con el portlet-name, parece ser necesario para Jetspeed, pero no para Vignette, pero funciona correctamente si está incluido).
Etiqueta portlet-name
El contenido de esta etiqueta será el nombre del portlet.
Etiqueta portlet-class
Hace referencia al paquete y clase del portlet, en este caso es el bridge (es distinto si se trata de un portlet que se desplegará en Jetspeed o Vignette, ya que utilizan puentes distintos).
1º etiqueta init-param
Esta etiqueta y su contenido son necesarios sólo para el caso de tratarse una aplicación Struts migrada a portlet. Esta contiene dos etiquetas :
• name - Siempre tendrá el siguiente valor ServletContextProvider
• value - Es la librería y clase que implementa (Se utilizan distintas clases si se trata de un portlet que se desplegará en Jetspeed o Vignette).
2 ª y 3ª etiquetas inti-param
Son también necesarios solo para el caso de utilizar el bridge Struts-Portlet.
Indica que actions de Struts son los responsables de los distintos tipos de visualización que tiene el portlet (View, Help, Edit, etc.).
Etiqueta supports
Esta etiqueta contiene varias etiquetas:
• mime-type es el tipo de la salida que nos proporciona el portlet, normalmente text/html.
• portlet-mode indicará los modos que utiliza el portlet en este caso VIEW y HELP (puede presentar algún problema si no están escritos en mayúscula).
Etiqueta portlet-info
Esta etiqueta contiene información sobre el portlet.
Title - El título del portlet
keyword - Palabras clave asociadas con el portlet, se separan entre comas “,”.
Archivo struts-portlet-config.xml
La función de este archivo es la de mapear los actions presentes en Struts con los tipos de url de los portlets.
Ejemplo del Archivo struts-portlet-config.xml
<?xml version="1.0" encoding="UTF-8"?> <config> <render-context> <attribute name="errors"/> <attribute name="message"/> </render-context> <portlet-url-type> <action path="/Welcome.do"/> </portlet-url-type> </config>
Se deberá de introducir los actions de struts que serán la entrada de los modos del portlet. En el caso anterior (portlet.xml) tenemos el HELP y VIEW, en este caso en concreto sólo se ha mapeado el action correspondiente con el VIEW, faltaría incluir el del HELP.
asistenciaTecnica2.psml
Este es un archivo exclusivo para los portlet de Jetspeed y es el encargado de ubicar el portlet dentro de Jetspeed y de darle los permisos oportunos. El nombre de este se debe de corresponder con el nombre del portlet, en este caso asistenciaTecnica2.
La ubicación de este será en \Apache Jetspeed 2.0\webapps\jetspeed\WEB-INF\pages
Ejemplo archivo asistenciaTecnica2.psml
<page> <defaults skin="orange" layout-decorator="tigris" portlet-decorator="tigris"/> <title>Asistencia Tecnica version 2</title> <metadata name="title" xml:lang="es">Asistencia Tecnica 2</metadata> <fragment id="asisTec2" type="layout" name="jetspeed-layouts::VelocityOneColumn"> <fragment id="asisTec2-1" type="portlet" name="asistenciaTecnica2::AsistenciaTecnica2"> </fragment> </fragment> <security-constraints> <security-constraints-ref>public-view</security-constraints-ref> </security-constraints> </page>
Etiqueta title
Se corresponde con el título del portlet.
Etiqueta metadata
…
Asistencia Tecnica 2
…
La etiqueta metadata contiene el nombre que aparecerá en el menú y en la barra de navegación.
El atributo xml:lang indica para que idioma se mostrará el título, en este caso para el español.
Etiqueta fragment
… <fragment id="asisTec2" type="layout" name="jetspeed-layouts::VelocityOneColumn"> <fragment id="asisTec2-1" type="portlet" name="asistenciaTecnica2::AsistenciaTecnica2"> </fragment> </fragment> …
asisTec2 y asisTec2-1 son los identificadores de la ventana y columna que contiene al Portlet.
jetspeed-layouts::VelocityOneColumn indica el modo de visualización en este caso es una columna, podría ser VelocityTwoColumns para indicar que se visualizan dos.
En este caso la única columna contiene un Portlet llamado AsistenciaTecnica2 contenido en la aplicación asistenciaTecnica2 (estos deben coincidir con los introducidos en portlet.xml)
public-view ? Indica la seguridad del portlet, en este caso es público y puede ser utilizado por todos los usuarios.
|