【问题标题】:war, ejb-jar and persistence.xml战争、ejb-jar 和 persistence.xml
【发布时间】:2014-12-16 09:49:33
【问题描述】:

我有两个 ejb-jars 位于 [WAR]/WEB-INF/lib 的项目。两个 ejb-jars 都使用 JPA 并包含注释为 @Entity 的类。但是我在打包和部署方面遇到了问题(Glassfish 4)。如果我的两个 jar 都包含 persistence.xml,那么我会在 delpoyment 上得到以下异常

java.lang.RuntimeException: Could not resolve a persistence unit corresponding to the persistence-context-ref-name [...] in the scope of the module called [...]. Please verify your application.

我已将 persistence.xml 放入 WAR/META-INF 并从 ejb-jar 中删除 persistence.xml。部署成功,但运行时出现异常

java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: Exception Description: Problem compiling [SELECT ...]. [14, 18] The abstract schema type 'MyClass' is unknown.

MyClass 是来自 ejb-jar 之一的 @Entity 类。我认为这个 ejb-jar 中缺少persistence.xml 的问题。

最后我尝试将persistence.xml 放入 WAR 和 ejb-jars 中,但我又得到了

java.lang.RuntimeException: Could not resolve a persistence unit corresponding to the persistence-context-ref-name [...] in the scope of the module called [...]. Please verify your application.

什么是放置persistence.xml 的合适位置以及打包此类应用程序的正确方法是什么?

【问题讨论】:

    标签: jakarta-ee jpa war packaging persistence.xml


    【解决方案1】:

    尝试从 ejb 项目和 persistence.xml 中提取所有实体到简单的 jar 文件,然后将该 jar 文件放入 WEB-INF/lib(我没有使用该配置,所以它可能无法正常工作,当然它可以在 EAR 打包的情况下工作 - 意思是 EAR,有 3 个模块、web 和 2 个 ejb,以及 ear/lib 文件夹中的实体 jar)。

    【讨论】:

    • 当所有东西都在一个罐子里时,它就是这样工作的。我是 Java EE 的新手,所以将 ejb-jar 放入 [war]WEB-INF/lib 对我来说似乎更容易。我对耳朵的包装没有深入的了解。如果我在 ear 中打包,那么我可以在另一个 ejb-jar 中看到一个 ejb-jar 中的类吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2014-06-18
    • 2011-07-09
    • 2012-08-30
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多