【发布时间】:2012-07-11 17:12:58
【问题描述】:
在使用 EclipseLink (2.0.2) 时,我在 Weblogic (10.3.3) 中看到了一种奇怪的行为。
这就是我所做的。我使用 Maven 编译一个使用 JPA (1.0.2) 的项目。在这个项目中,模块“A”依赖于模块“B”。 “B”包含一堆实体( javax.persistence.Entity )。但是“persistence.xml”在“A”中,其中“B”的所有实体都已注册。 “B”作为可选包部署,“A”通过其 MANIFEST 引用它。
部署成功,但是当我运行应用程序并尝试持久化实体时,我在“A”中收到上述错误。
以下操作之一将解决它:
- 重启 weblogic 服务器
- 更新模块 A 的 POM 文件并显式添加对模块 B 的依赖项。最初此依赖项不存在,因为模块 A 中的类接受“对象”并将其传递给 EntityManager(不是显式实体类类型)。添加此依赖项无论如何都不会更改 JAR 文件的清单。它只更新 JAR 文件的 META-INF 文件夹中的“maven”目录。我认为 weblogic 甚至都不关心这个文件夹。
我下载了 EclipseLinks 的源代码并调试了应用程序。似乎问题出现是因为“org.eclipse.persistence.internal.sessions.AbstractSessiondescriptors”集合字段/strong>" 类没有实体的描述符,因此它不能将其识别为实体。
我认为重新启动服务器会更新该缓存。但是第二种解决方案呢?为什么这行得通? JAR 文件的 META-INF 目录中的“maven”目录是否为 weblogic 所知?
【问题讨论】:
标签: maven jpa weblogic eclipselink