【问题标题】:In EAR project EJBs appear twice when deployng在 EAR 项目中,EJB 在部署时出现两次
【发布时间】:2013-05-13 11:25:24
【问题描述】:

当我部署 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 客户端:

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

附:我将项目部署到 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>

【问题讨论】:

  • 您能否在ear 文件中提供ear maven 构建的内容和application.xml 的内容。谢谢。
  • EJB 类是在 WEB-INF\classes 下的 war-archieve 中还是在 WEB-INF\lib 下的 jar-archieve 中? maven 生成了 2 个 ejb-jar.xml 吗??
  • @mszalbach 更新了问题。请查看。
  • @cljk 否,EJB 类位于 ejb-module.jar/package1/package2/... 下。而且maven根本没有生成任何ejb-jar.xml,即我的.ear不包含ejb-jar.xml(我认为因为EJB 3 ejb-jar.xml是可选的)。在web-module.war/WEB-INF/lib 下我只有 ejb-client.jar 类
  • 谢谢。所以它看起来是正确的,你的耳朵有战争和 ejb-jar 作为依赖,所以两者都被部署了。现在可能会添加战争的内容,ejb-jar 文件和 poms。可能传递依赖有问题。

标签: java jakarta-ee maven ejb websphere


【解决方案1】:

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

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

<generateClient>true</generateClient>

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

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

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

<type>ejb-client</type>

来自您的 WAR 依赖项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-09
    • 2014-08-02
    • 2017-05-12
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2014-08-29
    相关资源
    最近更新 更多