Java Maven没有';在尝试定义模块时,不要将EJB视为项目的依赖项
今天,我将本地Glassfish服务器升级到3.1.1,为公司将服务器升级到同一版本做准备。我正试图转换我的web服务项目,以便更好地使用新服务器,但遇到了一个障碍 在我ear的pom文件中,我以前将webapp和ejb都列为依赖项。在webapp的pom中,我也将ejb列为依赖项。尝试将此配置部署到Glassfish 3.1.1时,我收到以下错误: 部署期间发生错误:部署应用程序[ear]时出现异常:无法解析引用本地ejb ref name=name、本地3.x interface=interface、ejb link=null、lookup=、mappedName=、jndi name=、refType=Session,因为应用程序中有2个ejb具有接口。一些可能的原因:1。ejbbean类被打包在一个earlib库中(或者通过任何其他使库对所有组件模块可见的库机制),这使得所有组件模块间接地包括这个bean类。2.EJBBean类打包在一个组件模块中,该模块通过清单WEB-INF/lib直接或间接引用EJB。ejbbean类应该只打包在声明的EJB模块中,而不打包在引用模块中。引用模块应仅包括EJB接口。。请参阅server.log fo。。。。msg.seeServerLog 从本质上说,我相信它是在说,因为我在两个不同的领域将EJB列为依赖项,所以Glassfish 3.1.1不知道要查找哪个依赖项。这在2.1.1中不是问题。因此,我删除了ear中的依赖项,因为它仍然是ear有效pom的一部分 但是,现在当ear生成application.xml文件时,它会忽略文件中的所有ejb信息。我现在可以很好地部署应用程序,但是当我尝试运行任何东西时,我得到了有关EJB的NameNotFoundExceptions 我试图使用标记将ejb模块手动添加到ear pom中,但当我尝试构建项目时,我收到错误消息: 工件[ejb]不是项目的依赖项 尽管事实上,当我查看ear的有效pom时,我可以看到ejb作为依赖项列出 如何在仍然符合Glassfish 3.1.1更严格的规则集的情况下正确生成application.xml文件Java Maven没有';在尝试定义模块时,不要将EJB视为项目的依赖项,java,maven,glassfish,application.xml,Java,Maven,Glassfish,Application.xml,今天,我将本地Glassfish服务器升级到3.1.1,为公司将服务器升级到同一版本做准备。我正试图转换我的web服务项目,以便更好地使用新服务器,但遇到了一个障碍 在我ear的pom文件中,我以前将webapp和ejb都列为依赖项。在webapp的pom中,我也将ejb列为依赖项。尝试将此配置部署到Glassfish 3.1.1时,我收到以下错误: 部署期间发生错误:部署应用程序[ear]时出现异常:无法解析引用本地ejb ref name=name、本地3.x interface=inter
如果您需要更多信息,请告诉我,谢谢您的帮助 答案很简单,我为此感到有些懊恼。在webapp的pom文件中,我只需将作用域行添加到ejb依赖项:
<dependency>
<groupId>com.groupId</groupId>
<artifactId>webservice-service-ejbs</artifactId>
<version>${project.version}</version>
<type>ejb</type>
<scope>provided</scope>
</dependency>
com.groupId
Web服务EJB
${project.version}
ejb
假如
这样,我就可以在ear pom中保留ejb依赖关系,正确生成application.xml,glassfish 3.1.1不会因为存在多个同名ejb类而感到困惑
编辑:以下是ear pom中ejb依赖项的外观
<dependency>
<groupId>com.groupId</groupId>
<artifactId>webservice-service-ejbs</artifactId>
<type>ejb</type>
</dependency>
com.groupId
Web服务EJB
ejb
感谢那些帮助我的人。我实际上遇到了这个问题,我能够通过修改POM来解决它。你能发布你的POM吗?这样我就可以看一看,告诉你要改变什么?如果是公司敏感数据,请将包名称更改为其他名称。当然可以。抱歉,响应太晚,有一段时间没有登录。