Successfully reported this slideshow.
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,497 views

Published on

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

Published in: Technology
  • Be the first to comment

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

×