Aplicativos JavaEE 6 modularizados com Web Fragments



Documentos relacionados
Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Java para WEB. Servlets

Java para Desenvolvimento Web

J550. Helder da Rocha

Tutorial Módulo 01 Arquitetura Anexo I. Tutorial Módulo 01 Arquitetura Anexo I. LABORATÓRIO 01 Arquitetura e Configuração

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

Prof. Roberto Desenvolvimento Web Avançado

Criando e Entendendo o Primeiro Servlet Por: Raphaela Galhardo Fernandes

Java na WEB Servlet. Sumário

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

WebWork 2. João Carlos Pinheiro.

Arquitetura de uma Webapp

TDC2012. EJB simples e descomplicado, na prática. Slide 1

Minha primeira aplicação utilizando Java Server Faces + Glassfish

Criação de um novo projeto no Eclipse utilizando Maven

UNIDADE II JAVA SERVLETS

Aula 4. Objetivos. Conteúdo dinâmico na internet.

JSF - Controle de Acesso FERNANDO FREITAS COSTA

Prática Sobre Servlets e JSP

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

Autenticação e Autorização

FACULDADE DE TECNOLOGIA SENAC GOIÁS CONTROLE DE ACESSO USANDO O FRAMEWORK RICHFACES. 5º PERÍODO Gestão da Tecnologia da Informação

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Escrevendo meu primeiro porlet. Gustavo Lira Consultor 4Linux

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux

Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007

Programação II Programação para a Web. Christopher Burrows

Universidade da Beira Interior

Tutorial Jogo da Velha WEB

Aula 03 - Projeto Java Web

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

TUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges

J550 Integração com Bancos de Dados

Guia para Iniciantes do WebWork

Agenda. Desenvolvimento um aplicativo completo usando JSF, EJB e padrões Rodrigo Cândido e Vinny Nunes Instrutores Globalcode / VOffice.

Uma introdução ao Google App Engine com GWT

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

Java Server Pages. Arquitectura de uma aplicação distribuída em Internet. Figura 1 Modelo 2

Artigo JavaMagazine (edição 58)

Java II. Sérgio Luiz Ruivace Cerqueira

Orientada a serviços: JAX-WS SOAP API

Programação Web Aula 12 - Java Web Software

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Apache Wicket. Apache Wicket

Introdução à Plataforma J2EE Java2 Enterprise Edition. Alex de V. Garcia, Dr.

Java II. Sérgio Luiz Ruivace Cerqueira

J550. Apache Struts. Helder da Rocha

Agilizando o processo de redeploy de aplicações Java

Desenvolvimento Web TCC Turma A-1

JSP: JAVA SERVER PAGES

INTRODUÇÃO À TECNOLOGIA SERVLETS

Desenvolvimento Web com JSP/Servlets

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Servlets. João Carlos Pinheiro. Julho / 2005

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Java 2 Enterprise Edition Componentes Web J2EE

Fundamentos de Servlets. Conceitos e ciclo de vida Classes e Interfaces da API Exemplos de Servlets

Contextos de Aplicações Web

Executando comandos do Sistema Operacional em uma aplicação WEB Java

!" # # # $ %!" " & ' ( 2

Introdução a Servlets e JSP. Prof. Samuel Martins samuellunamartins at gmail dot com Faculdade São Miguel

Documentação Usando o Javadoc

Java Servlets. Leonardo Gresta Paulino Murta

JSP e Servlet Princípio de MVC

JPA 2.0 e Servlet 3.0

J550 Tag Libraries e JSTL

Java EE 6. A revolução do. Um overview sobre as novidades da JSR 316. a r t i g o

Programação para Android. Aula 06: Activity, menus e action bar

Servlets & JSP. Prof. Ramon Chiara

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Introdução. Servlet. Ciclo Vida. Servlet. Exemplos. Prof. Enzo Seraphim

Desenvolvimento WEB em JAVA. Palestrante: Lourival F. de Almeida Júnior

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

Aplicações de Linguagem de Programação Orientada a Objeto

Padrão Arquitetura em Camadas

PROJETO INTEGRADOR. Documentação. Aplicação de Controle de Acesso FACULDADE DE TECNOLOGIA SENAC GOIÁS. Programação com Frameworks

J550. Contextos. Helder da Rocha

XML extensible Markup Language. Prof. Fellipe Aleixo

Grupo de Usuários Java JavaServer Faces: A mais nova tecnologia Java para desenvolvimento WEB

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Boletim Técnico. : 05/08/2013 Data da revisão : 16/10/13 Banco(s) de Dados

Associação Carioca de Ensino Superior Centro Universitário Carioca

JSF. Versão 1.0. Apostila destinada ao curso com carga horária de 32 (trinta e duas) horas

Tutorial J2ME Parte 3

Programação Na Web. Sessão II. Índice. Visão geral da API Sessão. Obter dados sobre uma sessão. Extrair informação sobre uma Sessão

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container TomCat Aula 05

TUTORIAL DE INTRODUÇÃO AO CEWOLF

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

Desenvolvimento de Sistemas Corporativos Aula 1.5 Introdução a Servlets. Prof. Bruno Moreno

Organizando Classes em Pacotes. Profa. Thienne Johnson EACH/USP

Material de Apoio Profº Alan Cleber Borim

TUTORIAL SISTEMA DE CONTROLE DE ACESSO

Unidade 9: Middleware JDBC para Criação de Beans

Transcrição:

Aplicativos JavaEE 6 modularizados com Web Fragments Kleber Xavier Instrutor e Arquiteto de Software Vinicius Senger Instrutor e Arquiteto De Software

Agenda Introdução Componentização com JavaEE 6 Plugabilidade DEMO

Introdução Componentes web em um aplicativo até JavaEE 5: Frameworks (JSF, RichFaces, etc) Módulos de aplicativo: contendo classes e recursos (páginas, scripts, imagens, css, etc) Para instalação não basta apenas adicionar um.jar Configuração intrusiva: Alterações no deployment descriptor (web.xml) Adição de descritores proprietários em WEB-INF

Introdução Configurações do web.xml necessárias para JSF: <servlet> <servlet-name>faces Servlet</servlet-name> <servlet-class> javax.faces.webapp.facesservlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping>

Introdução Configurações do web.xml necessárias para RichFaces: <filter> <display-name>ajax4jsf Filter</display-name> <filter-name>ajax4jsf</filter-name> <filter-class>org.ajax4jsf.filter</filter-class> </filter> <filter-mapping> <filter-name>ajax4jsf</filter-name> <servlet-name>faces Servlet</servlet-name> <dispatcher>request</dispatcher> <dispatcher>forward</dispatcher> <dispatcher>include</dispatcher> </filter-mapping>

Introdução Combinação de frameworks aumenta a complexidade do arquivo web.xml. As páginas HTML de módulos devem ser publicadas juntamente às páginas do aplicativo principal Não é possível empacotar as páginas HTML em um arquivo.jar

Java EE 6 Foco na extensibilidade Possibilidade de configuração de aplicativos Web e JSF via anotações Possibilidade de quebra do deployment descriptor (web.xml) em vários fragmentos Páginas HTML podem ser adicionadas em arquivos.jar

Declarando um Servlet Exemplo de Servlet com anotação @WebServlet, usando o atributo value para definir várias URLs: package br.com.globalcode.tdc2012.exemplo.servlet; // imports omitidos @WebServlet({"/faces/*", "*.jsf","*.faces") public class FacesServlet extends HttpServlet { @Override protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { //...

Declarando um Filter Exemplo de filtro com anotação @WebFilter: package br.com.globalcode.tdc2012.exemplo.filter; // imports omitidos @WebFilter(servletNames={"FacesServlet",dispatcherTypes={REQUEST,FORWARD) public class AjaxFilter implements Filter { public void dofilter(servletrequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //...

Declarando um Listener Exemplo de listener com anotação @WebListener: package br.com.globalcode.tdc2012.exemplo.listener; import javax.servlet.servletcontextevent; import javax.servlet.servletcontextlistener; import javax.servlet.annotation.weblistener; @WebListener public class ExemploListener implements ServletContextListener { @Override public void contextinitialized(servletcontextevent event) { //... @Override public void contextdestroyed(servletcontextevent event) { //...

Plugabilidade Mecanismo que permite adicionar a uma aplicação novos componentes (Servlets, Filters, Listeners) contidos em pacotes JARs através do classpath da aplicação Web. Suporta componentes anotados em JARs separados; Suporta arquivos XML de configuração que complementam o web.xml, chamados de "web fragments"; Suporta a configuração programática (carregamento dinâmico) de componentes através de códigos em Listeners.

Empacotamento de componentes anotados Arquivos JARs armazenados no /WEB-INF/lib da aplicação Web podem conter componentes anotados para definir Servlets, Filters e Listeners; A presença do JAR com componentes anotados permitirá a detecção e deploy automáticos; Na ausência do JAR, os componentes não serão instalados;

Fragmentos de configuração Componentes Web podem ser configurados através de arquivos XML contidos em JARs; O arquivo deve se chamar web-fragment.xml e ser armazenado em /META-INF/ do pacote JAR; Ao colocar o JAR no /WEB-INF/lib da aplicação Web resultará na interpretação do arquivo de fragmentos no /META-INF;

Fragmentos de configuração <web-fragment version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"> <servlet> <servlet-name>exemplo01</servlet-name> <servlet-class> br.com.globalcode.tdc2012.exemploservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>exemplo01</servlet-name> <url-pattern>/exemploservletfragmentado1</url-pattern> </servlet-mapping> </web-fragment>

Páginas nos fragmentos Além da configuração e classes, também é possível disponibilizar páginas nos fragmentos do aplicativo web; As páginas devem estar localizadas dentro do.jar, no subdiretório META-INF/resources Isso permite a criação fácil de módulos para aplicativos Web

Criação de módulos Para criação de módulos com web fragments basta seguir os passos: Criar o.jar com o módulo ou plugin desejado, incluindo as páginas e classes; Criar um listener de inicialização dentro do.jar que faz a publicação do plugin em um repositório (por exemplo um EJB @Singleton) Empacotar o.jar junto ao aplicativo Web principal

Exemplo Página do aplicativo principal que carrega menus dinamicamente de acordo com os módulos instalados: <h:form> <rich:toolbar width="1000px"> <c:foreach itens= #{menucontroller.menus var= menu" /> <ui:include src= #{menu"/> </c:foreach> </rich:toolbar> </h:form>

Exemplo EJB Singleton utilizado como registro de módulos: @Singleton public class MenuRegistryImpl implements MenuRegistry { private Set<String> menus = new LinkedHashSet<String>(); public void addmenu(string caminhomenu) { menus.add(caminhomenu); public Set<String> getmenus() { return menus; public void removemenu(string caminhomenu) { menus.remove(caminhomenu);

Exemplo Listener de registro de módulos: @WebListener public class ComprasWebListener implements ServletContextListener { @EJB MenuRegistry registry; public void contextinitialized(servletcontextevent sce) { registry.addmenu( /includes/menu-compras.xhtml ); public void contextdestroyed(servletcontextevent sce) {

DEMO

Dúvidas? kleber@globalcode.com.br vinicius@globalcode.com.br