【问题标题】:DataNucleus JPA runtime enhancement with Tomcat and Eclipse使用 Tomcat 和 Eclipse 增强 DataNucleus JPA 运行时
【发布时间】:2013-08-05 10:35:37
【问题描述】:

我正在通过编写一个使用 DataNucleus 作为我的 JPA 提供程序的应用程序来学习 JavaEE。我使用 Eclipse IDE 和 Apache Tomcat 服务器进行测试,因此我想设置运行时增强功能以​​避免在每次测试部署时对我的类进行字节编译。

根据documentation,我将此添加到我的 persistence.xml 文件中:

<property name="datanucleus.jpa.addClassTransformer" value="true"/>

但是,无论如何,我的课程并没有得到提高。我得到的错误信息是:

org.datanucleus.exceptions.NucleusUserException: Found Meta-Data for
class pbf.model.Message but this class is either not enhanced or you
have multiple copies of jdo-api.jar in your CLASSPATH!! Make sure all
persistable classes are enhanced before running DataNucleus and/or the
CLASSPATH is correct.

文档对于 Java EE 是否也需要在命令行上指定 javaagent 有点模糊。如果是这样,我该如何在 Eclipse 中使用 Tomcat 服务器?启动服务器时,我看不到自定义命令行和/或 Java 参数的选项。

我使用从 maven 存储库下载的 datanucleus-accessplatform-jpa-rdbms v.3.3.0-release 以及所有依赖项。

【问题讨论】:

    标签: eclipse jakarta-ee tomcat jpa datanucleus


    【解决方案1】:

    Tomcat 不是“真正的”JavaEE 服务器 AFAIK,只是一个 servlet 容器,在这种情况下不实现 JPA 规范的 JavaEE 服务器方面(即使用 DataNucleus 在您的问题中向其注册的 JPA ClassTransformer,或使用正确的构造函数等创建 EMF)。所以你应该使用标准的 Java 方式来使用 Java 代理,通过 JVM 命令行,这对于任何支持使用代理转换器的 JPA 实现都是一样的

    【讨论】:

    • 现在 Tomcat 抱怨 org.datanucleus.state.JDOStateManager 的 NoClassDefFoundError,尽管它显然存在于 jar 中。如果我改用你所说的“真正的”JavaEE 服务器会有帮助吗?
    • 是的,所以相关 lib 文件夹中的 datanucleus-core 的所有部门也都在吗?以 jdo-api.jar 为例
    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多