Upload
rafaelliu
View
1.721
Download
2
Embed Size (px)
DESCRIPTION
Palestra do JBoss In Bossa 2011 Brasília, 08/10/2011
Citation preview
JBossInBossa 2011 - Brasilia
JBoss Portlet BridgeA Ponte entre Portais e Aplicações
Rafael LiuJBoss Consultant
JBossInBossa 2011 - Brasilia
O que são Portais?
• "[A portal] provides a secure unified access point, [...] and is designed to aggregate and personalize information through application-specific portlets" - Wikipedia
JBossInBossa 2011 - Brasilia
O que são Portais?
• Aglomerador de conteúdo
• notícias, eventos, etc
• Hotsites e subsites
• campanhas, setores, etc
• Colaboração
• forum, chat, etc
JBossInBossa 2011 - Brasilia
JBossInBossa 2011 - Brasilia
JBossInBossa 2011 - Brasilia
JBossInBossa 2011 - Brasilia
Portais em Java
• Portlets
• JSR 168 - Portlets 1.0
• JSR 286 - Portlets 2.0
• Portlet Container
JBossInBossa 2011 - Brasilia
GateIn
• Solução de portal Red Hat / eXo (JBoss EPP)
• Portável (WCI): JBoss, Tomcat, ..?..
• Padrões
• JSR 168 - Portlets 1.0
• JSR 286 - Portlets 2.0
• JSR 170 - Java Content Repository
• Open Social
JBossInBossa 2011 - Brasilia
GateIn
• Provê nativamente
• Navegação, breadcrumbs, site maps, segurança
• Provê através de módulos
• Forum, enquetes, lista de contatos, calendário, agenda, web mail, FAQ, chat, perguntas e respostas, gerenciamento de conteúdo, versionamento, fluxo de publicação, auditoria, redes sociais, mashups, ...
JBossInBossa 2011 - Brasilia
Especificação Portlets
public class SimplePortlet extends GenericPortlet {
@Override
protected void doView(RenderRequest req,
RenderResponse resp)
throws PortletException, IOException {
resp.getWriter().println("Hello world");
}
}
JBossInBossa 2011 - Brasilia
Déjà vu??
JBossInBossa 2011 - Brasilia
Especificação Servlet
public class SimpleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().println("Hello world");
}
}
JBossInBossa 2011 - Brasilia
E tem JSP também!
public class SimplePortlet extends GenericPortlet {
@Override
protected void doView(RenderRequest req,
RenderResponse resp)
throws PortletException, IOException {
getPortletContext()
.getRequestDispatcher("/portlet.jsp")
.include(request, response);
}
}
JBossInBossa 2011 - Brasilia
Usando JSP
<%@ taglib uri="http://java.sun.com/portlet"
prefix="portlet"%>
<form method="post" action="<portlet:actionURL/>">
Name: <input type="text" name="name" value="">
<div id="<portlet:namespace />_mydiv"/>
<input type="submit" name="submit" value="Say hello">
</form>
JBossInBossa 2011 - Brasilia
Usando JSP?
<%@ taglib uri="http://java.sun.com/portlet"
prefix="portlet"%>
<form method="post" action="<portlet:actionURL/>">
Name: <input type="text" name="name" value="">
<div id="<portlet:namespace />_mydiv"/>
<input type="submit" name="submit" value="Say hello">
</form>
JBossInBossa 2011 - Brasilia
E não podia faltar um XML..
JBossInBossa 2011 - Brasilia
portlet.xml
<portlet-app>
<portlet>
<portlet-name>SimplePortlet</portlet-name>
<display-name>SimplePortlet</display-name>
<portlet-class>net.rafaelliu.net.SimplePortlet</portlet-class>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<portlet-info>
<title>SimplePortlet</title>
</portlet-info>
</portlet>
</portlet-app>
JBossInBossa 2011 - Brasilia
E agora?
JBossInBossa 2011 - Brasilia
O que são Portlet Bridges?
• "The Portlet Bridge for JavaServer Faces is a technology that sits between a portlet container and the JSF runtime enabling JSF applications to be exposed and run as portlets" - MyFaces Portlet Bridge FAQ
• Faz adequações necessárias para transformar o ambiente provido pelo portal no ambiente esperado pelo JSF
JBossInBossa 2011 - Brasilia
Por que utilizar?
• Diminuir a curva de aprendizado
• Tornar API Portlet mais transparente
• Facilitar a integração com sistemas legados JSF
JBossInBossa 2011 - Brasilia
Diminuir a curva de aprendizado
• O desenvolvimento é feito todo em cima de JSF
• Frameworks
• Componentes
• Tooling
JBossInBossa 2011 - Brasilia
Tornar API mais transparente
• Trata da criação de ID's com namespaces
• Trata da reescrita de URL's (referências e links)
• Encapsula a session (PORTLET_SCOPE e APPLICATION_SCOPE)
JBossInBossa 2011 - Brasilia
Portlet Bridge VS IFrame
• Redimensionamento natural
• URLs no IFrame redirecionam para fora do portal
• O alvo do IFrame precisa ser acessível do browser
• Controle identidade visual (CSS) e JavaScript
JBossInBossa 2011 - Brasilia
JBoss Portlet Bridge
• JSF / RichFaces / JBoss Seam
• GateIn e JBoss Portal
• Versões
• JBPB 1.x (JSR-301): JSF 1.2 para Portlet 1.0
• JBPB 2.x (JSR-329): JSF 1.2 para Portlet 2.0
• JBPB 3.x (JSR-?): JSF 2.0
• http://community.jboss.org/wiki/JBossPortletBridgeProjectLayout
JBossInBossa 2011 - Brasilia
Demo!
JBossInBossa 2011 - Brasilia
Inter-portlet Communication (IPC)
• Portlet 2.0
• Public Render Parameter
• Eventing
JBossInBossa 2011 - Brasilia
Portlet Preferences
Object request = FacesContext.getCurrentInstance();
.getExternalContext()
.getRequest();
PortletRequest portletRequest = (PortletRequest)request;
PortletPreferences portletPreferences = portletRequest.getPreferences();
// gravando
portletPreferences.setValue("link", link);
portletPreferences.store();
// lendo
link = portletPreferences.getValue("link", "http://rafaelliu.net");
JBossInBossa 2011 - Brasilia
Dúvidas?
@rafaelliu http://jboss.org/portletbridge
http://rafaelliu.net http://jboss.org/gatein