3

当我部署 EAR 项目时,我注意到相同的 EJB 出现了两次 - 在 WAR 和 JAR(EJB) 模块中。哪里可能有问题?

在此处输入图像描述 在此处输入图像描述

我使用 Maven 构建项目。并且没有明确定义任何ejb-jar.xml.

pom.xmlEJB 项目中,我添加了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 客户端:

        <dependency>
            <groupId>orgstructure</groupId>
            <artifactId>orgstructure-ejb</artifactId>
            <version>1.0.4-SNAPSHOT</version>
            <type>ejb-client</type>
            <scope>compile</scope>
        </dependency>

PS 我将项目部署到 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>
4

1 回答 1

0

您是否正在构建(EJB 和 Web 模块除外)将使用您的 EJB 的独立 Java 应用程序?我猜不是,因为你没有在任何地方提到它。

如果我猜对了,请不要生成 EJB 客户端。删除选项

<generateClient>true</generateClient>

来自您的 POM,以及与之相关的所有配置。

在这种情况下, EJB 客户端是指部署在应用程序服务器之外的应用程序,它希望直接使用您的 EJB,因此它需要一个客户端 jar 来处理对服务器上 bean 的远程调用。

如果我猜错了,您仍然不应该在 Web 存档中包含对客户端 jar 的依赖项,Java EE Web 应用程序使用内置的应用服务器机制连接到 EJB,而不是生成的客户端存根。在这种情况下,删除该选项

<type>ejb-client</type>

从你的 WAR 的依赖。

于 2013-05-18T23:10:50.367 回答