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>