0

我有一个由于缺乏知识而引起的问题。我使用 OpenJPA 作为 JPA 实现和 Tomcat 服务器来运行我的应用程序,我也使用 Idea12 作为 ide。

我有一个任务——在构建时提供开放的 jpa 增强。为了实现这一点,首先我拒绝 OpenJPA 通过将此属性添加到我的 persistence.xml 来增强运行时的实体:

<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported"/>

现在 OpenJPA 不会像我希望的那样在运行时增强类。

之后,我在我的 ant-build.xml 中编写了一个增强目标。它工作正常,并使用已编译的类创建 /build 目录。如果我查看编译的类代码,我会看到 OpenJPA 的其他字段 - pcStateManager 和其他。太棒了。

现在的问题是——当我通过 Idea 启动 Tomcat 时,它不需要我的增强类。我猜Tomcat甚至不知道我增强了我的课程。似乎他再次编译代码,并使用未增强的类启动应用程序。当然,当我开始使用数据库时,会有一个例外。

那么,是否可以配置 Tomcat,让他从 /build 目录中获取我的课程?

PS我也尝试使用一些Idea插件进行增强,但它们并没有解决问题 - 我有同样的例外,即类没有增强。

upd两个增强创意插件:OpenJPA 增强器和 Data Nucleas 与 OpenJPA 扩展的集成都不能解决问题。所以这让我觉得,有些事情出了问题。也许主要问题是tomcat设置?

4

1 回答 1

0

如果有人感兴趣 - 这是解决方案:

  1. 你需要打开你的想法#项目结构并选择包含你的类的模块

  2. 您需要将“输出”属性从“继承项目编译输出”切换到“使用模块编译输出路径”,并使用增强类指定目录

  3. 就是这样,现在当 Tomcat 将构建 WAR 文件时,他将采用您的增强类。祝你好运。

于 2013-07-04T16:32:10.910 回答