= FAQ
:index-group: OpenEJB Standalone Server
:jbake-date: 2018-12-05
:jbake-type: page
:jbake-status: published

== 
 General

 

=== What spec version does OpenEJB support?

OpenEJB supports the Enterprise JavaBeans 3.0 specification and previous
versions 2.1, 2.0 and 1.1.

=== I don't plan to use EJBs, so why would I embed OpenEJB into Tomcat.

Adding OpenEJB to Tomcat gives servlets several new Java EE 5
capabilities such as JPA, JAX-WS, JMS, J2EE Connectors, transactions,
and more as well as enhancing the injection features of Tomcat 6 to now
support injection of JavaEE objects like Topics, Queues, EntityManagers,
JMS ConnectionFactories, JavaMail Sessions, as well as simpler data
types such as Dates, Classes, URI, URL, List, Map, Set, Properties, and
more. In the case of Tomcat 5.5 which doesn't support dependency
injection at all, even more is gained.

=== Can I run OpenEJB with a JVM for any vendor?

The Sun, Mac, and IBM vms are regularly tested, however any vm should
work.

=== Which version of Java is required to run OpenEJB?

Java versions 5 or 6, aka Java 1.5 or 1.6.

=== Do I need Apache Maven to work with OpenEJB?

Definitely not. Most of the examples include both Maven and Ant build
files. OpenEJB is usable as a plain library, much like an embedded
database like Derby, so it is usable in any application regardless if
that application is run via Maven, Ant, Intellij, Eclipse, NetBeans,
JUnit, TestNG, etc.

== Can I start and stop OpenEJB from an IDE? If yes, which IDE is

supported by OpenEJB?

The short answer is yes. The basic approach for all embedding scenarios
is to 1) add OpenEJB to your classpath, and 2) construct your
InitialContext using
org.apache.openejb.client.LocalInitialContextFactory. The
LocalInitialContextFactory will boot OpenEJB in your vm and all ejb
applications visible in the classpath will be deployed. See
http://tomee.apache.org/embedding-openejb.html for details on how to
embed openejb in your application and IDE. See
openejbx30:application-discovery-via-the-classpath.html[Application
discovery via the classpath] for various ways to have your applications
discovered.

== During embedded testing, how can I externalize all my DataSource

configuration?

Create an openejb.xml file in any directory that gets added to your test
classpath. For maven, something that winds up directly under
"target/classes/" or "target/test-classes/" will work just fine. Then in
your test case do this:

[source,java]
----
   protected void setUp() throws Exception {
       Properties properties = new Properties();
       properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
----

"org.apache.openejb.client.LocalInitialContextFactory");

[source,properties]
----
       URL config =
----

this.getClass().getClassLoader().getResource("openejb.xml");
properties.setProperty("openejb.configuration",
config.toExternalForm());

[source,java]
----
       initialContext = new InitialContext(properties);
   }
----

The file itself doesn't have to be called "openejb.xml", you could have
a few different files like that for different testing scenarios each
with a name that describes the basic setup.

== Container-Managed Persistence

=== What engine does OpenEJB use for CMP?

The CMP engine is written as a layer over JPA with OpenJPA doing the
persistence work.

=== What is the format for the CMP mapping files?

The standard JPA mapping file and annotations are also used for CMP
mappings.
