low*_*ell 19 java glassfish maven application.xml
今天我将本地Glassfish服务器升级到3.1.1,为我公司将服务器升级到同一版本做准备.我正在尝试将我的Web服务项目转换为使用新服务器,并且遇到了障碍.
在我耳朵的pom文件中,我以前将webapp和ejb都列为依赖项.在webapp的pom中,我也将ejb列为依赖项.尝试将此配置部署到Glassfish 3.1.1时,我收到此错误:
部署期间发生错误:部署app [ear]时出现异常:无法解析引用本地ejb-ref name = name,Local 3.x interface = interface,ejb-link = null,lookup =,mappedName =,jndi-name =, refType = Session,因为应用程序中有2个ejbs,带有接口接口.一些可能的原因: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中的问题.因此,我消除了耳朵中的依赖性,因为它仍然是耳朵有效pom的一部分.
但是,现在当ear生成application.xml文件时,它会忽略文件中的所有ejb信息.我现在可以很好地部署应用程序,但是当我尝试运行任何东西时,我得到关于ejbs的NameNotFoundExceptions.
我尝试使用标记手动将ejb模块添加到耳塞,但是当我尝试构建项目时,我收到错误消息:
Artifact [ejb]不是项目的依赖项.
尽管事实上,当我看到耳朵的有效pom时,我可以看到ejb被列为依赖.
如何在仍然符合Glassfish 3.1.1更严格的规则集的情况下正确生成application.xml文件?
如果您需要更多信息,请告诉我们,并感谢您的帮助!
low*_*ell 25
答案最终变得非常简单,我正在为此付出一些努力.在webapp的pom文件中,我只需要将范围行添加到ejb依赖项中:
<dependency>
<groupId>com.groupId</groupId>
<artifactId>webservice-service-ejbs</artifactId>
<version>${project.version}</version>
<type>ejb</type>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以将ejb依赖保留在ear pom中,application.xml正确生成,而glassfish 3.1.1并没有因为有多个具有相同名称的ejb类而感到困惑.
编辑:这是耳塞中ejb依赖的样子
<dependency>
<groupId>com.groupId</groupId>
<artifactId>webservice-service-ejbs</artifactId>
<type>ejb</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
感谢那些帮助我的人.
| 归档时间: |
|
| 查看次数: |
12133 次 |
| 最近记录: |