A question we often get is "Is Nuxeo Java EE compliant? Does it run in my preferred application server?".

Nuxeo has actually very little adherence to the Java EE spec. We use technologies like JPA, JSF or Servlets that are included in Java EE 6, but they predate it, so most containers already include them, and if not they can be used as simple libraries that are wildly available. We don't require EJBs, and we don't require JMS (although they can be used).

The only things we need really from Java EE that are usually not available outside of it are JTA (transaction management) and JCA (connector architecture with pooling and transactional support). And because we want Nuxeo to be able to run in non-Java EE containers, we have developed an optional module (called nuxeo-runtime-jtajca) providing the JTA and JCA infrastructure when needed. This module is based on code from the Apache Geronimo project.

The result is that, provided the necessary deployment features are there, we can run out of the box in:

  • Full embedded (no container),

  • OSGi,

  • Jetty,

  • Tomcat,

  • JBoss,

  • and more could be added.

The important part in the above is "provided the necessary deployment features are there". Because Nuxeo has a specific modular extension model not available in any spec (see our Component model overview), we need, for the Nuxeo Runtime to work, to plug into the container's startup and deployment model.

For each container we have to write a small container-specific piece of code to be able to control the deployment order of our JARs, scan them, analyze what extension points are present, and inject their configuration in the Nuxeo Runtime. This is implemented in modules like nuxeo-jboss-deployer, nuxeo-runtime-jetty-adapter, or nuxeo-runtime-tomcat-adapter.

If you would like Nuxeo to run in other containers (GlassFish v3, JBoss 6, WebLogic, WebSphere, JOnAS, etc.), the you should know that the work is not huge, and that our architecture team planned for it. It just needs a bit of time and manpower; you should contact me directly if you're interested in contracting us for this open source work.

In the meantime, you should really try Nuxeo under Tomcat (which is the platform we recommend for now).