SlideShare uma empresa Scribd logo
Java EE com Apache
TomEE/TomEE+
Daniel Cunha (soro)
danielsoro@gmail.com
http://www.danielsoro.com.br
Daniel Cunha (soro)
soro – irc.freenode.net
http://danielsoro.com.br
http://github.com/danielsoro
http://twitter.com/dvlc_
danielsoro@gmail.com
Como tudo começou?
Como tudo começou?
● Tomcat
– Sem suporte a trasação
– Não dava suporte a pool de conexão
● Pools devem ser transacional
– Sem segurança integrada
– Sem suporte a JNDI globais
● java:module
● java:app
● java:global
– Sem suporte a @DataSourceDefinition
Como tudo começou?
– Sem @Resource
● UserTransaction
● BeanManager
● Validator
● ValidatorFactory
● Topic/Queue
● ConnectionFactory
– Sem @PersistenceUnit
– Sem @PersistenceContext
– Sem @Inject
– Sem @EJB
– Sem @WebService
Resolvendo o problema
Resolvendo o problema
● Incluindo API de jars no meu webapp
– JPA Api
– JSF Api
– etc
● Incluindo implementações no meu webapp
– Mojarra
– etc
● JPA e DataSource nada simples
– Muitos anos de: faça você mesmo.
– Faço do meu jeito [Nada de padrão]
As coisas não eram tão
simples.
OpenEJB
● Java Transaction API (JTA)
● Java Persistence API (JPA)
● Java Contexts and Dependency Injection (CDI)
● Java Authentication and Authorization Service
(JAAS)
● Java Authorization Contract for Containers
(JACC)
● JavaMail API
OpenEJB
● Bean Validation
● Enterprise JavaBeans
● Java API for RESTful Web Services (JAX-RS)
● Java API for XML Web Services (JAX-WS)
● Java EE Connector Architecture
● Java Messaging Service (JMS)
Mas, cadê a API de
Servlet?
Nada de JSP e JSF?
TOMCAT
Tomcat + OpenEJB
Mesmo assim, a
integração não era
transparente e fácil
Eu ainda precisava
adicionar o JSF.
JSR 316: Java Platform,
Enterprise Edition 6
(Java EE 6) Specification
Vamos implementar
Java EE
Reaproveitando o
passado
Apache OpenEJB e Apache TomEE nasceram a partir do mesmo projeto
e comunidade. Eles diferem em dois principais modo, apenas um deles
é técnico:
TomEE incorpora dois projetos adicionais; Tomcat e MyFaces
TomEE, como o nome, facilmente demontra é um conjuto de tecnologias
embutidas.
Efetivamente, TomEE é um superconjunto do OpenEJB. Eles
compartilham o mesmo código. TomEE surgiu do OpenEJB.
Tomcat + Java EE = TomEE
● Certificado Java EE 6 Web Profile
● Tomcat por completo
● Todos os componentes são da Apache
– MyFaces (JSF)
– OpenWebBeans (CDI)
– OpenEJB (EJB)
– OpenJPA (JPA)
– Bval (Bean Validation)
Valores do TomEE
● Ser pequeno
● Ser Tomcat
● Ser certificado
Status básicos
● Tamanho: todo o webprofile é apenas 24MB
● Uso de memória: requerimento muito pequeno,
passou no TCK sem alterar as configurações
de memória padrão da JVM
● Agilidade: o servidor pode passar por um ciclo
de start/deploy/test/undeploy/stop em 2-3
segundos, quando executado no modo
embedded.
Tomcat / TomEE
DEMO
Como contribuir?
public void contributeToOpenSource() {
boolean stillInterestedAndHavingFun = true;
int taskSize = 1; // start small!
contributing:
while (stillInterestedAndHavingFun) {
Task task = findSomethingInteresting(taskSize++);
if (!task.hasJira()) {
createJira(task);
} else {
requestToBeAssignedToJira(task.jiraId());
}
while (task.inProgress()) {
chatOnListALittleGetCleverIdeas(task, new Ideas(task));
hackALittle(task);
if (task.tooHard() || task.notFun()) {
// no big deal, try again with something else
taskSize--;
continue contributing;
}
}
File patchFile = createSvnOrGitPatch(task);
attachToJira(task.jiraId(), patchFile);
askForReviewOnList(task.jiraId());
while (!committed(patchFile)) {
try {
pokeAtSometingElse();
helpOnUserList();
dayDream();
} catch (MoreThanAWeekException e) {
// Assume it fell off the radar -- happens.
// Evidence we need more committers.
bumpThreadOnList(task);
}
}
}
}
Apache TomEE
● http://tomee.apache.org/
● http://tomee.apache.org/documentation.html
● http://tomee.apache.org/examples-trunk/index.html
● http://tomee.apache.org/support.html
● http://svn.apache.org/viewvc/tomee/tomee/trunk/
● #OpenEJB – irc.freenode.net
Perguntas?
Obrigado
Java EE com Apache
TomEE/TomEE+
Daniel Cunha (soro)
danielsoro@gmail.com
http://www.danielsoro.com.br

Mais conteúdo relacionado

Semelhante a Java ee com apache tom ee e tomee+ tdc - 2014

Java EE com Apache TomEE
Java EE com Apache TomEEJava EE com Apache TomEE
Java EE com Apache TomEE
Daniel Cunha
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScriptCarlos Santos
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Daniel Makiyama
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
Igo Coelho
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04Carlos Santos
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open source
Tiago Peczenyj
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com Hudson
Luis Reis
 
Desenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - IntroduçãoDesenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - Introdução
Fabio Moura Pereira
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Material - Play! Framework - UERN - Aula 01
Material - Play! Framework - UERN - Aula 01Material - Play! Framework - UERN - Aula 01
Material - Play! Framework - UERN - Aula 01
Allyson Barros
 
5 dicas simples de performance
5 dicas simples de performance5 dicas simples de performance
5 dicas simples de performanceCleber Dantas
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
Eduardo Bohrer
 
Twitter, Apache Camel e Enterprise Integration Patterns
Twitter, Apache Camel e Enterprise Integration PatternsTwitter, Apache Camel e Enterprise Integration Patterns
Twitter, Apache Camel e Enterprise Integration Patterns
Bruno Borges
 
Curso tomcat
Curso tomcatCurso tomcat
Curso tomcat
Miguel Vilaca
 
Como funciona a internet
Como funciona a internetComo funciona a internet
Como funciona a internet
Gustavo Zadrozny Leyendecker
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)Carlos Santos
 
Tutorial De Instalação Do Tomcat
Tutorial De Instalação Do TomcatTutorial De Instalação Do Tomcat
Tutorial De Instalação Do Tomcat
cleber da silva hensel
 
SpringSource Tool Suite, tc Server e dm Server
SpringSource Tool Suite, tc Server e dm ServerSpringSource Tool Suite, tc Server e dm Server
SpringSource Tool Suite, tc Server e dm Server
Dr. Spock
 

Semelhante a Java ee com apache tom ee e tomee+ tdc - 2014 (20)

Java EE com Apache TomEE
Java EE com Apache TomEEJava EE com Apache TomEE
Java EE com Apache TomEE
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open source
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com Hudson
 
Desenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - IntroduçãoDesenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - Introdução
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Material - Play! Framework - UERN - Aula 01
Material - Play! Framework - UERN - Aula 01Material - Play! Framework - UERN - Aula 01
Material - Play! Framework - UERN - Aula 01
 
5 dicas simples de performance
5 dicas simples de performance5 dicas simples de performance
5 dicas simples de performance
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Twitter, Apache Camel e Enterprise Integration Patterns
Twitter, Apache Camel e Enterprise Integration PatternsTwitter, Apache Camel e Enterprise Integration Patterns
Twitter, Apache Camel e Enterprise Integration Patterns
 
Curso tomcat
Curso tomcatCurso tomcat
Curso tomcat
 
Como funciona a internet
Como funciona a internetComo funciona a internet
Como funciona a internet
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
W2py pyconpe
W2py pyconpeW2py pyconpe
W2py pyconpe
 
Tutorial De Instalação Do Tomcat
Tutorial De Instalação Do TomcatTutorial De Instalação Do Tomcat
Tutorial De Instalação Do Tomcat
 
SpringSource Tool Suite, tc Server e dm Server
SpringSource Tool Suite, tc Server e dm ServerSpringSource Tool Suite, tc Server e dm Server
SpringSource Tool Suite, tc Server e dm Server
 

Último

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!
Jonathas Muniz
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 

Último (6)

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 

Java ee com apache tom ee e tomee+ tdc - 2014

  • 1. Java EE com Apache TomEE/TomEE+ Daniel Cunha (soro) danielsoro@gmail.com http://www.danielsoro.com.br
  • 2. Daniel Cunha (soro) soro – irc.freenode.net http://danielsoro.com.br http://github.com/danielsoro http://twitter.com/dvlc_ danielsoro@gmail.com
  • 4. Como tudo começou? ● Tomcat – Sem suporte a trasação – Não dava suporte a pool de conexão ● Pools devem ser transacional – Sem segurança integrada – Sem suporte a JNDI globais ● java:module ● java:app ● java:global – Sem suporte a @DataSourceDefinition
  • 5. Como tudo começou? – Sem @Resource ● UserTransaction ● BeanManager ● Validator ● ValidatorFactory ● Topic/Queue ● ConnectionFactory – Sem @PersistenceUnit – Sem @PersistenceContext – Sem @Inject – Sem @EJB – Sem @WebService
  • 7. Resolvendo o problema ● Incluindo API de jars no meu webapp – JPA Api – JSF Api – etc ● Incluindo implementações no meu webapp – Mojarra – etc ● JPA e DataSource nada simples – Muitos anos de: faça você mesmo. – Faço do meu jeito [Nada de padrão]
  • 8. As coisas não eram tão simples.
  • 9.
  • 10. OpenEJB ● Java Transaction API (JTA) ● Java Persistence API (JPA) ● Java Contexts and Dependency Injection (CDI) ● Java Authentication and Authorization Service (JAAS) ● Java Authorization Contract for Containers (JACC) ● JavaMail API
  • 11. OpenEJB ● Bean Validation ● Enterprise JavaBeans ● Java API for RESTful Web Services (JAX-RS) ● Java API for XML Web Services (JAX-WS) ● Java EE Connector Architecture ● Java Messaging Service (JMS)
  • 12. Mas, cadê a API de Servlet?
  • 13. Nada de JSP e JSF?
  • 16. Mesmo assim, a integração não era transparente e fácil
  • 18. JSR 316: Java Platform, Enterprise Edition 6 (Java EE 6) Specification
  • 21. Apache OpenEJB e Apache TomEE nasceram a partir do mesmo projeto e comunidade. Eles diferem em dois principais modo, apenas um deles é técnico: TomEE incorpora dois projetos adicionais; Tomcat e MyFaces TomEE, como o nome, facilmente demontra é um conjuto de tecnologias embutidas. Efetivamente, TomEE é um superconjunto do OpenEJB. Eles compartilham o mesmo código. TomEE surgiu do OpenEJB.
  • 22.
  • 23. Tomcat + Java EE = TomEE ● Certificado Java EE 6 Web Profile ● Tomcat por completo ● Todos os componentes são da Apache – MyFaces (JSF) – OpenWebBeans (CDI) – OpenEJB (EJB) – OpenJPA (JPA) – Bval (Bean Validation)
  • 24. Valores do TomEE ● Ser pequeno ● Ser Tomcat ● Ser certificado
  • 25. Status básicos ● Tamanho: todo o webprofile é apenas 24MB ● Uso de memória: requerimento muito pequeno, passou no TCK sem alterar as configurações de memória padrão da JVM ● Agilidade: o servidor pode passar por um ciclo de start/deploy/test/undeploy/stop em 2-3 segundos, quando executado no modo embedded.
  • 27. DEMO
  • 29. public void contributeToOpenSource() { boolean stillInterestedAndHavingFun = true; int taskSize = 1; // start small! contributing: while (stillInterestedAndHavingFun) { Task task = findSomethingInteresting(taskSize++); if (!task.hasJira()) { createJira(task); } else { requestToBeAssignedToJira(task.jiraId()); } while (task.inProgress()) { chatOnListALittleGetCleverIdeas(task, new Ideas(task)); hackALittle(task); if (task.tooHard() || task.notFun()) { // no big deal, try again with something else taskSize--; continue contributing; } } File patchFile = createSvnOrGitPatch(task); attachToJira(task.jiraId(), patchFile); askForReviewOnList(task.jiraId()); while (!committed(patchFile)) { try { pokeAtSometingElse(); helpOnUserList(); dayDream(); } catch (MoreThanAWeekException e) { // Assume it fell off the radar -- happens. // Evidence we need more committers. bumpThreadOnList(task); } } } }
  • 30. Apache TomEE ● http://tomee.apache.org/ ● http://tomee.apache.org/documentation.html ● http://tomee.apache.org/examples-trunk/index.html ● http://tomee.apache.org/support.html ● http://svn.apache.org/viewvc/tomee/tomee/trunk/ ● #OpenEJB – irc.freenode.net
  • 33. Java EE com Apache TomEE/TomEE+ Daniel Cunha (soro) danielsoro@gmail.com http://www.danielsoro.com.br