我正在通过使用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以及所有依赖项。
答案 0 :(得分:1)
Tomcat不是一个“真正的”JavaEE服务器AFAIK,只是一个servlet容器,并且在这种情况下没有实现JPA规范的JavaEE服务器方面(即在你的问题中使用DataNucleus注册的JPA ClassTransformer,或使用正确的构造函数等创建EMF)。因此,您应该使用标准的Java方法,通过JVM命令行使用Java代理,这对于支持使用代理转换器的任何JPA实现都是相同的