Download as pdf or txt
Download as pdf or txt
You are on page 1of 49

1 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

GlassFish, Maven, Cloud e o futuro do Java EE


Bruno Borges | Fusion Middleware | Product Management
2 bruno.borges@oracle.com
Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
The following is intended to outline our general product direction.
It is intended for information purposes only, and may not be
incorporated into any contract. It is not a commitment to deliver
any material, code, or functionality, and should not be relied
upon in making purchasing decisions. The development,
release, and timing of any features or functionality described for
Oracle’s products remains at the sole discretion of Oracle.

3 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Agenda
● Java EE
– Versão 6
– Futuro: Java EE 7
● GlassFish
– História
– Futuro
● Apache Maven
● Embedded GlassFish Maven Plugin

4 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


O que o mercado procura?

5 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Spring vs Java EE ?

● Java EE evoluiu graças ao Spring


● Full e Web profiles – lightweight!
● Spring utiliza recursos EE
● Java as a language / Java as a platform
● Java EE as a platform / Java EE as a framework

6 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Desenvolvimento Moderno com Java EE 6
Flexível & Leve Estensível

• API Java EE mais enxuta • Integre frameworks open source


• DI (Dependency Injection) • Habilite a instalação “Drag & Drop”
agora é um padrão Java EE de frameworks open source
• Manipule cenários simples e • Extensões padrões para DI não
complexos sem dependências criam mais lock-ins proprietários
externas
Produtividade no
Desenvolvimento

• Modelo de programação em POJOs


• Mais anotações, melhor suporte de IDE
• Menos config. XML, mais convenções
• Anotações e não deployment descriptors

7 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Mais produtividade, menos código: Java EE 6

25% 50% 80%


Menos Classes Menos Linhas Menos Linhas
Java* de Código* de XML*

• Menos XML, Menos Código • Simplificação, Produtividade • Modernização


• Java Server Faces 2.0 • Managed Beans 1.0 • Context & Dependency
• Java Servlets 3.0 • Bean Validation 1.0 Injection 1.0
• Java Persistence 2.0 • JAX-WS 2.2 • Bean Validation 1.0
• Enterprise Java Beans 3.1 • Java API for RESTful
& Interceptors 1.1 Web Services

* Baseado em um aplicativo criado no JavaOne usando POJO / JPA / REST

8 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


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

9 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


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
– CDI @Inject #FWT \o/

10 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Java EE 6


As coisas boas do Java EE 6
– EJB do jeito que todo mundo queria

Não precisa mais de um ejb-jar.xml

Anotações

@Singleton e @Startup beans

@Schedule bean's methods

Operações assíncronas

11 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Do JEE 6 para o JEE 7

12 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


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 programação
– Alinhamento com outras especificações como CDI, JMS e
BeanValidation
● JPA 2.1 – JSR 338
– Introdução da interface StoredProcedureQuery

14 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Java EE 7
● Servlet 3.1 – JSR 340
– Suporte a WebSockets
● JSF 2.2 – JSR 344
– Mais fácil de criar componentes
– HTML5
– Novos componentes
– Mobile devices

15 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Java EE 7
O mais esperado (IMO)

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

“Cloud-friendly”: suporte a multi-tenancy e outras funcionalidades
relacinadas a Cloud

16 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Java EE 7
O mais esperado (IMO)

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

“Cloud-friendly”: suporte a multi-tenancy e outras funcionalidades
relacinadas a Cloud

17 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Java EE 7 – Plataforma ideal para Cloud

18 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Oracle GlassFish Server
Java EE 7
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)
20 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish - História

● V 3.1 – Fevereiro 2011


– Load Balancing
– Centralised Admin
● V 3.1.1 – Julho 2011
– Correção de bugs

21 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


GlassFish - História


V 3.1.2 – Fevereiro 2012
– Correção de bugs
– Novo console administrativo
– Melhorias no Thread Pool
– Transaction Recovery

22 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


GlassFish - Futuro


Versão 4.0 - Roadmap
– Java EE 7
– Suporte a virtualização
– PaaS oriented

23 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


GlassFish 4.0
Servidor de Aplicação Enterprise Ready
Referência de Implementação Java EE 7

24 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Migração simples do GlassFish para o Oracle
WebLogic 12c

25 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Desenvolvimento JEE + leve c/ WebLogic 12c
1GB

Melhoría de 2X à 6X do tamanho do download para
os desenvolvedores


Sem instaladores, faça unzip e inicie o uso dentro do
Windows, Linux ou OSX (Mac)
6X
318MB

Inicie uma instância com o parâmetro
-Dservertype=wlx
para carregar o WebLogic 168MB
12c sem os contêiners de EJB, JMS e JCA 2X

Faça download e utilize o produto sem custo
(estudos), sem chaves de ativação ou datas de
expiração dos produtos. Use a vasta documentação Distribuição 11g Distribuição 11g
(Formato Zip)
Distribuição 12c

online da Oracle

26 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


5
O que é?

• Projeto Open Source da Apache


• O Maven é:
– Um sistema de build automatizado +
– Um sistema de gestão de projetos +
– Um sistema para gerir dependências +
– Um sistema de descrição de projetos +
– Um sistema de geração de sites + ...

28 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Apache Maven
● Ferramenta de build
– Convention over configuration
– Arquivos POMs
– Repositório de artefatos
– Plugins

29 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Apache Maven
● Perfeito para
– Integração Contínua
– Aceleração na ambientação de novos desenvolvedores

30 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


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

31 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


WAR plugin
<project> |-- pom.xml
`-- src
<groupId>com.myproject</groupId> `-- main
<artifactId>myproject</artifactId> |-- java
<packaging>war</packaging> | `-- com
<version>1.0-SNAPSHOT</version> | `-- example
| `-- projects
<build> | `-- SampleAction.java
<plugins> |-- resources
<plugin> | `-- images
<groupId>org.apache.maven.plugins</groupId> | `-- sampleimage.jpg
<artifactId>maven-war-plugin </artifactId> `-- webapp
<version>2.2</version> |-- WEB-INF
<configuration> | `-- web.xml
<failOnMissingWebXml>false</failOnMissingWebXml> |-- index.jsp
</configuration> `-- jsp
</plugin> `-- websource.jsp
</plugins>
</build>
</project>

32 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


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>
– default </plugin>

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

33 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


EAR plugin |-- pom.xml
|-- module-ear
| `-- pom.xml
<plugin> |-- module-ejb
<groupId>org.apache.maven.plugins</groupId> | |-- pom.xml
<artifactId>maven-ear-plugin </artifactId> | `-- src
<version>2.7</version> | `-- main
</plugin> | |-- java
| | `-- com
<configuration> | | `-- myproject
<modules> | | `-- MyStatelessBean.java
<ejbModule> `-- module-web
<groupId>com.myproject</groupId> |-- pom.xml
<artifactId>module-ejb</artifactId> `-- src
`-- main
</ejbModule>
|-- java
<webModule> |-- resources
<groupId>com.myproject</groupId> `-- webapp
<artifactId>module-web</artifactId>
<contextRoot>myproject</contextRoot>
</webModule>
</modules>
</configuration>

34 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


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

35 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


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

36 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


GlassFish Embedded plugin
● Como configurar?
– Artefatos no repositório central (#win \o/)
– Dependências necessárias e seus escopos

37 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


GlassFish Embedded plugin
<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>

38 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


GlassFish Embedded plugin

● Como configurar?
– Plugin
– domain.xml (para DataSource e outras configurações de container)

39 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


GlassFish Embedded plugin

<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>

40 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


WebLogic também tem Maven Plugin

● Goals disponíveis:
– install
– create-domain
– start-server
– wlst
– appc
– deploy

41 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Integração com Servidores de IC

Servidor de
Integração
Repositório Contínua Servidor
do Código Compila &
WebLogic
Empacota
GlassFish
42 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
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

43 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


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>
44
<groupId>org.apache.maven.plugins</groupId>
Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
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>

45 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


Exemplo GMaven
<configuration> <source>
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>

46 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


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

47 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware


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

48 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

You might also like