当我部署EAR项目时,我注意到相同的EJB出现两次 - 在WAR和JAR(EJB)模块中。哪里可以有问题?
我使用Maven构建项目。并没有明确定义任何ejb-jar.xml
。
在EJB项目的pom.xml
中,我添加了maven-ejb-plugin
:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
<ejbVersion>3.0</ejbVersion>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
<generateClient>true</generateClient>
<clientExcludes>
<clientExclude>**/core/</clientExclude>
<clientExclude>**/utils/</clientExclude>
</clientExcludes>
</configuration>
</plugin>
从客户端我引用生成的EJB-client:
<dependency>
<groupId>orgstructure</groupId>
<artifactId>orgstructure-ejb</artifactId>
<version>1.0.4-SNAPSHOT</version>
<type>ejb-client</type>
<scope>compile</scope>
</dependency>
P.S。我将项目部署到WebSphere 8。
更新
生成的.ear
文件具有标准布局:
-project.ear
--web-module.war
--ejb-module.jar
--lib
--META-INF
并生成applcation.xml
:
<display-name>orgstructure-ear</display-name>
<module>
<web>
<web-uri>orgstructure-web-1.0.3.war</web-uri>
<context-root>/orgstructure</context-root>
</web>
</module>
<module>
<ejb>orgstructure-ejb-1.0.3.jar</ejb>
</module>
<library-directory>lib</library-directory>
答案 0 :(得分:0)
您是否正在构建(EJB和Web模块除外)一个将使用您的EJB的独立Java应用程序?我猜不是,因为你没有在任何地方提到它。
如果我猜对了,请不要生成EJB客户端。删除选项
<generateClient>true</generateClient>
来自POM的以及与之相关的所有配置。
此上下文中的 EJB客户端表示在外部部署了希望直接使用EJB的应用程序服务器,因此需要客户端jar来处理远程调用服务器上的bean。
如果我猜错了,你仍然不应该在web存档中包含对你的客户端jar的依赖,Java EE web应用程序使用内置的app服务器机制连接到EJB,而不是生成的客户端存根。在这种情况下,请删除选项
<type>ejb-client</type>
来自你的WAR依赖。