The openjpa.ConnectionURL, openjpa.ConnectionDriverName, openjpa.ConnectionUserName and openjpa.ConnectionPassword properties are OpenJPA specific properties that you use when you are in an unmanaged environment. When embedded into a managed environment, like OpenEJB, you should use the spec defined "jta-data-source" and "non-jta-data-source" elements nested under the "persistence-unit" element. For example:

https://svn.apache.org/repos/asf/openejb/trunk/openejb3/examples/ webapps/ejb-examples/src/main/resources/META-INF/persistence.xml

You will most likely want to keep the openjpa.jdbc.SynchronizeMappings property which causes OpenJPA to auto create missing database tables and columns. This is a vendor specific property that is required by spec to be ignored by other vendors. If you want to support other JPA implementations, you will have to determine what the equivalent property is for each vendor (or in this case provide you users some SQL to create the tables).

-dain


On Dec 12, 2007, at 7:22 PM, Alexander Saint Croix wrote:

Hello,

I'm working on an application that at the moment includes a single
(proof-of-concept) entity bean in my main web application WAR, and also
large number of entity beans which are JAR'd in the WEB-INF/lib.

Knowing that the persistence management is all outboard and not contained
inside of OpenEJB, perhaps you guys could help me with a matter of
configuration anyway.

I wonder whether there is any way for me to NOT include the <provider> and <properties> elements defining the persistence provider implementation,
connection URL, connection driver name, username and password in the
persistence.xml file for my entity/POJO jar (the one inside of WEB- INF/lib),
but rather configure that specific portion of the persistence.xml file
inside of the context of the application that is using these beans? It doesn't seem to be any of the POJO JAR's business what type of persistence
provider is being used to persist its contents.

I've attached an example of the <provider> and <properties> elements I wish to exclude below. I want to define classes but not persistence provider information in the entity JARs, and define the persistence provider for these persistence-units once at the container level. Is this possible, and
if so, how might I accomplish that separation with OpenEJB?

Regards,
--
Alexander R. Saint Croix



<persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="1.0"> <persistence-unit name="example" transaction- type="RESOURCE_LOCAL">
        <provider>
            org.apache.openjpa.persistence.PersistenceProviderImpl
        </provider>

        <class>org.eremite.SomeBeanInThisJar</class>

        <properties>
            <property name="openjpa.jdbc.SynchronizeMappings"
                      value="buildSchema"/>

            <property name="openjpa.ConnectionURL"
                      value="jdbc:mysql://localhost/corm"/>

            <property name="openjpa.ConnectionDriverName"
                      value="com.mysql.jdbc.Driver"/>

            <property name="openjpa.ConnectionUserName"
                      value="username"/>

            <property name="openjpa.ConnectionPassword"
                      value="password"/>
        </properties>
    </persistence-unit>
</persistence>

Reply via email to