In my current project I happened to question the need to install and set up a DBMS and an EJB container just to be able to run automatic tests during development. Luckily I found out that both openejb and hsql can be "embedded" i.e. used in-process with no per-workspace configuration.
Now a new developer needs just pull the stuff from CVS and run the tests and they pass. No installation and no configuration, just Plain Old Coding TM :)
Here is a quick HOWTO:
1 Make a stripped down "installation" of openejb. The full installation works ok, too, but it's quite slow to start:
<openejb> <Container id="Default Stateless Container" ctype="STATELESS"> StrictPooling true </Container> <Deployments dir="../../build/deploy" /> </openejb>
2 Add all openejb jars (dist/* and lib/*) and hsql.jar to classpath
3 Make your build script create the ejb jar under build/deploy
Now you can use the embedded openejb by creating the initial context like this:
Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.openejb.client.LocalInitialContextFactory"); // here "../your-ejb-project" makes this test work in any project: System.setProperty("openejb.home", "../your-ejb-project/tools/openejb"); InitialContext ctx = new InitialContext(properties);
The embedded volatile hsql DBMS can be used by creating the connection like this:
Class.forName("org.hsqldb.jdbcDriver"); Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:aname", "sa", "");
Originally published on 2005-05-03 at http://www.jroller.com/wipu/entry/easy_testing_with_embedded_openejb under category Java