使用Eclipse,openJPA,Tomcat和OracleDB进行实体增强时出错

时间:2012-03-23 09:37:27

标签: tomcat java-ee openjpa

我使用Eclipse Link,Glassfish和OracleDB开发了一些JSF / JPA应用程序。我的新主题是使用openJPA将应用程序移植到Tomcat。因此,我正在使用这项新技术测试一个简单易用的应用程序。这比我想象的要困难得多。我从这里学到了:

http://openjpa.apache.org/enhancement-with-eclipse.html

我必须增强我的实体。我尝试使用Eclipse插件,这部分是成功的,但几乎没有问题。在一些帖子中,我看到建议使用Ant方法,我目前正在尝试。我做了与链接中提到的相同的配置,但是我得到了一个错误的错误,我不知道这是什么问题:

  

C:\用户\ XXX \ EclipseWorkspace \ testJSF \ enhance.xml:26:      org.apache.openjpa.util.MetaDataException:MetaDataFactory无法   配置(conf.newMetaDataFactoryInstance()返回null)。这个   可能意味着没有找到配置属性。确保这件事   你有一个META-INF / persistence.xml文件,它可以在你的文件中找到   classpath,或者您用于配置的属性文件   是可用的。如果您使用的是Ant,请参阅或    任务的嵌套元素的属性。   如果您的OpenJPA分发罐损坏,也可能发生这种情况   如果你的安全政策过于严格。

我的enhance.xml

<path id="enhance.cp">
    <pathelement location="${basedir}${file.separator}${build.dir}"/>
        <fileset dir="${basedir}${file.separator}${openjpa.libs}">
            <include name="**/*.jar"/>
        </fileset>
</path>

<property name="cp" refid="enhance.cp"/>

<target name="openjpa.libs.check" unless="openjpa.libs">
    <fail message="Please set -Dopenjpa.libs in your builder configuration!" />
</target>

<target name="build.dir.check" unless="build.dir">
    <fail message="Please set -Dbuild.dir in your builder configuration!" />
</target>

<target name="enhance" depends="openjpa.libs.check, build.dir.check">
    <echo message="${cp}"/>
    <taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask">
        <classpath refid="enhance.cp"/>
    </taskdef>
    <openjpac>
        <classpath refid="enhance.cp"/>
    </openjpac>
</target>

我不相信找不到persistence.xml,因为当我使用Eclipse插件时,我能够从数据库中提取数据。但后来我得到了这个错误:

  

实体“openJPA.Todo_”在级别“2”处被增强,但是当前   增强程度为“1.241.207”。

我不明白这意味着什么。我变得非常沮丧。如何使用Eclipse,Tomcat和OpenJpa获得一个有效的项目?

提前谢谢

史蒂夫

更新

在这里,我找到了一个教程,说明将persistence.xml复制到build文件夹中: http://openjpa.apache.org/enhancement-with-ant.html 我在构建文件夹中复制了带有persistence.xml的META-INF文件夹,现在描述的错误消失了。

但是增强器找不到我的持久类:

enhance:
        [echo] C:\Users\XXX\EclipseWorkspace\testJSF\build;C:\Users\XXX\EclipseWorkspace\testJSF\lib\openjpa-all-2.2.0.jar
    [openjpac] 12  TODO  TRACE  [Worker-119] openjpa.Runtime - Setting the following properties from "file:/C:/Users/XXX/EclipseWorkspace/testJSF/build/META-INF/persistence.xml" into configuration: {openjpa.ConnectionPassword=XXX, openjpa.ConnectionDriverName=oracle.jdbc.driver.OracleDriver, openjpa.MetaDataFactory=jpa(Types=openJPA.Todo_), openjpa.Log=DefaultLevel=TRACE, PersistenceVersion=2.0, openjpa.ConnectionUserName=XXX, openjpa.ConnectionURL=jdbc:oracle:thin:@XX.XXX.XXX.XXX:TEST, openjpa.Id=TODO}
    [openjpac] 29  TODO  TRACE  [Worker-119] openjpa.Runtime - No cache marshaller found for id org.apache.openjpa.conf.MetaDataCacheMaintenance.
    [openjpac] 454  TODO  TRACE  [Worker-119] openjpa.MetaData - Scanning resource "META-INF/orm.xml" for persistent types.
    [openjpac] 461  TODO  TRACE  [Worker-119] openjpa.MetaData - The persistent unit root url is "null"
    [openjpac] 461  TODO  TRACE  [Worker-119] openjpa.MetaData - parsePersistentTypeNames() found [openJPA.Todo_].
    [openjpac] 461  TODO  TRACE  [Worker-119] openjpa.MetaData - Found 1 classes with metadata in 19 milliseconds.
    [openjpac] 472  TODO  INFO   [Worker-119] openjpa.Tool - Enhancer running on type "openJPA.Todo_".
    [openjpac] java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: openJPA.Todo_

继续搜索!

0 个答案:

没有答案