0

我正在迁移最初在 JBoss SOA 服务器版本 5.2 上使用 EJB3 持久性(JPA 1.0)编写的应用程序,以便它使用来自 JPA 2.0(休眠实现)的类型安全查询和标准查询。到目前为止,我完全无法部署 EAR,因为它找不到正确版本的 javax.persistence 库。该错误表明它找不到类 javax.persistence.criteria.Expression。据我所知,它正在从 JBoss 内置的 ejb3-persistence 库中加载 javax.persistence 类。我尝试了各种方法,这些方法应该会导致 JBoss 首先使用应用程序库,但无济于事。任何帮助,将不胜感激。

我尝试过的方法:

  1. 向 jboss-app.xml 文件添加“<loader-repository>”配置
  2. 将 jboss-classloading.xml 文件添加到 EAR 的 META-INF 文件夹
  3. 修改 ear-deployer-jboss-beans.xml 文件以使用隔离类。
4

1 回答 1

0

答案是“jboss-classloading.xml”文件适用于 Web 应用程序,但无法覆盖已发布的 EJB 的类加载。已发布 EJB 的库在服务器级别必须是唯一的,并且由于 JBoss aleady 包含一个处理 java.persistence.* 命名空间的库,因此您不能在 EJB 中使用任何其他版本的 JPA。

于 2013-05-01T16:20:59.820 回答