1. Portlets: Let them make your virtual world!
Fabiano Cruz
Coordenador NEC / Java User Group – Petrópolis
Marcelo Mayworm
Coordenador NEC / Java User Group – Petrópolis
Portlets: Let them make your virtual world!
2. Agenda
• Gerenciamento de informação
• Framework Jetspeed
– Overview
– Instalação e configuração
• Porlets API
• Study Case
Portlets: Let them make your virtual world!
3. Proposta
• Pesquisa e desenvolvimento de soluções
para a integração e gerenciamento de
informação, baseada em projetos Open
Source e seguindo o conceito Web based
• Pesquisa e desenvolvimento de novas
features para o Framework Jetspeed
• Contribuições para a Apache Software
Foundation
• Publicações periódicas
Portlets: Let them make your virtual world!
4. Gestão do Conhecimento
• Durante as primeiras décadas da Informática
a ênfase foi em gerenciar dados
• Estruturas de dados, arquiteturas de dados,
bancos de dados, data warehouses, e assim
por diante
• Transformar os dados transacionais em
conhecimento e inteligência para suportar as
tomadas de decisões
• O fluxo de informações integrado aumentou
vertiginosamente, proporcionando uma
difusão de conhecimento
Portlets: Let them make your virtual world!
5. As mudanças
• Prover informações organizadas
– Visão liner versus visão holística
• Obter meios efetivos de uma empresa se
relacionar com seus fornecedores e clientes
– ERP(Enterprise Resource Planning)
– CRM(Customer Relationship Management)
– KM(Knowledge Management)
– SCM(Supply Chain Management)
• Data Mining, junto às demais
funcionalidades do ERP transforma dados
em informações relevantes
Portlets: Let them make your virtual world!
6. Integração Web based
• Tecnologias Web based para suportar as
transações desse novo ambiente
– Applications Service Provider (ASPs)
– Dificuldade de customizar(os processos se adequam
a empresa)
• Com a expansão da Internet e das intranets
corporativas, a distinção entre os sistemas de “back
office” e “front office” tem sido cada vez mais tênue
• Rede Integrada de valor
– O bem mais valioso para o sucesso é a informação
– Empresas estarão conectadas diretamente uma a
uma
• Integrando a partir de Web based
Portlets: Let them make your virtual world!
7. ### ????? ###
• Mas o que nos falta?
– Integrar sistemas tecnológicos num único
ponto de acesso
Portlets: Let them make your virtual world!
8. O que é um Portal ?
• Funções típicas:
– Registro de usuário
– Autenticação e autorização
– Componentes de gerenciamento de dados:
• Portlets
– Personalização baseada em profiles/behavior
– Customização de páginas por usuários
– Busca
– Gerenciamento de conteúdo
Portlets: Let them make your virtual world!
9. Exemplo:
Portlets: Let them make your virtual world!
10. JetSpeed | Visão Geral
• Um Framework da Apache Software
Foundation
• O principal projeto Open Source de um
Portal Server
• Usa o Portal Structure Markup Language
para definir o page layout, contents,
decorations, etc
– Jetspeed prove uma ferramenta de
customização / administração para ser
utilizada durante o carregamento da página
• Usa XML para definir serviços
Portlets: Let them make your virtual world!
12. JetSpeed | Arquitetura
• Dentro do Jetspeed, o Framework Turbine é
responsável por gerenciar a autenticação
dos usuários e as suas configuração de
layout de página.
• Portlets podem interagir com os serviços do
Turbine através do RunData object.
• Uso de templates
– JSP, Velocity etc
Portlets: Let them make your virtual world!
13. JetSpeed | Page Layout
• Pense nos portlets como componentes
ativos que mostram dados dentro de uma
página HTML. A figura ilustra os portlets
dentro da página de um
portal. São exibidos
três portlets
Portlets: Let them make your virtual world!
14. Jetspeed | Screen/Page
• Essa figura mostra a anatomia da página
contendo os portlets. Dentro dessa página, o
conteúdo do portlet é gerenciado pelo
PortletControl e PortletController.
Portlets: Let them make your virtual world!
15. Jetspeed | Screen/Page
• PortletControl
– Dentro da página do Portlet, gerencia o título
e corpo do Portlet
• PortletController
– Gerencia múltiplos portletControl (cada um
gerenciando seu portlet), provendo uma
página de entrada de informações para os
portlets
Portlets: Let them make your virtual world!
16. Jetspeed | Portlets Goals
• Possuem pequenas web applications para o
usuário
• quot;skin“: essas web applications possibilitam
ao usuário definir background color, title bar
color, icons, etc
• Gerenciamento de performace entre
múltiplos portlets através da utilização de
cache
• Facilmente customizado pelo usuário
Portlets: Let them make your virtual world!
17. Jetspeed | Portlets Goals
• Facilmente desenvolvidos e não requerem
que o desenvolvedor conheça os detalhes
da implementação da Engine JetSpeed
• Facilmente desenvolvidos, pois a
AbstractPortlet class definine a maioria das
ações ocorridas em grande parte das
situações
• Permite automaticamente a apresentação
através dos formatos HTML e WML
Portlets: Let them make your virtual world!
18. Jetspeed | Portlets Goals
• Prove métodos para o portlet determinar o
estado atual ou anterior de apresentação.
Todos os portlets devem suportar o VIEW
mode
• Clicando em um desses controles
apresentados pela figura, o usuário pode,
facilmente, alterar o modo e/ou estado de
exibição do portlet. Exemplo:
Portlets: Let them make your virtual world!
19. Jetspeed | Portlets Padrão
• Esses são os portlets padrão e mais
comumente usados:
– WebPage Portlet
– HTML Portlet
– JSP Portlet
– RSS Portlet
– XSL Portlet
Portlets: Let them make your virtual world!
20. Jetspeed | Portlets Padrão
• WebPage Portlet
– Apresenta uma página web dentro de um
Portlet
– Essa página será carregada pela Engine
Jetspeed, eximindo o portlet de qualquer
interação com o browser do usuário, como
cookies, sendo gerenciada pelo seu sub-
sistema de cache
– O WebPagePortlet irá converter, ou apagar,
algumas tags do HTML, resultando em uma
página que será apresentada em um portlet
Portlets: Let them make your virtual world!
21. Jetspeed | Portlets Padrão
• HTML Portlet
– Apresenta uma página HTML estática dentro
de um portlet
– Porque utilizar um HTML Portlet ao invés de
um WebPagePortlet?
– HTML é estático
– Não é um HTML completo, ex.: <HEAD> não existe
dentro do arquivo
– O arquivo HTML não precisa estar visível para o Web
Server
– Tarefas específicas não podem ser realizadas por um
WebPagePortlet
– Portlet que apresentam somento uma imagem, como
JPEG ou SVG
Portlets: Let them make your virtual world!
22. Jetspeed | Portlets Padrão
• HTML Portlet Example
<portlet-entry name=“OneDayquot; hidden=quot;falsequot;
type=quot;ref“ parent=quot;HTMLquot;application=quot;falsequot;>
<meta-info>
<title>One Day Java</title>
<description>HTML Example</description>
</meta-info>
<url>/OneDay.html</url>
</portlet-entry>
Portlets: Let them make your virtual world!
23. Jetspeed | Portlets Padrão
• JSP Portlet
– Apresenta o output de um JSP dentro de um
portlet
– Porque utilizar um JSP Portlet ao invés de
um WebPagePortlet?
• JSP não tem que estar visível para o Web Server
• Determinadas tarefas não podem ser atingidas
com o WebPagePortlet
• Jetspeed Tag Library
Portlets: Let them make your virtual world!
24. Jetspeed | Portlets Padrão
• JSP Portlet Example
<portlet-entry name=“OneDayJSPquot; hidden=quot;falsequot;
type=quot;refquot; parent=quot;JSPquot; application=quot;falsequot;>
<meta-info>
<title>One Day JSP Example</title>
<description>Simple JSP Portlet</description>
</meta-info>
<parameter name=quot;templatequot; value=“OneDay.jspquot;
hidden=quot;falsequot;/>
</portlet-entry>
Portlets: Let them make your virtual world!
25. Jetspeed | Portlets Padrão
• RSS Portlet
– Apresenta um RSS que prove informações
para um portlet
• Rich Site Summary (RSS) é um formato baseado
em XML, desenvolvido pela Netscape. O objetivo
do RSS é o de propogar as alterações em um site,
incluindo seu portal desenvolvido com o Jetspeed,
dinamizando o processo de publicação de
conteúdo
Portlets: Let them make your virtual world!
26. Jetspeed | Portlets Padrão
• RSS Portlet
– A formatação de RSS dentro de um portlet é
controlada pelo stylesheet
– Informações sobre o RSS:
http://my.netscape.com/publish/formats/rss-spec-0.91.html
Portlets: Let them make your virtual world!
27. Jetspeed | Portlets Padrão
• RSS Portlets Example
<portlet-entry name=“Apacheweekquot;
hidden=quot;falsequot; type=quot;refquot; parent=quot;RSSquot;
application=quot;falsequot;>
<meta-info>
<title>Apacheweek</title>
</meta-info>
<url>
http://www.apacheweek.com/issues/apacheweek-headlines.xml
</url>
</portlet-entry>
Portlets: Let them make your virtual world!
28. Jetspeed | Portlets Padrão
• XSL Portlet
– Apresenta um documento XML transformado
dentro de um portlet
Portlets: Let them make your virtual world!
29. Jetspeed | Instalação
• Para instalar o JetSpeed siga esses três passos:
– Download and install TomCat 3.2 (Binaries)
• http://jakarta.apache.org/builds/jakarta-
tomcat/release/v3.2.4/bin/
– Download JetSpeed 1.3.a2 (Binaries)
• http://jakarta.apache.org/builds/jakarta-
jetspeed/release/v1.3a2/
– Download Apache James. Configure a propriedade
mail.server no arquivo de propriedades
TurbineResources.properties, o qual se encontra em
webapps/jetspeed/WEB-INF/conf
Portlets: Let them make your virtual world!
30. Jetspeed | Configuração
• Descompactar o arquivo jetspeed-1.3a2-
release-src.zip
• Copiar o arquivo jetspeed.war (Web Archieve),
para o diretório WEBAPPS do TomCat
• Start o TomCat <TOMCAT_HOME>/bin/startup
Nota: O TOMCAT_HOME deverá estar setado
• Conectar
– http://localhost:8080/jetspeed
Portlets: Let them make your virtual world!
31. Jetspeed | Estrutura de Dir.
• Conf
– Contém todos os arquivos de
configuração do Jetspeed
• Linguagem, Poll de Conexões,
Controle de log (LOG4J), Arquivo
de Registro dos Portlets (.xreg), etc
• Lib
– Armazena todos os JARs
(Java Archieve) do Projeto
• Templates
– Velocity e JSP
– HTML e/ou WML
– Funcionalidades iniciais
• Template de cadastro, login, etc
Portlets: Let them make your virtual world!
32. Jetspeed | DataBases
• Banco default
– Hypersonic
– Configuração default no TurbineResource.properties
database.default.driver=org.hsql.jdbcDriver
database.default.url=jdbc:HypersonicSQL:${webappRoot}/WE
B-INF/db/jetspeed
database.default.
username=sa
database.default.
password=
Portlets: Let them make your virtual world!
33. Jetspeed | New DataBase
• Script de criação e preechimento das tabelas
para:
– MySQL, Postgres, Sybase, DB2 e Oracle
– Baixando o Source Code, você terá acesso a
esses arquivos
• Obter o driver JDBC do distribuidor
– Colocá-lo no diretório lib do JetSpeed
• Alterar o TurbineResource.properties
Portlets: Let them make your virtual world!
34. Jetspeed | MySQL Example
• MySQL Connector/J 2.0.14 (ZIP)
– mm.mysql-2.0.4-bin.jar
• TurbineResource.properties
database.default.driver=org.gjt.mm.mysql.Driver
database.default.url=jdbc:mysql://localhost:3306/nec_db
database.default.username=root
database.default.password=
Portlets: Let them make your virtual world!
35. Jetspeed | Study Case
• Desenvolvendo Portlets – Hello World ! ☺
1. package org.nec.portal.portlets;
2. import org.apache.jetspeed.portal.portlets.AbstractPortlet;
3. import org.apache.turbine.util.RunData;
4. import org.apache.ecs.ConcreteElement;
5. import org.apache.ecs.StringElement;
6.
7. public class HelloWorldPortlet extends
8. AbstractPortlet
9. {
• public ConcreteElement getContent
• (RunData runData)
12. {
13. return (new StringElement (quot;Hello World!quot;));
14. }
15. }
Portlets: Let them make your virtual world!
36. Jetspeed | Study Case
• A classe utilizada como base para novos
portlets é a classe AbstractPortlet. Ela está
localizada no package
org.apache.jetspeed.portal.portlets
• Extendendo a AbstractPortlet, você terá que
realizar a implementação do método
getContent( )
Portlets: Let them make your virtual world!
37. Jetspeed | Study Case
• getContent( )
– Também implementa a interface RunData do
Turbine como um parâmetro. Através dos
métodos getters e setters da RunData interface,
você tem acesso em runtime as informações
armazenadas no Turbine, incluindo cookies,
locale, e dados do usuário. A maioria dos dados
atualmente, são gerenciados pelo próprio
Jetspeed, e não precisamos nos preocupar com
eles na hora do desenvolvimento dos portlets
Portlets: Let them make your virtual world!
38. Jetspeed | Study Case
• O método getContent( ) retorna um ConcreteElement
de um ECS
• ECS (Element Construction Set)
– Para mostrar o conteúdo, portlets usam o
ECS API. Este vem com o JetSpeed, o qual
gera markup elements a partir de objetos
Java. Você pode usar servlet template ou
JSP para gerar conteúdo como saída, o
qual é capturado por uma ECS que mostra
o seu conteúdo. ECS suporta tanto WML
como HTML
Portlets: Let them make your virtual world!
39. Jetspeed | Exemplo ECS
out.println(quot;<HTML>quot;);
out.println(quot;<HEAD><TITLE>Demo<TITLE><HEAD>quot;);
out.println(quot;<BODY>quot;);
Construção Manual de HTML
out.println(quot;<H1>Demo Header<H1>quot;);
out.println(quot;<H3>Sub Header:<H3>quot;);
out.println(quot;<FONT SIZE=quot;+1quot; FACE=quot;Timesquot; COLOR=quot;#FFFFFFquot;>);
out.println(quot;The big dog & the little cat chased each other.quot;);
out.println(quot;<FONT>quot;);
out.println(quot;<BODY>quot;);
out.printL>quot;);
Html html = new Html()
.addElement(new Head()
.addElement(new Title(quot;Demoquot;)))
.addElement(new Body()
.addElement(new H1(quot;Demo Headerquot;))
.addElement(new H3(quot;Sub Header:quot;)) Construção com ECS
.addElement(new Font().setSize(quot;+1quot;)
.setColor(HtmlColor.WHITE)
.setFace(quot;Timesquot;)
.addElement(quot;The big dog & the little cat chased each other.quot;)));
out.println(html.toString());
// or write to the outputstream directly
output(out);
Portlets: Let them make your virtual world!
40. Jetspeed | Study Case
• Publicando o portlet no Jetspeed
– O arquivo .xreg
• portlet.xreg
– Arquivo de registro dos portlets default e de
configuração do Jetspeed
• local-portlets.xreg
– Para que você não tenha problemas nas atualizações
de versões do Jetspeed, se faz necessário criar o seu
próprio catálogo de portlets
Portlets: Let them make your virtual world!
41. Jetspeed | Study Case
• Desenvolvendo Portlets – Arquivo de Registro do Portlet (.xreg)
1. <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
2. <registry>
3. <portlet-entry name=quot;HelloWorld“
4. hidden=quot;falsequot; type=quot;instance“
5. application=quot;falsequot;>
6. <meta-info>
7. <title>HelloWorld</title>
8. <description>
9. Portlet HelloWorld – One Day Java
10. </description>
11. </meta-info>
12. <classname>
13. org.nec.portal.portlets.HelloWorldPortlet
14. </classname>
15. <media-type ref=quot;htmlquot;/>
16. </portlet-entry>
17. </registry>
Portlets: Let them make your virtual world!
42. Jetspeed | Study Case
• Catálogo de portlets
Portlets: Let them make your virtual world!
43. Jetspeed | Study Case
• Adicionando o portlet do catálogo ao portal
personalizado do usuário
Portlets: Let them make your virtual world!
44. Jetspeed | Study Case
• Página personalizada do usuário
Portlets: Let them make your virtual world!
45. Jetspeed | Study Case
• Você deverá publicar o seu novo
portlet no Jetspeed de forma manual,
utilizando um “dialeto do XML”
denominado Portal Structure Markup
Language (PSML)
• O Jetspeed utiliza o PSML para
descrever configurações internas,
disponíveis nos portlets, e
configurações do usuário
• O portlet deverá estar disponível
através de seu portlet registry (.xreg)
Portlets: Let them make your virtual world!
46. Jetspeed | Study Case
• Desenvolvendo Portlets – Arquivo de Publicação do Portlet
(.psml)
1. <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
2. <portlets
3. xmlns=quot;http://www.apache.org/2000/02/CVSquot;>
4. <controller name=quot;ThreeColumnsquot;/>
5. <skin name=quot;NECPortletStylesquot;/>
6. <entry parent=quot;HelloWorldquot;>
7. <layout>
8. <property name=quot;columnquot; value=quot;1quot;/>
9. <property name=quot;rowquot; value=quot;1quot;/>
10. </layout>
11. </entry>
12. </portlets>
Portlets: Let them make your virtual world!
47. Jetspeed | Study Case
• Jetspeed e Wireless
– Wap de uma forma transparente
– Utilizando o Nokia Mobile Internet Toolkit
Portlets: Let them make your virtual world!
48. Jetspeed | Study Case
Tela de Login Página Personalizada do Usuário
Portlets: Let them make your virtual world!
49. Jetspeed | Study Case
• Resources
– Para informações adicionais, recursos e
ferramentas, veja os seguintes web sites
• http://jakarta.apache.org
• http://jakarta.apache.org/jetspeed
• http://www.mysql.com
• http://www.javasoft.com
• http://www.javaworld.com
• http://www.google.com.br ☺
Portlets: Let them make your virtual world!
50. Jetspeed | Study Case
• Perguntas
– … e respostas …
Portlets: Let them make your virtual world!
51. Portlets: Let them make your virtual world!
jug-petropolis-subscribe@yahoogroups.com
Portlets: Let them make your virtual world!
52. Portlets: Let them make your virtual world!
Fabiano Cruz
fabianoc@acm.org
Marcelo Mayworm
mmayworm@acm.org
Portlets: Let them make your virtual world!