【发布时间】:2012-01-01 15:51:27
【问题描述】:
今天我将本地 Glassfish 服务器升级到 3.1.1,为我公司将服务器升级到相同版本做准备。我正在尝试将我的 Web 服务项目转换为与新服务器配合使用,但遇到了障碍。
在我耳朵的 pom 文件中,我之前将 webapp 和 ejb 都列为依赖项。在 webapp 的 pom 中,我也将 ejb 列为依赖项。尝试将此配置部署到 Glassfish 3.1.1 时,我收到此错误:
部署期间发生错误:部署应用程序 [ear] 时出现异常:无法解析引用本地 ejb-ref name=name,Local 3.x interface =interface,ejb-link=null,lookup=,mappedName=,jndi- name=,refType=Session 因为应用中有2个ejb,有接口接口。一些可能的原因: 1. EJB bean 类被打包在一个ear lib 库中(或通过任何其他使库对所有组件模块可见的库机制),这使得所有组件模块都间接包含这个bean 类。 2. EJB bean 类被封装在一个组件模块中,该组件模块直接或间接通过 Manifest、WEB-INF/lib 引用 EJB。 EJB bean 类应该只打包在声明的 ejb 模块中,而不是引用模块中。引用模块应该只包含 EJB 接口。请参阅 server.log fo .... msg.seeServerLog
基本上我相信这是在说因为我将 EJB 列为两个不同领域的依赖项,Glassfish 3.1.1 不知道要查看哪个依赖项。这在 2.1.1 中不是问题。因此,我删除了 ear 中的依赖项,因为它仍然是 ear 有效 pom 的一部分。
但是,现在当 ear 生成 application.xml 文件时,它会忽略文件中的所有 ejb 信息。我现在可以很好地部署应用程序,但是当我尝试运行任何东西时,我得到关于 ejbs 的 NameNotFoundExceptions。
我尝试使用标签手动将 ejb 模块添加到 ear pom,但是当我尝试构建项目时,我收到错误消息:
Artifact[ejb] 不是项目的依赖项。
尽管事实上当我查看耳朵的有效 pom 时,我可以看到 ejb 被列为依赖项。
如何在仍符合 Glassfish 3.1.1 更严格的规则集的同时正确生成 application.xml 文件?
如果您需要更多信息,请告诉我,感谢您的帮助!
【问题讨论】:
-
我确实遇到过这个问题,我可以通过修改 pom.xml 来解决这个问题。你能把你的 POM 贴出来让我看看,然后告诉你要改变什么吗?如果是公司敏感数据,请将包名称更改为其他名称。
标签: java maven glassfish application.xml