I already blog posted about how to deploy TomEE on cloudfoundry using the standalone framework (TomEE on CloudFoundry). It was mainly based on the tomee-maven-plugin to create a tomee ready to start and cloudfoundry maven plugin to deploy it.
The main competitor of CloudFoundry is OpenShift. The question is can we do the same?
Since JavaEE 7 is brand new TomEE is still JavaEE 6 but you can want to add to TomEE some JavaEE 7 features either upgrading some libraries (like BVal which has a Bean Validation 1.1 branch) or replacing some implementation by another one.
Replacing the implementation is generally easy since you can add it either in your application or in the container through <libs> tag of tomee-maven-plugin BUT here you also need to replace the API (= upgrading the JavaEE 6 provided one to a JavaEE 7 one).
TomEE is coming with a bundle API jar (javaee-api) so how to do so?
Hessian is an old but very interesting binary protocol known for a very good compromise between compression time and size. That’s probably one of the faster usable for remote webservices.
The question in a JavaEE server is how to use it as transparently as possible? Here is the answer for OpenEJB/TomEE.
JAX-WS (+ WSS4J for the security) is a quite common solution used by enterprises but JAX-WS is quite slow by design (pipeline, xml serialization, depending on implementation a lot of reflection or bytecode generation in some cases…) and the question to compare it to a simpler protocol comes pretty quickly when you held both client and server sides.
This article aims to show how JAX-WS could be replaced by EJBd protocol on TomEE (>= 1.6.0 – currently in snapshot when writing these lines).
Configuring the CXF bus is a common need in particular in development where we often activate the logging. The key point here is to add the LoggingFeature of CXF.
To do so in TomEE (same for OpenEJB) you can of course configure either your endpoint (webservice jaxws or jaxrs) or your application (jaxrs) to add this feature but it is done in openejb-jar.xml in the application.
A great enhancement added to Bean Validation in version 1.1 was the “famous” Appendix C of the 1.0 specification: the method validation.
This one allows you to validate method parameters and method returned values.
JavaEE 7 is just out and contains some nice surprises. Bean validation is one of them in my opinion.