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

Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!WordCamp Cape Town
 
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.3Matthew McCullough
 
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)Olaf Alders
 
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 BuzzerMalcolm Box
 
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 XPagesJesse Gallagher
 
Carrying Enterprise on a Little Camel
Carrying Enterprise on a Little CamelCarrying Enterprise on a Little Camel
Carrying Enterprise on a Little CamelDimitry Pletnikov
 
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
 
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 HeavenPaul Withers
 

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

Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Pythongturnquist
 
The Java EE 6 platform
The Java EE 6 platformThe Java EE 6 platform
The Java EE 6 platformLorraine JUG
 
How to Test Enterprise Java Applications
How to Test Enterprise Java ApplicationsHow to Test Enterprise Java Applications
How to Test Enterprise Java ApplicationsAlex Soto
 
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 2012Kai Wähner
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous DeliveryJez Humble
 

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 TomEEjaxconf
 
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 PotsdamAndreas Grabner
 
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 ApplicationMark Stoodley
 
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 GallimoreJAX London
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby ConferenceJohn Woodell
 
01 web-apps
01 web-apps01 web-apps
01 web-appssnopteck
 
Apache Tomcat + Java EE = Apache TomEE
Apache Tomcat + Java EE = Apache TomEEApache Tomcat + Java EE = Apache TomEE
Apache Tomcat + Java EE = Apache TomEEJacek Laskowski
 
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 servertmccurry
 
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.ioHassy Veldstra
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009pratiknaik
 
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 v2013Olaf Alders
 
TriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingToolsTriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingToolsYury Chemerkin
 
01 overview-and-setup
01 overview-and-setup01 overview-and-setup
01 overview-and-setupsnopteck
 
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 TomcatDavid Blevins
 

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

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Recently uploaded (20)

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

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