glassfish e maven: java ee sem dor!
TRANSCRIPT
Bruno Borges
[email protected]
@brunoborges
GlassFish e Maven:Java EE sem dor
Agenda
GlassFishHistria
Futuro
Java EEVerso 6
Futuro: Java EE 7
Apache Maven
Embedded GlassFish Maven Plugin
Criado pela SUN em 2005
2006 (v1), RI do JEE 5para desenvolvedores
2007 (v2), adicionou Clustering e outras funespara enterprise
2009, (v3) RI do JEE 6Nova arquitetura (OSGi, fast-startup, etc)
GlassFish - Histria
Aplicacoes isoladasUsuarios querem acesso a todas as funcoes e dados. Nao importa onde estejam. Requer aplicacoes integradas.Nao existe receita de bolo para integrar aplicacoes, nem a solucao ideal. Se a arquitetura escolhida foi boa ou nao, s com o tempo pra saber.Solucoes de fornecedores sao metodologias e praticas voltadas a produtos.Arquiteturas de mensagens assincronas mostram ser a melhor opcao por desacoplar diferentes sistemas.Padroes de integracao sao voltados a problemas especificos de design. Criados a partir de solucoes que se repetiram e mostraram ter resultado positivo
V 3.1 Fevereiro 2011Load Balancing
Centralised Admin
V 3.1.1 Julho 2011Correo de bugs
V 3.1.2 Fevereiro 2012Correo de bugs
Novo console administrativo
Melhorias no Thread Pool
Transaction Recovery
GlassFish - Histria
Aplicacoes isoladasUsuarios querem acesso a todas as funcoes e dados. Nao importa onde estejam. Requer aplicacoes integradas.Nao existe receita de bolo para integrar aplicacoes, nem a solucao ideal. Se a arquitetura escolhida foi boa ou nao, s com o tempo pra saber.Solucoes de fornecedores sao metodologias e praticas voltadas a produtos.Arquiteturas de mensagens assincronas mostram ser a melhor opcao por desacoplar diferentes sistemas.Padroes de integracao sao voltados a problemas especificos de design. Criados a partir de solucoes que se repetiram e mostraram ter resultado positivo
Verso 4.0 - RoadmapJava EE 7
Suporte a virtualizao
PaaS oriented
GlassFish - Futuro
Aplicacoes isoladasUsuarios querem acesso a todas as funcoes e dados. Nao importa onde estejam. Requer aplicacoes integradas.Nao existe receita de bolo para integrar aplicacoes, nem a solucao ideal. Se a arquitetura escolhida foi boa ou nao, s com o tempo pra saber.Solucoes de fornecedores sao metodologias e praticas voltadas a produtos.Arquiteturas de mensagens assincronas mostram ser a melhor opcao por desacoplar diferentes sistemas.Padroes de integracao sao voltados a problemas especificos de design. Criados a partir de solucoes que se repetiram e mostraram ter resultado positivo
Java EE 6
Java EE 6 JSR 316Profiles
EJB 3.1
JSF 2.0
JSP 2.2
Servlets 3.0
JAX-RS
JAX-WS 2.2
JPA 2.0
Java EE Connectors 1.6
Java EE 6
As coisas boas do Java EE 6No precisa mais de web.xml
Melhora na API de Servlets para tratar FileUpload
Validation (JSR 303) no JPA
EJB do jeito que todo mundo queriaNo precisa mais de um ejb-jar.xml
Anotaes
@Singleton e @Startup beans
@Schedule bean's methods
Operaes assncronas
Do JEE6 para o JEE7
Java EE 7
Java EE 7
Java EE 7
EJB 3.2 JSR 345Suporte a multi-tenancy
Melhora no uso de anotaes para simplificar o modelo de programao
Alinhamento com outras especificaes como CDI, JMS e BeanValidation
Servlet 3.1 JSR 340Suporte a WebSockets
JPA 2.1 JSR 338Introduo da interface StoredProcedureQuery
Java EE 7
JSF 2.2 JSR 344Mais fcil de criar componentes
HTML5
O mais esperadoJMS Java Messaging Service 2.0 JSR 343Melhora no modelo de programao
Integrao com CDI
Mudanas na API para permitir maior integrao entre vendors de JMS com qualquer container JEE
Cloud-friendly: suporte a multi-tenancy e outras funcionalidades relacinadas a Cloud
Apache Maven
Apache Maven
Ferramenta de buildConvention over configuration
Arquivos POMs
Repositrio de artefatos
Plugins
Perfeito paraIntegrao Contnua
Acelerao na ambientao de novos desenvolvedores
Apache Maven
Principais Plugins para projetos Java EE 6WAR plugin
EAR plugin
GlassFish Embedded Plugin
Dependency plugin
Assembly plugin
Groovy Maven Plugin
Archetype Plugin
WAR plugin
Cria um arquivo WAR de um projeto do tipo WAR
|-- pom.xml `-- src `-- main |-- java | `-- com | `-- example | `-- projects | `-- SampleAction.java |-- resources | `-- images | `-- sampleimage.jpg `-- webapp |-- WEB-INF | `-- web.xml |-- index.jsp `-- jsp `-- websource.jsp
com.myproject myproject war 1.0-SNAPSHOT
org.apache.maven.plugins maven-war-plugin 2.2 false
$ mvn package //ou entao// $ mvn compile war:war$ mvn war:exploded
Definio das dependncias
Como controlar
quais dependncias
vo para o MANIFEST
e/ou para o WEB-INF
/lib ?
default
vai para o MANIFEST, e no WEB-INF/lib
true
vai para o MANIFEST, mas no no WEB-INF/lib
provided
no vai para o MANIFEST, nem para o WEB-INF/lib
org.apache.maven.plugins maven-war-plugin 2.2 true
EAR plugin
Cria um arquivo EAR de um projeto modularizado
|-- pom.xml|-- module-ear| `-- pom.xml|-- module-ejb| |-- pom.xml| `-- src| `-- main| |-- java| | `-- com| | `-- myproject| | `-- MyStatelessBean.java`-- module-web |-- pom.xml `-- src `-- main |-- java |-- resources `-- webapp
org.apache.maven.plugins maven-ear-plugin 2.7
com.myproject module-ejb com.myproject module-web myproject
GlassFish Embedded plugin
Permite rodar o GlassFish (tanto Web quanto Full profile)
a partir do Maven$ mvn embedded-glassfish:run
Permite fazer deploy e undeploy em uma instncia remota$ mvn embedded-glassfish:deploy
$ mvn embedded-glassfish:undeploy
GlassFish Embedded plugin
Permite iniciar ou parar uma instncia remota ou local (embedded)$ mvn embedded-glassfish:start
$ mvn embedded-glassfish:stop
Permite administrar uma instncia remote ou local (embedded)$ mvn embedded-glassfish:admin
GlassFish Embedded plugin
Como configurar?Artefatos no repositrio central (#win \o/)
Dependncias necessrias e seus escopos
org.glassfish.main.extras glassfish-embedded-all
3.1.2 test
javax javaee-api 6.0 provided
GlassFish Embedded plugin
Como configurar?Plugin
domain.xml (para DataSource e outras configuraes de container)
org.glassfish.embedded maven-embedded-glassfish-plugin 3.1.2 embedded-glassfish src/test/resources/domain.xml / ${project.build.directory}/${build.finalName}.war 8080 true
Outros plugins interessantes
DependencyVisualizar as dependencias
$ mvn dependency:tree
Copiar as dependencias para algum diretrio
$ mvn dependency:copy-dependencies
Criar um ClassPath
$ mvn dependency:build-classpath
Modo offline
$ mvn dependency:go-offline
Outros plugins interessantes
AssemblyAgregar artefatos e dependencias do projeto em um arquivo ou diretrio, por exemplo:Criar um ZIP com todas as dependncias
Criar um ZIP com todos os fontes
Criar um JAR (big-fat) executvel
org.apache.maven.plugins maven-assembly-plugin 2.3
Outros plugins interessantes
GMaven - GroovyScripting no build usando linguagem GroovyEm alguns servidores, pode ser necessrio criar arquivos XML especficos (como deployment descriptors)
Com o GMaven, mais fcil de gerar esses arquivos
org.codehaus.gmavengmaven-plugin1.3
Exemplo GMaven
new File("target").mkdir()def sw = new FileWriter(new File("target/module.xml"))def xml = new groovy.xml.MarkupBuilder(sw)xml.module(xmlns:'urn:jboss:module:1.0', name:'com.bemobi.infosender') { resources {project.runtimeClasspathElements.each { def path = it.find(".*?([\\w\\.-]*\\.jar)") { it[1] } !path?:'resource-root'(path:path)} } dependencies {'module'(name:'org.hibernate', export:'true') 'module'(name:'org.slf4j', export:'true') 'module'(name:'org.apache.commons.logging', export:'true') 'module'(name:'com.sun.xml.bind', export:'true') 'module'(name:'javaee.api', export:'true') }}
Outros plugins interessantes
ArchetypeAuxilia na definio de esqueletos de projetos reutilizveis
Grandes empresas podem se beneficiar, quando possuem arquitetura padro para todos os projetos
Links
GlassFish @glassfish
http://www.glassfish.org
Embedded GlassFish (3.1.2 docs)
http://bit.ly/eg312
Apache Maven
http://maven.apache.org
Groovy Magen Plugin
http://bit.ly/gmaven
Blog
http://blog.brunoborges.com.br
Obrigado
Bruno [email protected]@brunoborges
7/6/12
Click to edit the title text format
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline Level
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline Level