openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ravi Palacherla <ravi.palache...@oracle.com>
Subject RE: Seemed to fail to find persistence.xml, do I have it in the right place?
Date Thu, 10 Dec 2009 21:48:31 GMT
Hi David,

I think the javaagent will be run way before the main method of weblogic server runs.
In other words, even before initializing your webapplication the javaagent will run.
So, my guess is there is no way weblogic knows about the "prefer-application-packages" at
the time the javaagent is used.
You should see the same exception with/without prefer-application-pacakages.

Also if you have to use javaagent then it is expecting a META-INF/persistence.xml in system
classpath because at the time the javaagent is initialized the only possible classloader is
the java system classpath. None of the applications will be initialized by that time.

I do not know javaagent "PCEnhancerAgent" is intended to be used for application server environments.
May be someone from openJPa community can comment on this.

Regards,
Ravi.

-----Original Message-----
From: KARR, DAVID (ATTCINW) [mailto:dk068x@att.com] 
Sent: Thursday, December 10, 2009 10:18 AM
To: users@openjpa.apache.org
Subject: Seemed to fail to find persistence.xml, do I have it in the right place?

I'm using Weblogic 10MP1, JDK 1.5, and OpenJPA 1.2.1.

I've constructed an EAR file which wraps my WAR file, which contains my
domain classes and my persistence.xml file.

I've specified the "prefer-application-packages" element in my
weblogic-application.xml file, to take "org.apache.openjpa.*" from my
jars, not from WebLogic.

I started up WebLogic with a "-javaagent" parameter pointing to the
"openjpa-1.2.1.jar" file.

I saw the following in the console:

--------------
Caused by: <1.0.0 fatal user error>
org.apache.openjpa.util.MetaDataException: MetaDataFactory could not be
configured (conf.newMetaDataFactoryInstance() returned null). This might
mean that no configuration properties were found. Ensure that you have a
META-INF/persistence.xml file, that it is available in your classpath,
or that the properties file you are using for configuration is
available. If you are using Ant, please see the <properties> or
<propertiesFile> attributes of the task's nested <config> element. This
can also occur if your OpenJPA distribution jars are corrupt, or if your
security policy is overly strict.
	at
org.apache.openjpa.meta.MetaDataRepository.initializeMetaDataFactory(Met
aDataRepository.java:1496)
	at
org.apache.openjpa.meta.MetaDataRepository.endConfiguration(MetaDataRepo
sitory.java:1489)
	at
org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurati
ons.java:450)
	at
org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurati
ons.java:375)
	at
org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:102
)
	at
kodo.conf.CachingMetaDataRepositoryPlugin.instantiate(CachingMetaDataRep
ositoryPlugin.java:29)
	at
org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:79)
	at
org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryIn
stance(OpenJPAConfigurationImpl.java:833)
	at
org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryIn
stance(OpenJPAConfigurationImpl.java:828)
	at
org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAC
onfigurationImpl.java:1414)
	at
org.apache.openjpa.enhance.PCEnhancerAgent.premain(PCEnhancerAgent.java:
65)
--------------

I'll show the structure of my EAR/WAR and where the persistence.xml file
is, but there's a clue in this stack trace that really bothers me.  One
of the entries refers to "kodo", which is WebLogic's older JPA
implementation, which corresponds to OpenJPA 1.0.0.  I've looked at some
of the source files in OpenJPA 1.2.1 that are referenced in this stack
trace, and it's clear those line numbers don't correspond to the 1.2.1
source.  So, somehow WebLogic is ignoring my
"prefer-application-packages" element.

Despite that feeling, I also note that this error occurs as a result of
the "javaagent" processing, which explicitly specifies the
openjpa-1.2.1.jar, before it even loads my application.  This is also
odd, because it's implying that it couldn't find the "persistence.xml"
file for my application, but it's clear it got this error before it even
tried to load my application.

So, concerning my EAR structure, at the root of the EAR is my WAR file,
and my "persistence.xml" file is in "WEB-INF/classes/META-INF" in the
WAR.  The following is my simple persistence.xml file (with some things
elided):

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence

 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="myunitname" transaction-type="JTA">
 
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provid
er>
        <jta-data-source>myjtadatasource</jta-data-source>
        <mapping-file>pathtomappingfile</mapping-file>
        <properties>
            <property name="openjpa.Log" value="DefaultLevel=TRACE"/>
        </properties>
    </persistence-unit>
</persistence>

Mime
View raw message