Daniel Prado Rodríguez Visita: CocinaTusRecetas o de Guía turística de Nueva York 
  Sábado, 27 de Julio de 2024 Inicio | Contactar
Añadir a favoritos | Imprimir 
  Volver al resto de artículos JAVA


Programación JAVA - Struts-Bridge – Migración de una aplicación Struts a un Portlet JSR-168, en el contendor de portlets Jetspeed 2

» Programacion » Java » Struts-Bridge – Migración de una aplicación Struts a un Portlet JSR-168, en el contendor de portlets Jetspeed 2
Miércoles, 19 de Abril de 2006. Escrito por Daniel P.


Objetivos:

El objetivo principal es la de servir como guía, en la que se explica paso a paso, todas las tareas que se debe de realizar para poder realizar con éxito una migración de una aplicación Struts a un Portlet JSR 168 que se pueda desplegar con éxito en un contendor de Portlets como es JetSpeed.

Prerrequisitos:

1. Tener instalado Jetspeed 2.
2. Aplicación Struts con la versión 1.2.4 o 1.2.7.
3. Nociones básicas sobre Portlets JSR-168.
4. Aplicación desarrollada siguiendo los buenas prácticas de programación para Struts, los enlaces generados con la etiqueta html:link

Procedimiento – Pasos para la Migración:

Actualizar la versión de Struts

En este paso se deberá de migrar la aplicación Struts a una de las dos versiones de Struts soportadas por Struts-Bridge.

Se ha probado con otras versiones de Struts (1.1) y parece funcionar sin problemas sin realizar esta migración, no obstante este punto debería de estudiarse a fondo hasta poder concluir si tiene alguna implicación posterior la no realización de esta migración a una de las dos versiones requeridas por Struts-Bridge.

Para la elaboración de esta guía se ha migrado a la versión 1.2.7.

• Copia de los archivos contenidos en la versión 1.2.7:
     o Nos bajamos la versión 1.2.7 de Struts.
     o Descomprimimos el archivo
     o Copiamos todos los archivos .jar al directorio: webapp\WEB-INF\lib
     o Copiamos todos los archivos .tld al directorio: webapp\WEB-INF\tld
     o Copiamos todos los archivos .dtd al directorio: webapp\WEB-INF\dtd

Nota: Los directorios destinos podrán variar dependiendo de la estructura que se ha seguido en la realización de la aplicación.

• Comprobamos una vez actualizada a la nueva versión de Struts si nuestra aplicación continúa funcionando sin problemas para lo cual deberemos de arrancar nuestro servidor de aplicación y ejecutarla.

Migrar a un Portlet JSR 168 desplegado en Jetspeed

Introducción

Una vez migrada, o no, la aplicación a la versión correspondiente de Struts, nos dispondremos a realizar las tareas necesarias para migrar la aplicación Struts a un Portlet para su despliegue posterior en Jetspeed.

Pasos

• Instalación y configuración de la librería portals-bridges-struts-1.2.7-1.0.jar.
     o Copia de la librería portals-bridges-struts-1.2.7-1.0.jar dentro de WEB-INF/lib.
     o Configuración de las tareas ANT para el empaquetizado de esta librería en el war (Si es que las utilizamos).

• Probar que la aplicación siga funcionando como aplicación Struts.

• Sustituir la taglib struts-html por la http://portals.apache.org/bridges/struts/tags-portlet-html, para lo cual se deberá de sustituir la siguiente línea de cada archivo JSP que la utilice:

<%@ taglib uri="struts-html" prefix="html" %>

Por la siguiente:

<%@ taglib uri="http://portals.apache.org/bridges/struts/tags-portlet-html" prefix="html" %>

     o Esta permitirá, que las etiquetas html:link generen los enlaces tanto para la aplicación Struts como para la aplicación Portlet, ya que los enlaces serán totalmente distintos dependiendo de que con que tipo de aplicación se esté trabajando.

• Probar que la aplicación funcione correctamente como aplicación Struts.

• Modificaciones en el archivo de configuración web.xml
     o Buscar el servlet action y sustituir su información por la siguiente

 <servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.portals.bridges.struts.PortletServlet</servlet-class>

</servlet>

• Probar que la aplicación funcione correctamente como aplicación Struts.

• Modificaciones en el archivo de configuración struts-config.xml:
     o Introducir en este archivo justo encima de la etiqueta <message-resources> la siguiente línea:

<controller pagePattern="$M$P" inputForward="false" processorClass="org.apache.portals.bridges.struts.PortletRequestProcessor"/>

• Probar que la aplicación funcione correctamente como aplicación Struts.

• Crear el archivo struts-portlet-config.xml en WEB-INF. Ejemplo:

<?xml version="1.0" encoding="UTF-8"?>
<config>
<render-context>
<attribute name="errors"/>
<attribute name="message"/>
</render-context>
<portlet-url-type>
<action path="/shop/add"/>
<action path="/shop/switch"/>
<action path="/shop/remove"/>
<action path="/shop/signoff"/>
<action path="/shop/viewCategory"/>
<action path="/shop/viewItem"/>
<action path="/shop/viewProduct"/>
<action path="/shop/viewCart"/>
<action path="/shop/newOrder"/>
<render path="/shop/newOrderForm"/>
<action path="/shop/listOrders"/>
<resource path="/images/"/>
</portlet-url-type>
</config>

Se indicará las action que son entradas en el portlet.

• Crear el archivo portlet.xml en WEB-INF. Ejemplo:

<?xml version="1.0" encoding="UTF-8"?>
<portlet-app 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>
<portlet-name>JPetstorePortlet</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>/index.shtml</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>
</portlet-app>

Donde se deberá de cambiar el nombre comprendido en <portlet-name>JPetstorePortlet</portlet-name> por el nombre que tendrá el Portlet.

Desplegar el Portlet en Jetspeed

Para desplegar el Portlet en Jetspeed es necesario crear un archivo psml e introducirlo en \Apache Jetspeed 2.0\webapps\jetspeed\WEB-INF\pages veamos un ejemplo de un archivo de este tipo:

<!--
Copyright 2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<page id="jpetstore">
<defaults
skin="orange"
layout-decorator="tigris"
portlet-decorator="pretty-single-portlet"
/>
<title>JPetstore</title>
<metadata name="title" xml:lang="ja">ペットストア</metadata>
<metadata name="short-title" xml:lang="es">JPetstore</metadata>
<metadata name="title" xml:lang="es">Demo: tienda de animales</metadata>
<metadata name="title" xml:lang="hu">Kisállatkereskedés (JPetstore)</metadata>
<metadata name="title" xml:lang="zh">å® ç‰©åº—</metadata>
<fragment id="jp-1" type="layout" name="jetspeed-layouts::VelocityOneColumn">
<fragment id="jp-2" type="portlet" name="jpetstore::JPetstorePortlet"/>
</fragment>
<security-constraints>
<security-constraints-ref>public-view</security-constraints-ref>
</security-constraints>
</page>

Después se deberá de copiar la aplicación empaquetada como war al siguiente directorio de Jetspeed:
<apache root>\Apache Jetspeed 2.0\webapps\jetspeed\WEB-INF\deploy\, una vez iniciado el servidor de aplicaciones de Jetspeed, la aplicación será desplegada.

Podremos acceder al portal en la siguiente dirección http://localhost:8080/jetspeed/portal/, entonces deberemos de ver la nueva pestaña que contendrá el Portlet, pudiera suceder que la aplicación todavía no ha sido registrada para lo cual se deberá acceder directamente a ella, simplemente se tendrá que ir a la siguiente dirección para poder comprobar si se tiene desplegada y funcionando la aplicación Portlet: http://localhost:8080/jetspeed/portal/nombrePortlet.psml, donde nombrePortlet.psml es el nombre del archivo psml que se ha creado.

Otras consideraciones

Se ha detectado un pequeño problema con las tiles. Al pasar una aplicación Struts a Portlet la aplicación se vuelve sensible a mayúsculas, por tanto deberemos de revisar el archivo tiles-defs.xml en busca de posibles incongruencias.

Resumen

En este apartado se ha mostrado las tareas necesarias para poder realizar una migración con éxito entre una aplicación Struts y un Portlet JSR-168 en el contenedor de Portlets Jetspeed.

En está pagína web podrá encontrar un pequeño resumen donde se explican las características de cada uno de los archivos de configuración que hemos visto hasta el momento y que servirán para realizar la configuración de estos correctamente:
Archivo de configuración de un portlet portlet.xml
Archivo de configuración de Struts-Bridge struts-portlet-config.xml
Archivo de despliegue de un porlet en Jetspeed 2 asistenciaTecnica2.psml


comentarios (0)
  Anterior artículo JAVA Siguiente artículo JAVA 

COMENTARIOS EN FACEBOOK SOBRE: Artículo JAVA (J2EE) - Struts-Bridge – Migración de una aplicación Struts a un Portlet JSR-168, en el contendor de portlets Jetspeed 2
 
Mapa web |  Página principal  | Blog de Recetas | Recetas de Pescado | Tasaciones Inmobiliarias Asturias | Política de privacidad | Política de cookies
www.daniel.prado.name - Página Personal - © Copyright