GlassFish e Maven: Java EE sem dor!

download GlassFish e Maven: Java EE sem dor!

If you can't read please download the document

Transcript of GlassFish e Maven: Java EE sem dor!

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