SlideShare ist ein Scribd-Unternehmen logo
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

Weitere ähnliche Inhalte

Was ist angesagt?

Java
JavaJava
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.3
Matthew 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 Buzzer
Malcolm 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 XPages
Jesse Gallagher
 
Pinto+Stratopan+Love
Pinto+Stratopan+LovePinto+Stratopan+Love
Pinto+Stratopan+Love
Jeffrey Ryan Thalhammer
 
Carrying Enterprise on a Little Camel
Carrying Enterprise on a Little CamelCarrying Enterprise on a Little Camel
Carrying Enterprise on a Little Camel
Dimitry 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 Heaven
Paul Withers
 
PHP Conference - Phalcon hands-on
PHP Conference - Phalcon hands-onPHP Conference - Phalcon hands-on
PHP Conference - Phalcon hands-on
Jackson F. de A. Mafra
 

Was ist angesagt? (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
 

Andere mochten auch

Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Python
gturnquist
 
The Java EE 6 platform
The Java EE 6 platformThe Java EE 6 platform
The Java EE 6 platform
Lorraine JUG
 
How to Test Enterprise Java Applications
How to Test Enterprise Java ApplicationsHow to Test Enterprise Java Applications
How to Test Enterprise Java Applications
Alex Soto
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
Marcel Overdijk
 
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
Kai Wähner
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Jez Humble
 

Andere mochten auch (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
 

Ähnlich wie 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
 
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
Andreas 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 Application
Mark 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 Gallimore
JAX London
 
Fastest Servlets in the West
Fastest Servlets in the WestFastest Servlets in the West
Fastest Servlets in the West
Stuart (Pid) Williams
 
App Engine Meetup
App Engine MeetupApp Engine Meetup
App Engine Meetup
John Woodell
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby Conference
John Woodell
 
01 web-apps
01 web-apps01 web-apps
01 web-apps
snopteck
 
01 web-apps
01 web-apps01 web-apps
01 web-apps
Aravindharamanan S
 
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
 
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
tmccurry
 
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
Hassy Veldstra
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009
pratiknaik
 
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
Olaf Alders
 
TriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingToolsTriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingTools
Yury Chemerkin
 
Better Code through TDD
Better Code through TDDBetter Code through TDD
Better Code through TDD
wolframkriesing
 
Apache TomEE - Tomcat with a kick
Apache TomEE  - Tomcat with a kickApache TomEE  - Tomcat with a kick
Apache TomEE - Tomcat with a kick
Vishwanath Krishnamurthi
 
01 overview-and-setup
01 overview-and-setup01 overview-and-setup
01 overview-and-setup
snopteck
 
Debugging rails
Debugging railsDebugging rails
Debugging rails
Michael Denomy
 
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
David Blevins
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
GDSC PJATK
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
Dinusha Kumarasiri
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
alexjohnson7307
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 

Kürzlich hochgeladen (20)

Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 

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