Já vimos que portlets são na verdade aplicações web que podem ser reutilizadas, vamos ver nesse post como criar essas aplicações web. Para quem usa o Eclipse para criação e publicação de aplicações no JBoss está em casa. Vamos precisar:
- Eclipse JEE
- GateIn 3 Beta5 para JBoss
Primeiramente vamos criar uma Dynamic Web Project comun no Eclipse e crie um novo Target Runtime.

Selecione JBoss 5.0 e peça para criar um server, aponte esse servidor para o local de instalação do GateIn:

Agora que temos nosso projeto criado, vamos precisar adicionar as bibliotecas do GateIn localizadas em <JBOSS_HOME>/server/default/deploy/gatein.ear/lib ao Build Path:

Portlets são muito similares a servlets: assim como estendemos a classe HttpServert para criar servlets, estendemos a classe GenericPortlet para gerar portlets. Crie a seguinte classe:
public class VaiPlanetaPortlet extends GenericPortlet {
@Override
protected void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
response.getWriter().print("Vai Planeta!!");
}
}
Note os parâmetros request e response e o print(), não lembra servlets? Agora só falta declarar esse nosso portlet! De novo fazendo uma analogia a servlets: do mesmo modo que servlets são declarados no web.xml, portlets são declarados no portlet.xml. Crie então um arquivo portlets.xml no WEB-INF com o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
<portlet>
<portlet-name>VaiPlanetaPortlet</portlet-name>
<portlet-class>net.rafaelliu.VaiPlanetaPortlet</portlet-class>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>Portlet Vai Planeta</title>
</portlet-info>
</portlet>
</portlet-app>
Pronto, já temos nosso portlet. Faça deploy dele como faria com uma aplicação web comun e importe o portlet no GateIn.