Desenvolvimento - Java
Tecnologia de Portais Java e a JSR 168
A tecnologia de portais Java / J2EE surgiu junto ao aparecimento e crescimento dos portais corporativos, entretanto, cada qual com sua implementação e particularidades. A JSR 168 cumpriu seu papel de padronizar a tecnologia e iniciou uma era de interoperabilidade entre portais.
por Eric C M Oliveirahttp://www.developer.com/java/web/article.php/3366111
Nos últimos anos, um grande número de organizações implantou portais para hospedar tanto aplicações internas, quanto externas. E surgiu um mercado lucrativo de portais J2EE. No passado, cada produto definia sua própria API para construção de aplicações para portais e seus próprios componentes. Como previsto, as diferenças de implementação restringiam o mercado, que ficava preso a produtos, e não a tecnologia. A necessidade de uma padronização de portais e de seus componentes levou a Java Specification Requests 168.
A especificação foi desenvolvida pelo JCP e formada por empresas de porte e detentoras de produtos do tipo portal. O objetivo na padronização era acima de tudo, buscar a interoperabilidade entre portais e portlets. A padronização trouxe benefícios, como simplificar o desenvolvimento de portlets além de possibilitar que desenvolvedores possam criar seus componentes que rodem em qualquer servidor de portal J2EE.
A JSR 168, define um conjunto de APIs para Portlets e um contrato entre o Portal Container e ciclo de vida de um portlet. A JSR 168 teve o inicio de seus trabalhos em fevereiro de 2002 e foi aprovada em outubro de 2003. Liderada por SUN e IBM, tinha no expert group, representantes da Apache, BEA, Borland, Oracle, SAP, Vignette, entre outras.
A Portlet API v1.0 é baseada em J2EE, isto é, seus principais componentes (portal server, portlet containers e portlets) se enquadram nos requisitos descritos na Especificação J2EE.
Além da API, a JSR gerou o portal Pluto/Apache como RI (referencia de implementação Open Source).
Componentes da Arquitetura
Os três principais componentes segundo a especificação Java Portlet são o portal, os portlets e o container.
O portal é uma aplicação que agrega várias aplicações do tipo portlet. Alem de ser simplesmente uma camada de apresentação, o portal normalmente permite aos usuários customizarem essa camada de apresentação, incluindo por exemplo quais aplicações a estarem disponíveis.
Portlet é uma aplicação em tecnologia Java baseada em componentes web, gerenciado por um portlet container que processa requests e gera conteúdo dinâmico.
O Portal container se localiza entre o portal em si e os portlets. Ele fornece ambiente de runtime para os portlets, semelhante ao que acontece entre container de servlet e servlets.
Portlets
Semelhante a servlets, os portlets também tem seus métodos de ciclo de vida. O método init (PortletConfig config) é chamado apenas uma vez, imediatamente após uma nova instância do portlet ter sido criada. PortletConfig representa configurações especiais específicas do portlet descriptor, chamado portlet.xml.
Há também o método processAction(ActionRequest request, ActionResponse response), onde o portlet responde com acesso a camada de negócios a ações do usuário, como um clique em um link ou ao submeter um form.
O container também gerencia outros controladores que representam o estado de um portlet, que são o portlet mode e window state. O portlet mode determina que ações podem ser realizadas com um determinado portlet, como View, Edit e Help. A classe GenericPortlet, encontrada no arquivo portlet.jar, implementa o método render e define os métodos "vazios" doView, doEdit e doHelp. Seu portlet, subclasse de GenericPortlet, pode então implementar esses métodos conforme suas necessidades. Por exemplo, doEdit prepara um form HTML que permite customizar o portlet e doHelp, que gera uma página de ajuda ao usuário.
O Window State determina o quanto de conteúdo do seu portlet estará disponível. São três os estados: normal, minimizado e maximizado.
Figura 1. Fragmento de um portlet.
A especificação de portlets Java permite que uma aplicação do tipo portlets possa ser empacotada num arquivo .war para o deploy em servidor de aplicação J2EE. Assim como um .war usado numa típica aplicação web J2EE, existe um arquvio WEB-INF/web.xml, para configuração do contexto da aplicação. A diferença é que este diretório WEB-INF também contém um arquivo do tipo descritor chamado portlet.xml.
Referências
- http://www.jcp.org/en/jsr/detail?id=168
- http://www.jcp.org/aboutJava/communityprocess/review/jsr168/
- http://plutoeclipse.sourceforge.net/
- http://jakarta.apache.org/
- http://developers.sun.com/prodtech/portalserver/
- http://www-106.ibm.com/developerworks/websphere/zones/portal/
- http://exo.sourceforge.net
- http://edocs.bea.com
- http://developers.sun.com/prodtech/portalserver/learning/tutorials/index.html
- http://developers.sun.com/prodtech/portalserver/reference/techart/jsr168
- http://otn.oracle.com/products/iportal/getstart/devapp01.htm