Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven没有';在尝试定义模块时,不要将EJB视为项目的依赖项_Java_Maven_Glassfish_Application.xml - Fatal编程技术网

Java Maven没有';在尝试定义模块时,不要将EJB视为项目的依赖项

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

今天,我将本地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文件


如果您需要更多信息,请告诉我,谢谢您的帮助

答案很简单,我为此感到有些懊恼。在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吗?这样我就可以看一看,告诉你要改变什么?如果是公司敏感数据,请将包名称更改为其他名称。当然可以。抱歉,响应太晚,有一段时间没有登录。