GlassFish e Maven:                           Java EE sem dorBruno Borgesbruno.borges@oracle.com   @brunoborges
Agenda GlassFish    História    Futuro Java EE    Versão 6    Futuro: Java EE 7 Apache Maven Embedded GlassFish Maven Plugin
GlassFish - História  Criado pela SUN em 2005  2006 (v1), RI do JEE 5      para desenvolvedores  2007 (v2), adicionou Clus...
GlassFish - História  V 3.1 – Fevereiro 2011      Load Balancing      Centralised Admin  V 3.1.1 – Julho 2011      Correçã...
GlassFish - Futuro  Versão 4.0 - Roadmap     Java EE 7     Suporte a virtualização     PaaS oriented
Java EE 6  Java EE 6 – JSR 316     Profiles     EJB 3.1     JSF 2.0     JSP 2.2     Servlets 3.0     JAX-RS     JAX-WS 2.2...
Java EE 6  As coisas boas do Java EE 6     Não precisa mais de web.xml     Melhora na API de Servlets para tratar FileUplo...
Do JEE6 para o JEE7
Java EE 7            Java EE 7
Java EE 7  EJB 3.2 – JSR 345     Suporte a multi-tenancy     Melhora no uso de anotações para simplificar o modelo de     ...
Java EE 7  JSF 2.2 – JSR 344     Mais fácil de criar componentes     HTML5  O mais esperado     JMS – Java Messaging Servi...
Apache Maven
Apache Maven  Ferramenta de build     Convention over configuration     Arquivos POMs     Repositório de artefatos     Plu...
Apache Maven  Principais Plugins para projetos Java EE 6     WAR plugin     EAR plugin     GlassFish Embedded Plugin     D...
WAR plugin  Cria um arquivo WAR de um projeto do tipo WAR                                             |-- pom.xml<project>...
Definição das dependências                                 <plugin>  Como controlar                   <groupId>org.apache....
EAR plugin     Cria um arquivo EAR de um projeto modularizado<plugin>                                        |--   pom.xml...
GlassFish Embedded plugin  Permite rodar o GlassFish (tanto Web quanto Full profile)    a partir do Maven      $ mvn embed...
GlassFish Embedded plugin  Permite iniciar ou parar uma instância remota ou local    (embedded)     $ mvn embedded-glassfi...
GlassFish Embedded plugin  Como configurar?     Artefatos no repositório central (#win o/)     Dependências necessárias e ...
GlassFish Embedded plugin  Como configurar?     Plugin     domain.xml (para DataSource e outras configurações de container...
Outros plugins interessantes  Dependency     Visualizar as dependencias        $ mvn dependency:tree     Copiar as depende...
Outros plugins interessantes  Assembly     Agregar artefatos e dependencias do projeto em um arquivo ou       diretório, p...
Outros plugins interessantes  GMaven - Groovy     Scripting no build usando linguagem Groovy         Em alguns servidores,...
Exemplo GMaven   <configuration>        <source>              new File("target").mkdir()              def sw = new FileWri...
Outros plugins interessantes  Archetype     Auxilia na definição de “esqueletos” de projetos reutilizáveis     Grandes emp...
Links  GlassFish                 @glassfish    http://www.glassfish.org  Embedded GlassFish (3.1.2 docs)    http://bit.ly/...
Obrigado            Bruno Borges           bruno.borges@oracle.com                @brunoborges
Upcoming SlideShare
Loading in …5
×

GlassFish e Maven: Java EE sem dor!

4,338 views

Published on

Aprenda um pouco sobre GlassFish, Java EE e também Apache Maven

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,338
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
45
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide
  • Aplicacoes isoladas Usuarios 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
  • Aplicacoes isoladas Usuarios 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
  • Aplicacoes isoladas Usuarios 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
  • GlassFish e Maven: Java EE sem dor!

    1. 1. GlassFish e Maven: Java EE sem dorBruno Borgesbruno.borges@oracle.com @brunoborges
    2. 2. Agenda GlassFish História Futuro Java EE Versão 6 Futuro: Java EE 7 Apache Maven Embedded GlassFish Maven Plugin
    3. 3. GlassFish - História Criado pela SUN em 2005 2006 (v1), RI do JEE 5 para desenvolvedores 2007 (v2), adicionou Clustering e outras funções para enterprise 2009, (v3) RI do JEE 6 Nova arquitetura (OSGi, fast- startup, etc)
    4. 4. GlassFish - História V 3.1 – Fevereiro 2011 Load Balancing Centralised Admin V 3.1.1 – Julho 2011 Correção de bugs V 3.1.2 – Fevereiro 2012 Correção de bugs Novo console administrativo Melhorias no Thread Pool Transaction Recovery
    5. 5. GlassFish - Futuro Versão 4.0 - Roadmap Java EE 7 Suporte a virtualização PaaS oriented
    6. 6. Java EE 6 Java EE 6 – JSR 316 Profiles 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
    7. 7. Java EE 6 As coisas boas do Java EE 6 Não precisa mais de web.xml Melhora na API de Servlets para tratar FileUpload Validation (JSR 303) no JPA EJB do jeito que todo mundo queria Não precisa mais de um ejb-jar.xml Anotações @Singleton e @Startup beans @Schedule beans methods Operações assíncronas
    8. 8. Do JEE6 para o JEE7
    9. 9. Java EE 7 Java EE 7
    10. 10. Java EE 7 EJB 3.2 – JSR 345 Suporte a multi-tenancy Melhora no uso de anotações para simplificar o modelo de programação Alinhamento com outras especificações como CDI, JMS e BeanValidation Servlet 3.1 – JSR 340 Suporte a WebSockets JPA 2.1 – JSR 338 Introdução da interface StoredProcedureQuery
    11. 11. Java EE 7 JSF 2.2 – JSR 344 Mais fácil de criar componentes HTML5 O mais esperado JMS – Java Messaging Service 2.0 – JSR 343 Melhora no modelo de programação Integração com CDI Mudanças na API para permitir maior integração entre vendors de JMS com qualquer container JEE
    12. 12. Apache Maven
    13. 13. Apache Maven Ferramenta de build Convention over configuration Arquivos POMs Repositório de artefatos Plugins Perfeito para Integração Contínua Aceleração na ambientação de novos desenvolvedores
    14. 14. Apache Maven Principais Plugins para projetos Java EE 6 WAR plugin EAR plugin GlassFish Embedded Plugin Dependency plugin Assembly plugin Groovy Maven Plugin Archetype Plugin
    15. 15. WAR plugin Cria um arquivo WAR de um projeto do tipo WAR |-- pom.xml<project> `-- src `-- main <groupId>com.myproject</groupId> |-- java <artifactId>myproject</artifactId> | `-- com <packaging>war</packaging> | `-- example <version>1.0-SNAPSHOT</version> | `-- projects | `-- SampleAction.java <build> |-- resources <plugins> | `-- images <plugin> | `-- sampleimage.jpg <groupId>org.apache.maven.plugins</groupId> `-- webapp <artifactId>maven-war-plugin</artifactId> |-- WEB-INF <version>2.2</version> | `-- web.xml <configuration> |-- index.jsp <failOnMissingWebXml>false</failOnMissingWebXml> `-- jsp </configuration> `-- websource.jsp </plugin> </plugins> </build></project> $ mvn package //ou entao// $ mvn compile war:war $ mvn war:exploded
    16. 16. Definição das dependências <plugin> Como controlar <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> quais dependências <version>2.2</version> <configuration> vão para o MANIFEST <archive> <manifest> e/ou para o WEB-INF <addClasspath>true</addClasspath> </manifest> /lib ? </archive> </configuration> </plugin> default vai para o MANIFEST, e no WEB-INF/lib <optional>true</optional> vai para o MANIFEST, mas não no WEB-INF/lib <scope>provided</scope> não vai para o MANIFEST, nem para o WEB-INF/lib
    17. 17. EAR plugin Cria um arquivo EAR de um projeto modularizado<plugin> |-- pom.xml <groupId>org.apache.maven.plugins</groupId> |-- module-ear <artifactId>maven-ear-plugin</artifactId> | `-- pom.xml <version>2.7</version> |-- module-ejb</plugin> | |-- pom.xml | `-- src | `-- main | |-- java | | `-- com | | `-- myproject <configuration> | | `-- MyStatelessBean.java <modules> `-- module-web <ejbModule> |-- pom.xml <groupId>com.myproject</groupId> `-- src <artifactId>module-ejb</artifactId> `-- main </ejbModule> |-- java <webModule> |-- resources <groupId>com.myproject</groupId> `-- webapp <artifactId>module-web</artifactId> <contextRoot>myproject</contextRoot> </webModule> </modules> </configuration>
    18. 18. 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 instância remota $ mvn embedded-glassfish:deploy $ mvn embedded-glassfish:undeploy
    19. 19. GlassFish Embedded plugin Permite iniciar ou parar uma instância remota ou local (embedded) $ mvn embedded-glassfish:start $ mvn embedded-glassfish:stop Permite administrar uma instância remote ou local (embedded) $ mvn embedded-glassfish:admin
    20. 20. GlassFish Embedded plugin Como configurar? Artefatos no repositório central (#win o/) Dependências necessárias e seus escopos <dependency> <groupId>org.glassfish.main.extras</groupId> <artifactId>glassfish-embedded-all</artifactId> <!-- ou web para projetos q nao usam todo o profile JEE --> <version>3.1.2</version> <scope>test</scope> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>6.0</version> <scope>provided</scope> </dependency>
    21. 21. GlassFish Embedded plugin Como configurar? Plugin domain.xml (para DataSource e outras configurações de container) <plugin> <groupId>org.glassfish.embedded</groupId> <artifactId>maven-embedded-glassfish-plugin</artifactId> <version>3.1.2</version> <configuration> <goalPrefix>embedded-glassfish</goalPrefix> <configFile>src/test/resources/domain.xml</configFile> <contextRoot>/</contextRoot> <app>${project.build.directory}/${build.finalName}.war</app> <port>8080</port> <autoDelete>true</autoDelete> </configuration> </plugin>
    22. 22. Outros plugins interessantes Dependency Visualizar as dependencias $ mvn dependency:tree Copiar as dependencias para algum diretório $ mvn dependency:copy-dependencies Criar um ClassPath $ mvn dependency:build-classpath Modo offline $ mvn dependency:go-offline
    23. 23. Outros plugins interessantes Assembly Agregar artefatos e dependencias do projeto em um arquivo ou diretório, por exemplo: Criar um ZIP com todas as dependências Criar um ZIP com todos os fontes Criar um JAR (big-fat) executável <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.3</version> </plugin>
    24. 24. Outros plugins interessantes GMaven - Groovy Scripting no build usando linguagem Groovy Em alguns servidores, pode ser necessário criar arquivos XML específicos (como deployment descriptors) Com o GMaven, é mais fácil de gerar esses arquivos <plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <version>1.3</version> </plugin>
    25. 25. Exemplo GMaven <configuration> <source> 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) } } </source> </configuration>
    26. 26. Outros plugins interessantes Archetype Auxilia na definição de “esqueletos” de projetos reutilizáveis Grandes empresas podem se beneficiar, quando possuem arquitetura padrão para todos os projetos
    27. 27. 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
    28. 28. Obrigado Bruno Borges bruno.borges@oracle.com @brunoborges

    ×