In the spirit of the old Embeddable EJB3 project comes Embedded JBoss. Embedded JBoss allows users to run the JBoss 5 Kernel and any JBoss project or component within non-application server environments, or rather within a non-JBoss-controlled classloader. The focus of this Beta 2 Release of Embedded JBoss was to create some deep integration into Tomcat as well as streamline the process of running embedded within JUnit tests.
Goals of the project
- Ability to run JBoss within plain Java application
- To run embedded within JUnit tests
- To be usable within standalone Tomcat
- To be usable within application servers
- To run streamlined and stripped down with a fast boot speed (JNDI, JBoss TS, connection pooling, JMS, EJB boot up in < 6.5 seconds on a 2.4 Core 2 system)
Why is this important?
- Allows JBoss and JEMS products to be more lightweight
- Allows people to use JBoss/JEMS that can't switch containers that easily
- Unifies what other projects at JBoss are already doing to be able to run in non-JBoss-application-server environments
- Gives ISVs better integration possibilities
How is this possible?
There are a couple of cool features in the new JBoss 5 Kernel that enpowered us to build Embedded JBoss. The first is that classloading is now an aspect of the JBoss 5 kernel. Classloading behavior, although flexible, was hardcoded in older versions of the JBoss Kernel. In JBoss 5, classloading behavior can be plugged in. What we did for Embedded JBoss was to pull out the default Unified ClassLoader behavior, and just use the Thread's context classloader for deploying and running components.
The 2nd cool feature of the JBoss 5 Kernel is the new file abstraction we have called the Virtual File System (VFS). The VFS is an archive abstraction that hides from the deployment services whether the archive is an exploded directory, jar file, or regular text file. One of the features of the VFS is that it allows you to create virtual archives in memory based on classpath resources or even raw bytes. This is incredibly useful in unit testing within IDEs or when you want to ship applications that are not broken up into individual Java EE packages.
Where can I found out more?
We still have a lot of fine tuning to do on the user experience and really need some advice specifically on how you want to use Embedded JBoss with unit testing and how we can make the process of going from unit testing to production deployment easier on developers. Please see our Wiki page for more information on where our forums are and such.