On Feb 7, 2011, at 12:18 PM, tjsaker wrote:

> 
> I'm using OpenEJB 3.1.4.  How do I specify a data source for a CMP_ENTITY
> container?  The documentation specifies the following:
> 
>    <Container id="My MySQL Container" type="CMP_ENTITY">
>        PoolSize = 100
>        Global_TX_Database = conf/mysql.cmp.global-database.xml
>        Local_TX_Database = conf/mysql.cmp.local-database.xml
>    </Container>
> 
> Do I need to put the datasource settings in the indicated files?  I can find
> no further documentation on the format of mysql.cmp.global-database.xml or
> mysql.cmp.local-database.xml.

Oh geez, that's really old documentation.  Can you point out the page where you 
found it so we can update it?

Try this:

  - yank the <Container> declaration for CMP and let OpenEJB auto create a CMP 
container for you. 
  - In the EJB jar where the cmp beans live, add a META-INF/persistence.xml 
file like the following.

  <persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="1.0">
      <persistence-unit transaction-type="JTA" name="cmp">
          
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
          <jta-data-source>My DataSource</jta-data-source>
          <non-jta-data-source>My Unmanaged DataSource</non-jta-data-source>
          <properties>
              <!--<property name="openjpa.Log" value="DefaultLevel=TRACE"/>-->
              <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema(ForeignKeys=true)"/>
          </properties>
      </persistence-unit>
  </persistence>

Internally we adapt CMP beans to JPA.  If you use the system property 
'openejb.descriptors.output=true' we'll actually print out all the generated 
persistence and mapping files.  Then you can include them in your jar and tweak 
them if you want.

A couple important notes:
  - do not change the persistence-unit name.  it must be "cmp" for us to find 
it.
  - only openjpa is supported as the cmp persistence provider. the code is 95% 
generic but there are a couple hooks we needed that weren't covered in the 
plain JPA api.

It's been quite a long time since I or anyone worked on it, but there is some 
undocumented code in there that does allow some mixing of cmp/jpa with the idea 
being that one could slowly convert a CMP app to JPA.  I doubt anyone has the 
time/motivation to do any coding on it these days, but if that kind of feature 
is attractive to you I can certainly be as supportive as possible in answering 
questions, applying patches, and getting you what you need to really dig and 
make it work for you.

-David


  

Reply via email to