SlideShare a Scribd company logo
1 of 69
David Blevins
Apache TomEE:
JavaEE 6 Web Profile on Tomcat
@dblevins
#TomEE
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
What is Apache TomEE?
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Tomcat + JavaEE = TomEE
• Java EE 6 Web Profile certified stack, pronounced “Tommy”
• Tomcat
• All Apache components
- OpenJPA
- OpenWebBeans
- OpenEJB
- MyFaces
- BeanVal
- CXF & ActiveMQ
• CoreValues
- Be Small
- Be Certified
- Be Tomcat
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
What is a
“Web Profile”?
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
The Web Profile
• Introduced in Java EE 6
• About half the specs as the Full Profile
- 12~ in the Web Profile
- 24~ in the Full Profile
• Legacy-free, contains no
- CMP EntityBeans
- CORBA
- JAX-RPC
• Missing some good stuff
- JAX-RS
- JAX-WS
- JMS
- Connectors (surprisingly useful)
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Flavors of TomEE
• Apache TomEE Web Profile (Java EE 6 Certified)
- JPA
- CDI
- EJB
- JSF
- BeanValidation
- JavaMail *
• Apache TomEE JAX-RS (Java EE 6 Certified) *NEW*
- JAX-RS
• Apache TomEE Plus (NOT Java EE 6 Certified)
- JAX-WS
- Connector
- JMS
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Demo
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
The Birth of TomEE
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Milestones
• October 2011 - JavaOne
- 1.0 beta release
- JavaEE 6 Web Profile Certified
• April 2012
- 1.0 final release <fast, fast, fast>
• October 2012 - JavaOne
- 1.5 release <filling gaps>
• April 2013
- 1.5.2 release <maturity>
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Website Traffic
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
User List Traffic
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Jelastic
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Jelastic
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
User Feedback
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
“There is also one point to note. TomEE is insanely fast! ”
-- Łukasz Budnik, CXF JAX-RS on Apache TomEE @ DZone
“From an architect that switched from <XXX> to Tomee. I can tell
you Tomee kicks <XXX>'s ass in every way. Memory, speed,
reliability, validation, you name it.”
-- Zeeman, User List
“If you are concerned about performance and footprint, but can
accept that you'll have to solve problems yourself, go TomEE.
(TomEE seems to be _much_ faster than <XXX>)”
-- Jonathan Fisher, User List
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
“An ideal fit for a private cloud.”
-- Rohid Dev, American Express
“We have completely replaced <XXX> with TomEE+ at my dept
and have no regrets.”
-- Miles Poindexter, Condé Nast
“It's an amazingly pure, stable and simple to manage JEE6 web
profile container.”
-- Pete Keys, Starbucks
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Making TomEE
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Files Added
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Files Modified
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Testing
• Our own tests (hour+)
- Arquillian based
- Each test run 4 to 5 times
• Certification Tests on Amazon EC2 (hundred+ machine
hours)
- t1.micro linux images, lot’s of them
- 100 spot instances going at once!
- Each has 613MB memory max
- Pass complete Web Profile TCK with default jvm memory (tiny!)
• Current certified OSs
- Amazon Linux AMI 2011.09, EBS boot, 32-bit EC2 t1.micro
- Amazon Linux AMI 2011.09, EBS boot, 32-bit EC2 m1.small
- Amazon Linux AMI 2011.09, EBS boot, 32-bit EC2 c1.medium
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Results
• Small
- 27MB zip
- 64MB memory
• Works with Tomcat tools (it is Tomcat)
- Eclipse, Netbeans, Intellij
- YourKit, JRebel, NewRelic, etc.....
• Tightly integrated
- All about the code you don’t write
• Hundreds of hours of testing
- Unit, Integration, Compliance
• Certified
- Java EE 6 Web Profile portability
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Doing itYourself
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Perils of doing it yourself
• Wasted time you could spend coding
• Actually slower, not faster
- Tomcat will scan all your jars
- ... so will your JSF implementation
- ... so will your CDI implementation
- ... so will your JAX-RS implementation
- ... so will your JPA implementation... and so on
• Bloated memory from duplicate classes
• Incomplete parts
- OpenJPA missing JTA/EXTENDED EntityManagers
- OpenWebBeans runs 60% of CDI TCK
- Tomcat has no “java:global/” JNDI, @DataSourceDefinition, and
more
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Perils of doing it yourself
• Incomplete integration
- connection, transaction, security propagation
- increased cohesion in specifications
• Get by with a little help from friends
- No way to share bug fixes
- If only there was community for Tomcat integration....
• Under Tested
- 1000s of integration tests required
- Each upgrade is a mystery
- If only there was a community for sharing tests....
• No portability
- Hard changing parts
- Even harder changing servers
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Arquillian
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
All your bugs
are belong to us
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
TomEE + Arquillian = Bliss
• TomEE Remote Adapter
- For separate running TomEE process
- Managed and Unmanaged
• TomEE Embedded Adapter
- Runs TomEE in the test, embedded
• Tomcat + TomEE.war file
- Start with a Tomcat install
- Deploys the TomEE.war
• OpenEJB Embedded Adapter
- Everything but Servlet, JSP, JSF
- Much Faster
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Maven
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
All programs evolve until
they can send email
-- Letts’ Law
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
tomee-maven-plugin
• Configure and setup servers from scratch
- download and unzip fresh server
- add, remove jars from <tomee>/libs/
- install config files
• Manage Server
- start, stop, restart
• Manage Applications
- download apps
- deploy, undeploy
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
tomee-maven-plugin
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Tools and Platforms
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Tuesday, June 4, 13
#TomEE @dblevins
Jelastic
35
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Validation
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Validation
• Compiler style handing of issues
• All issues reported in one deploy
• Avoid “inching along” cycles
• Save the user time
• Teach the user
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
OverworkedBean
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Business Interface
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Validation Results
FAIL ... OverworkedBean: Missing required "name" attribute on class-level @EJB usage
FAIL ... OverworkedBean: Missing required "beanInterface" attribute on class-level @EJB usage
FAIL ... OverworkedBean: Missing required "type" attribute on class-level @Resource usage
FAIL ... OverworkedBean: Mistaken use of @Resource on an EntityManager reference. Use @PersistenceConte
FAIL ... OverworkedBean: Mistaken use of @Resource on an EntityManagerFactory reference. Use @Persisten
WARN ... OverworkedBean: Ignoring @PostConstruct used on interface org.superbiz.Overworked method comeIn
WARN ... OverworkedBean: Ignoring @PreDestroy used on interface org.superbiz.Overworked method stayLater
WARN ... OverworkedBean: Ignoring @RolesAllowed used on interface org.superbiz.Overworked method doThisR
WARN ... OverworkedBean: Ignoring @TransactionAttribute used on interface org.superbiz.Overworked method
WARN ... OverworkedBean: Ignoring @TransactionAttribute used on interface org.superbiz.Overworked method
WARN ... OverworkedBean: @Remove is ignored for beans of type Stateless. Method: stayLater
WARN ... OverworkedBean: @Init is ignored for beans of type Stateless. Method: comeInEarly
WARN ... OverworkedBean: Corrected invalid injection-target-name: setMyNumber
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Configuration
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Tomcat Options
•No rip and replace
• System Level
- conf/server.xml
• App Level
- META-INF/context.xml
• Standard configuration options still work
- Resources available too all components: EJBs, CDI, JSF
• Connection pooling still not JTA aware!
• All Security done with Tomcat Realms
- EJB security
- WebService Security
- Use your custom Realm implementation
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Additional Options
• System Level
- conf/tomee.xml
- conf/system.properties
• Process Level
- plain -D properties
• App Level
- META-INF/context.xml
- META-INF/resources.xml
- META-INF/application.properties
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
conf/tomee.xml
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Not Case-Sensitive
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Be as Brief as you Want
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
...really
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
...really brief
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Human Readable Durations
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Comments Welcome
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Do it in the App
• META-INF/resources.xml
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Hate XML?
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
conf/system.properties
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Plain Java Properties
• JAVA_OPTS in a script
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Mixed
• conf/tomee.xml
• META-INF/resources.xml
• JAVA_OPTS in a script
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Extending
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Extending (configuration)
• META-INF/resources.xml
• Injectable via @Resource
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Extending (runtime events)
• CDI-style @Observes
• Registered via <Service> in META-INF/resources.xml
• Not quite CDI (yet)
• 27 client-side events
• 12 server-side events
• more events coming...
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Failover Client-Side Events
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Management and
Monitoring
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Management and Monitoring
• JMX
- Webapp JMX deployment / apps (Tomcat)
- EJB Servers / Containers / Invocation stats (OpenEJB)
- JMS Topic / Queue / Subscriber / Broker (ActiveMQ)
- PersistenceUnit redeploy
- Database Pools
- Discovered servers / peers
- more coming...
• REST (soon)
- Just idea at this point
- Tiny bit available via ‘tomee’ console
- Would be great to have REST equivalents of all JMX beans
Tuesday, June 4, 13
#TomEE @dblevins63
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Tuning
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Scanning
• META-INF/scan.xml
• Usable in any jar
• Speeds loading of large jars
• Match packages
• Match classes
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Clust...^H...
Cloud Features
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Cloud
• Existing
- Super tiny size
- Certified on EC2 t1.micro, m1.small, c1.medium
- TCP and UDP server discovery
- Standard Tomcat clustering... er... cloudstering
- EJB client load-balancing and failover (stateless)
- Maven based provisioning
• Desired
- Multi-server console w/ monitoring and deployment
- Queue based auto-scaling (add/remove nodes)
- Cloud scoped @Singletons
- Cloud-wide @Observers and Events
- Cloud-wide Timers and @Schedule methods
- Amazon BeanStalk w/ TomEE
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
Cloud Feature Requests?
Tuesday, June 4, 13
Apache #TomEE - #JavaEE on #Tomcat / @dblevins
thank you!
tomee.apache.org
@dblevins
dblevins@apache.org
Tuesday, June 4, 13

More Related Content

What's hot

Roy foubister (hosting high traffic sites on a tight budget)
Roy foubister (hosting high traffic sites on a tight budget)Roy foubister (hosting high traffic sites on a tight budget)
Roy foubister (hosting high traffic sites on a tight budget)
WordCamp Cape Town
 

What's hot (11)

Java
JavaJava
Java
 
Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!
 
Mastering Maven 2.0 In 1 Hour V1.3
Mastering Maven 2.0 In 1 Hour V1.3Mastering Maven 2.0 In 1 Hour V1.3
Mastering Maven 2.0 In 1 Hour V1.3
 
The MetaCPAN VM for Dummies Part One (Installation)
The MetaCPAN VM for Dummies Part One (Installation)The MetaCPAN VM for Dummies Part One (Installation)
The MetaCPAN VM for Dummies Part One (Installation)
 
Scaling the Britain's Got Talent Buzzer
Scaling the Britain's Got Talent BuzzerScaling the Britain's Got Talent Buzzer
Scaling the Britain's Got Talent Buzzer
 
CollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesCollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPages
 
Pinto+Stratopan+Love
Pinto+Stratopan+LovePinto+Stratopan+Love
Pinto+Stratopan+Love
 
Carrying Enterprise on a Little Camel
Carrying Enterprise on a Little CamelCarrying Enterprise on a Little Camel
Carrying Enterprise on a Little Camel
 
Roy foubister (hosting high traffic sites on a tight budget)
Roy foubister (hosting high traffic sites on a tight budget)Roy foubister (hosting high traffic sites on a tight budget)
Roy foubister (hosting high traffic sites on a tight budget)
 
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages HeavenIBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
 
PHP Conference - Phalcon hands-on
PHP Conference - Phalcon hands-onPHP Conference - Phalcon hands-on
PHP Conference - Phalcon hands-on
 

Viewers also liked (6)

Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Python
 
The Java EE 6 platform
The Java EE 6 platformThe Java EE 6 platform
The Java EE 6 platform
 
How to Test Enterprise Java Applications
How to Test Enterprise Java ApplicationsHow to Test Enterprise Java Applications
How to Test Enterprise Java Applications
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
Lessons learned: Use of Modern JVM Languages besides Java - JavaOne 2012
Lessons learned: Use of Modern JVM Languages besides Java - JavaOne 2012Lessons learned: Use of Modern JVM Languages besides Java - JavaOne 2012
Lessons learned: Use of Modern JVM Languages besides Java - JavaOne 2012
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 

Similar to Apache TomEE, Java EE 6 Web Profile on Tomcat - David Blevins

From Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEFrom Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEE
jaxconf
 
01 web-apps
01 web-apps01 web-apps
01 web-apps
snopteck
 
Apache Tomcat + Java EE = Apache TomEE
Apache Tomcat + Java EE = Apache TomEEApache Tomcat + Java EE = Apache TomEE
Apache Tomcat + Java EE = Apache TomEE
Jacek Laskowski
 
TriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingToolsTriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingTools
Yury Chemerkin
 
01 overview-and-setup
01 overview-and-setup01 overview-and-setup
01 overview-and-setup
snopteck
 

Similar to Apache TomEE, Java EE 6 Web Profile on Tomcat - David Blevins (20)

From Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEFrom Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEE
 
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 Potsdam
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 PotsdamFrom Zero to Performance Hero in Minutes - Agile Testing Days 2014 Potsdam
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 Potsdam
 
Eliminating the Pauses in your Java Application
Eliminating the Pauses in your Java ApplicationEliminating the Pauses in your Java Application
Eliminating the Pauses in your Java Application
 
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJava EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
 
Fastest Servlets in the West
Fastest Servlets in the WestFastest Servlets in the West
Fastest Servlets in the West
 
App Engine Meetup
App Engine MeetupApp Engine Meetup
App Engine Meetup
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby Conference
 
01 web-apps
01 web-apps01 web-apps
01 web-apps
 
01 web-apps
01 web-apps01 web-apps
01 web-apps
 
Apache Tomcat + Java EE = Apache TomEE
Apache Tomcat + Java EE = Apache TomEEApache Tomcat + Java EE = Apache TomEE
Apache Tomcat + Java EE = Apache TomEE
 
BACKFiL Finding Files you left on the server
BACKFiL Finding Files you left on the serverBACKFiL Finding Files you left on the server
BACKFiL Finding Files you left on the server
 
Load-testing 101 for Startups with Artillery.io
Load-testing 101 for Startups with Artillery.ioLoad-testing 101 for Startups with Artillery.io
Load-testing 101 for Startups with Artillery.io
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009
 
Ab(Using) the MetaCPAN API for Fun and Profit v2013
Ab(Using) the MetaCPAN API for Fun and Profit v2013Ab(Using) the MetaCPAN API for Fun and Profit v2013
Ab(Using) the MetaCPAN API for Fun and Profit v2013
 
TriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingToolsTriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingTools
 
Better Code through TDD
Better Code through TDDBetter Code through TDD
Better Code through TDD
 
Apache TomEE - Tomcat with a kick
Apache TomEE  - Tomcat with a kickApache TomEE  - Tomcat with a kick
Apache TomEE - Tomcat with a kick
 
01 overview-and-setup
01 overview-and-setup01 overview-and-setup
01 overview-and-setup
 
Debugging rails
Debugging railsDebugging rails
Debugging rails
 
JavaOne 2013 - Apache TomEE, Java EE Web Profile {and more} on Tomcat
JavaOne 2013 - Apache TomEE, Java EE Web Profile {and more} on TomcatJavaOne 2013 - Apache TomEE, Java EE Web Profile {and more} on Tomcat
JavaOne 2013 - Apache TomEE, Java EE Web Profile {and more} on Tomcat
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

Apache TomEE, Java EE 6 Web Profile on Tomcat - David Blevins

  • 1. David Blevins Apache TomEE: JavaEE 6 Web Profile on Tomcat @dblevins #TomEE Tuesday, June 4, 13
  • 2. Apache #TomEE - #JavaEE on #Tomcat / @dblevins What is Apache TomEE? Tuesday, June 4, 13
  • 3. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Tomcat + JavaEE = TomEE • Java EE 6 Web Profile certified stack, pronounced “Tommy” • Tomcat • All Apache components - OpenJPA - OpenWebBeans - OpenEJB - MyFaces - BeanVal - CXF & ActiveMQ • CoreValues - Be Small - Be Certified - Be Tomcat Tuesday, June 4, 13
  • 4. Apache #TomEE - #JavaEE on #Tomcat / @dblevins What is a “Web Profile”? Tuesday, June 4, 13
  • 5. Apache #TomEE - #JavaEE on #Tomcat / @dblevins The Web Profile • Introduced in Java EE 6 • About half the specs as the Full Profile - 12~ in the Web Profile - 24~ in the Full Profile • Legacy-free, contains no - CMP EntityBeans - CORBA - JAX-RPC • Missing some good stuff - JAX-RS - JAX-WS - JMS - Connectors (surprisingly useful) Tuesday, June 4, 13
  • 6. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Flavors of TomEE • Apache TomEE Web Profile (Java EE 6 Certified) - JPA - CDI - EJB - JSF - BeanValidation - JavaMail * • Apache TomEE JAX-RS (Java EE 6 Certified) *NEW* - JAX-RS • Apache TomEE Plus (NOT Java EE 6 Certified) - JAX-WS - Connector - JMS Tuesday, June 4, 13
  • 7. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Demo Tuesday, June 4, 13
  • 8. Apache #TomEE - #JavaEE on #Tomcat / @dblevins The Birth of TomEE Tuesday, June 4, 13
  • 9. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Milestones • October 2011 - JavaOne - 1.0 beta release - JavaEE 6 Web Profile Certified • April 2012 - 1.0 final release <fast, fast, fast> • October 2012 - JavaOne - 1.5 release <filling gaps> • April 2013 - 1.5.2 release <maturity> Tuesday, June 4, 13
  • 10. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Website Traffic Tuesday, June 4, 13
  • 11. Apache #TomEE - #JavaEE on #Tomcat / @dblevins User List Traffic Tuesday, June 4, 13
  • 12. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Jelastic Tuesday, June 4, 13
  • 13. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Jelastic Tuesday, June 4, 13
  • 14. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Tuesday, June 4, 13
  • 15. Apache #TomEE - #JavaEE on #Tomcat / @dblevins User Feedback Tuesday, June 4, 13
  • 16. Apache #TomEE - #JavaEE on #Tomcat / @dblevins “There is also one point to note. TomEE is insanely fast! ” -- Łukasz Budnik, CXF JAX-RS on Apache TomEE @ DZone “From an architect that switched from <XXX> to Tomee. I can tell you Tomee kicks <XXX>'s ass in every way. Memory, speed, reliability, validation, you name it.” -- Zeeman, User List “If you are concerned about performance and footprint, but can accept that you'll have to solve problems yourself, go TomEE. (TomEE seems to be _much_ faster than <XXX>)” -- Jonathan Fisher, User List Tuesday, June 4, 13
  • 17. Apache #TomEE - #JavaEE on #Tomcat / @dblevins “An ideal fit for a private cloud.” -- Rohid Dev, American Express “We have completely replaced <XXX> with TomEE+ at my dept and have no regrets.” -- Miles Poindexter, Condé Nast “It's an amazingly pure, stable and simple to manage JEE6 web profile container.” -- Pete Keys, Starbucks Tuesday, June 4, 13
  • 18. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Making TomEE Tuesday, June 4, 13
  • 19. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Files Added Tuesday, June 4, 13
  • 20. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Files Modified Tuesday, June 4, 13
  • 21. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Testing • Our own tests (hour+) - Arquillian based - Each test run 4 to 5 times • Certification Tests on Amazon EC2 (hundred+ machine hours) - t1.micro linux images, lot’s of them - 100 spot instances going at once! - Each has 613MB memory max - Pass complete Web Profile TCK with default jvm memory (tiny!) • Current certified OSs - Amazon Linux AMI 2011.09, EBS boot, 32-bit EC2 t1.micro - Amazon Linux AMI 2011.09, EBS boot, 32-bit EC2 m1.small - Amazon Linux AMI 2011.09, EBS boot, 32-bit EC2 c1.medium Tuesday, June 4, 13
  • 22. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Results • Small - 27MB zip - 64MB memory • Works with Tomcat tools (it is Tomcat) - Eclipse, Netbeans, Intellij - YourKit, JRebel, NewRelic, etc..... • Tightly integrated - All about the code you don’t write • Hundreds of hours of testing - Unit, Integration, Compliance • Certified - Java EE 6 Web Profile portability Tuesday, June 4, 13
  • 23. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Doing itYourself Tuesday, June 4, 13
  • 24. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Perils of doing it yourself • Wasted time you could spend coding • Actually slower, not faster - Tomcat will scan all your jars - ... so will your JSF implementation - ... so will your CDI implementation - ... so will your JAX-RS implementation - ... so will your JPA implementation... and so on • Bloated memory from duplicate classes • Incomplete parts - OpenJPA missing JTA/EXTENDED EntityManagers - OpenWebBeans runs 60% of CDI TCK - Tomcat has no “java:global/” JNDI, @DataSourceDefinition, and more Tuesday, June 4, 13
  • 25. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Perils of doing it yourself • Incomplete integration - connection, transaction, security propagation - increased cohesion in specifications • Get by with a little help from friends - No way to share bug fixes - If only there was community for Tomcat integration.... • Under Tested - 1000s of integration tests required - Each upgrade is a mystery - If only there was a community for sharing tests.... • No portability - Hard changing parts - Even harder changing servers Tuesday, June 4, 13
  • 26. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Arquillian Tuesday, June 4, 13
  • 27. Apache #TomEE - #JavaEE on #Tomcat / @dblevins All your bugs are belong to us Tuesday, June 4, 13
  • 28. Apache #TomEE - #JavaEE on #Tomcat / @dblevins TomEE + Arquillian = Bliss • TomEE Remote Adapter - For separate running TomEE process - Managed and Unmanaged • TomEE Embedded Adapter - Runs TomEE in the test, embedded • Tomcat + TomEE.war file - Start with a Tomcat install - Deploys the TomEE.war • OpenEJB Embedded Adapter - Everything but Servlet, JSP, JSF - Much Faster Tuesday, June 4, 13
  • 29. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Maven Tuesday, June 4, 13
  • 30. Apache #TomEE - #JavaEE on #Tomcat / @dblevins All programs evolve until they can send email -- Letts’ Law Tuesday, June 4, 13
  • 31. Apache #TomEE - #JavaEE on #Tomcat / @dblevins tomee-maven-plugin • Configure and setup servers from scratch - download and unzip fresh server - add, remove jars from <tomee>/libs/ - install config files • Manage Server - start, stop, restart • Manage Applications - download apps - deploy, undeploy Tuesday, June 4, 13
  • 32. Apache #TomEE - #JavaEE on #Tomcat / @dblevins tomee-maven-plugin Tuesday, June 4, 13
  • 33. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Tools and Platforms Tuesday, June 4, 13
  • 34. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Tuesday, June 4, 13
  • 36. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Validation Tuesday, June 4, 13
  • 37. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Validation • Compiler style handing of issues • All issues reported in one deploy • Avoid “inching along” cycles • Save the user time • Teach the user Tuesday, June 4, 13
  • 38. Apache #TomEE - #JavaEE on #Tomcat / @dblevins OverworkedBean Tuesday, June 4, 13
  • 39. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Business Interface Tuesday, June 4, 13
  • 40. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Validation Results FAIL ... OverworkedBean: Missing required "name" attribute on class-level @EJB usage FAIL ... OverworkedBean: Missing required "beanInterface" attribute on class-level @EJB usage FAIL ... OverworkedBean: Missing required "type" attribute on class-level @Resource usage FAIL ... OverworkedBean: Mistaken use of @Resource on an EntityManager reference. Use @PersistenceConte FAIL ... OverworkedBean: Mistaken use of @Resource on an EntityManagerFactory reference. Use @Persisten WARN ... OverworkedBean: Ignoring @PostConstruct used on interface org.superbiz.Overworked method comeIn WARN ... OverworkedBean: Ignoring @PreDestroy used on interface org.superbiz.Overworked method stayLater WARN ... OverworkedBean: Ignoring @RolesAllowed used on interface org.superbiz.Overworked method doThisR WARN ... OverworkedBean: Ignoring @TransactionAttribute used on interface org.superbiz.Overworked method WARN ... OverworkedBean: Ignoring @TransactionAttribute used on interface org.superbiz.Overworked method WARN ... OverworkedBean: @Remove is ignored for beans of type Stateless. Method: stayLater WARN ... OverworkedBean: @Init is ignored for beans of type Stateless. Method: comeInEarly WARN ... OverworkedBean: Corrected invalid injection-target-name: setMyNumber Tuesday, June 4, 13
  • 41. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Configuration Tuesday, June 4, 13
  • 42. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Tomcat Options •No rip and replace • System Level - conf/server.xml • App Level - META-INF/context.xml • Standard configuration options still work - Resources available too all components: EJBs, CDI, JSF • Connection pooling still not JTA aware! • All Security done with Tomcat Realms - EJB security - WebService Security - Use your custom Realm implementation Tuesday, June 4, 13
  • 43. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Additional Options • System Level - conf/tomee.xml - conf/system.properties • Process Level - plain -D properties • App Level - META-INF/context.xml - META-INF/resources.xml - META-INF/application.properties Tuesday, June 4, 13
  • 44. Apache #TomEE - #JavaEE on #Tomcat / @dblevins conf/tomee.xml Tuesday, June 4, 13
  • 45. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Not Case-Sensitive Tuesday, June 4, 13
  • 46. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Be as Brief as you Want Tuesday, June 4, 13
  • 47. Apache #TomEE - #JavaEE on #Tomcat / @dblevins ...really Tuesday, June 4, 13
  • 48. Apache #TomEE - #JavaEE on #Tomcat / @dblevins ...really brief Tuesday, June 4, 13
  • 49. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Human Readable Durations Tuesday, June 4, 13
  • 50. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Comments Welcome Tuesday, June 4, 13
  • 51. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Do it in the App • META-INF/resources.xml Tuesday, June 4, 13
  • 52. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Hate XML? Tuesday, June 4, 13
  • 53. Apache #TomEE - #JavaEE on #Tomcat / @dblevins conf/system.properties Tuesday, June 4, 13
  • 54. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Plain Java Properties • JAVA_OPTS in a script Tuesday, June 4, 13
  • 55. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Mixed • conf/tomee.xml • META-INF/resources.xml • JAVA_OPTS in a script Tuesday, June 4, 13
  • 56. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Extending Tuesday, June 4, 13
  • 57. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Extending (configuration) • META-INF/resources.xml • Injectable via @Resource Tuesday, June 4, 13
  • 58. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Extending (runtime events) • CDI-style @Observes • Registered via <Service> in META-INF/resources.xml • Not quite CDI (yet) • 27 client-side events • 12 server-side events • more events coming... Tuesday, June 4, 13
  • 59. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Tuesday, June 4, 13
  • 60. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Failover Client-Side Events Tuesday, June 4, 13
  • 61. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Management and Monitoring Tuesday, June 4, 13
  • 62. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Management and Monitoring • JMX - Webapp JMX deployment / apps (Tomcat) - EJB Servers / Containers / Invocation stats (OpenEJB) - JMS Topic / Queue / Subscriber / Broker (ActiveMQ) - PersistenceUnit redeploy - Database Pools - Discovered servers / peers - more coming... • REST (soon) - Just idea at this point - Tiny bit available via ‘tomee’ console - Would be great to have REST equivalents of all JMX beans Tuesday, June 4, 13
  • 64. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Tuning Tuesday, June 4, 13
  • 65. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Scanning • META-INF/scan.xml • Usable in any jar • Speeds loading of large jars • Match packages • Match classes Tuesday, June 4, 13
  • 66. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Clust...^H... Cloud Features Tuesday, June 4, 13
  • 67. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Cloud • Existing - Super tiny size - Certified on EC2 t1.micro, m1.small, c1.medium - TCP and UDP server discovery - Standard Tomcat clustering... er... cloudstering - EJB client load-balancing and failover (stateless) - Maven based provisioning • Desired - Multi-server console w/ monitoring and deployment - Queue based auto-scaling (add/remove nodes) - Cloud scoped @Singletons - Cloud-wide @Observers and Events - Cloud-wide Timers and @Schedule methods - Amazon BeanStalk w/ TomEE Tuesday, June 4, 13
  • 68. Apache #TomEE - #JavaEE on #Tomcat / @dblevins Cloud Feature Requests? Tuesday, June 4, 13
  • 69. Apache #TomEE - #JavaEE on #Tomcat / @dblevins thank you! tomee.apache.org @dblevins dblevins@apache.org Tuesday, June 4, 13