openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Helen Xu (JIRA)" <>
Subject [jira] [Commented] (OPENJPA-2244) Nested classpath ignored in mapping tool ant task
Date Wed, 19 Sep 2012 20:47:08 GMT


Helen Xu commented on OPENJPA-2244:

When user specifies the properties attribute inside the config element to point to a specific
persistence config file and persistent unit, the persistence config file or unit cannot be
loaded from the nested classpath as well. here is an example:
<mappingtool schemaAction="build" sqlFile="create.sql">  
      		<pathelement location="mapping-tool-pi.jar" /> 
      		<pathelement location="mapping-tool-persistenceunit-pi.jar" /> 
      		<pathelement location="./" />
        <config propertiesFile=""persistence.xml#mappingtool-pu" connectionDriverName=""/>

user will get the following exception
Caused by: java.util.MissingResourceException: persistence.xml#mappingtool-pu
	at org.apache.openjpa.lib.conf.ProductDerivations.load(
	at org.apache.openjpa.lib.conf.ConfigurationImpl.setProperties(
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(
	at java.lang.reflect.Method.invoke(

The reason it failed to load the config is:
1. It doesn't have the properties value parsing to separate the file name and persistent unit
2. ConfigurationImpl.setProperties() didn't take the ant class loader when it try to load
the config file, or it loaded the config file too early. Ideally it should wait until all
the classpath setting loaded. 
This problem will happen for all types of OPENJPA ant task.

I have created a fix for this problem. please refer to the patch file for details.

> Nested classpath ignored in mapping tool ant task
> -------------------------------------------------
>                 Key: OPENJPA-2244
>                 URL:
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 2.0.1, 2.1.1, 2.2.0
>            Reporter: Helen Xu
>            Assignee: Helen Xu
>         Attachments: OPENJPA-2244.patch
> The nested classpath element inside the mappingtool ant task are ignored when loading
the persistent configuration file. User got the following error:
> <openjpa-2.0.2-SNAPSHOT-r422266:1361284M 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.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message