2 min read

Jboss Portal for dummies Part #1: Simple HelloWorldPortlet (de mi blog en www.jugmza.com.ar - 20/11/07)

Conceptos generales:

Donde tenemos 3 modos de visualizacion para los portlets.. (Estos modos puede ser extendidos por cada implementacion):

VIEW, EDIT y HELP.

Tambien tenemos un estado asociado para las Windows: NORMAL, MINIMIZED y MAXIMIZED.

Segun la especificacion solo deberiamos tener un archivo llamado portlet.xml en nuestra carpeta WEB-INF de nuestro .war.

El cual deberia ser similar a:

portlet.xml:

<?xml version="1.0" encoding="UTF-8"?> <portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" 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" version="1.0"> <portlet> <portlet-name>HelloWorldPortlet</portlet-name> <portlet-class>org.jboss.portlet.hello.HelloWorldPortlet</portlet-class> <supports> <mime-type>text/html</mime-type> <portlet-mode>VIEW</portlet-mode> </supports> <portlet-info> <title>HelloWorld Portlet</title> </portlet-info> </portlet> </portlet-app>

Pero para jboss portal podemos agregar un par de descriptores mas con el fin de customizar la visualizacion de nuestros portlets.. ya que si deployamos el portlet siguiendo la especificion. El portal no lo mostrara hasta que no creemos una instancia del mismo desde la seccion de administracion del mismo.

entonces agregamos los siguientes descriptores a nuestro directorio WEB-INF en nuestro .war: portlet-instances.xml

<?xml version="1.0" standalone="yes"?> <!DOCTYPE deployments PUBLIC "-//JBoss Portal//DTD Portlet Instances 2.6//EN" "http://www.jboss.org/portal/dtd/portlet-instances_2_6.dtd"> <deployments> <deployment> <instance> <instance-id>HelloWorldPortletInstance</instance-id> <portlet-ref>HelloWorldPortlet</portlet-ref> </instance> </deployment> </deployments>

*-object.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE deployments PUBLIC "-//JBoss Portal//DTD Portal Object 2.6//EN" "http://www.jboss.org/portal/dtd/portal-object_2_6.dtd"> <deployments> <deployment> <parent-ref>default.default</parent-ref> <if-exists>overwrite</if-exists> <window> <window-name>HelloWorldPortletWindow</window-name> <instance-ref>HelloWorldPortletInstance</instance-ref> <region>center</region> <height>1</height> </window> </deployment> </deployments>

La relacion entre estos descriptores es la siguiente:

Ahora lo unico que resta es tener una clase java dentro de nuestro proyecto que extienda de GenericPortlet:

package org.jboss.portlet.hello;

import javax.portlet.GenericPortlet; import javax.portlet.PortletException; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import javax.portlet.UnavailableException; import java.io.IOException; import java.io.PrintWriter;

public class HelloWorldPortlet extends GenericPortlet { protected void doView(RenderRequest rRequest, RenderResponse rResponse) throws PortletException, IOException, UnavailableException { rResponse.setContentType("text/html"); PrintWriter writer = rResponse.getWriter(); writer.write("Hello World!"); writer.close(); } }

Espero que les sirva.. se vienen mas posts sobre portlets!