| Title: FAQ |
| <a name="FAQ- General"></a> |
| ## General |
| |
| |
| |
| <a name="FAQ-WhatspecversiondoesOpenEJBsupport?"></a> |
| ### What spec version does OpenEJB support? |
| |
| OpenEJB supports the Enterprise JavaBeans 3.0 specification and previous |
| versions 2.1, 2.0 and 1.1. |
| |
| <a name="FAQ-Idon'tplantouseEJBs,sowhywouldIembedOpenEJBintoTomcat."></a> |
| ### 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. |
| |
| <a name="FAQ-CanIrunOpenEJBwithaJVMforanyvendor?"></a> |
| ### Can I run OpenEJB with a JVM for any vendor? |
| |
| The Sun, Mac, and IBM vms are regularly tested, however any vm should work. |
| |
| <a name="FAQ-WhichversionofJavaisrequiredtorunOpenEJB?"></a> |
| ### Which version of Java is required to run OpenEJB? |
| |
| Java versions 5 or 6, aka Java 1.5 or 1.6. |
| |
| <a name="FAQ-DoIneedApacheMaventoworkwithOpenEJB?"></a> |
| ### 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 [Application discovery via the classpath](openejbx30:application-discovery-via-the-classpath.html) |
| 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: |
| |
| protected void setUp() throws Exception { |
| Properties properties = new Properties(); |
| properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, |
| "org.apache.openejb.client.LocalInitialContextFactory"); |
| |
| URL config = |
| this.getClass().getClassLoader().getResource("openejb.xml"); |
| properties.setProperty("openejb.configuration", |
| config.toExternalForm()); |
| |
| 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. |
| |
| <a name="FAQ-Container-ManagedPersistence"></a> |
| ## Container-Managed Persistence |
| |
| <a name="FAQ-WhatenginedoesOpenEJBuseforCMP?"></a> |
| ### What engine does OpenEJB use for CMP? |
| |
| The CMP engine is written as a layer over JPA with OpenJPA doing the |
| persistence work. |
| |
| <a name="FAQ-WhatistheformatfortheCMPmappingfiles?"></a> |
| ### What is the format for the CMP mapping files? |
| |
| The standard JPA mapping file and annotations are also used for CMP |
| mappings. |
| |