SlideShare a Scribd company logo
1 of 33
Download to read offline
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

More Related Content

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

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 - JavaScript
Carlos Santos
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
Carlos Santos
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
Igor Sobreira
 
5 dicas simples de performance
5 dicas simples de performance5 dicas simples de performance
5 dicas simples de performance
Cleber Dantas
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
Carlos Santos
 

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

Recently uploaded

Recently uploaded (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

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