【问题标题】:Wildfly 8.1 , - does not recognize my dependencies - but Glassfish doesWildfly 8.1 - 不识别我的依赖项 - 但 Glassfish 可以
【发布时间】:2015-02-09 15:52:56
【问题描述】:

我正在将我的应用程序从 Glassfish 移植到 Wildfly 8.1。 该应用程序是一个maven-ejb-project,它依赖于一个maven-'java Application'-project,编译时都打包在一个jar文件中。

这是一个 maven 项目(mvn 版本是 3.0.5),Java 1.7,它是用 Netbeans 8.0.2 编写的。

我创建了一个 EJB-module ,我的可部署文件的名称是 ServerApp-ejb.jar 。这个项目有一个@Startup-bean 并从数据库中读取。

EJB 模块依赖于我的“域服务”模块,它是一个 jar ->DomainService-2.0-SNAPSHOT.jar。该项目包含我的“实体”。

当我在 Glassfish 中部署我的 ejb-app.jar 时:

我可以看到 Glassfish 使用位于我的 .m2 目录中的 DomainService-2.0-SNAPSHOT.jar。

按“常规”的 Glassfish 选项卡,我可以看到以下内容:

'库'> /home/ingo/.m2/repository/se/server/tutorial/web/DomainService/2.0-SNAPSHOT/DomainService-2.0-SNAPSHOT.jar - Glassfish 像这样管理其依赖项可能看起来很奇怪,但显然 glassfish 就是这样做的。

我了解 Wildfly 中的类加载方式与 Glassfish 中的方式不同。

我看到了一些关于war-files和ear-files的推荐。

我的 EJB 在我的 pom.xml 中有以下几行

se.nrm.mediaserver

ServerApp-ejb

1.0-快照

ejb

还有以下依赖:

  <dependencies>

    <dependency>

        <groupId>javax</groupId>

        <artifactId>javaee-api</artifactId>

        <version>6.0</version>

        <scope>provided</scope>

    </dependency>

   <dependency>

        <groupId>se.server.tutorial.web</groupId>

        <artifactId>DomainService</artifactId>

        <version>2.0-SNAPSHOT</version>

        <type>jar</type>

    </dependency>

    <dependency>

        <groupId>junit</groupId>

        <artifactId>junit</artifactId>

        <version>${junit.version}</version>

        <scope>test</scope>

    </dependency>

    <dependency>

        <groupId>log4j</groupId>

        <artifactId>log4j</artifactId>

        <version>${log4j.version}</version>

        <type>jar</type>

    </dependency>

</dependencies>

上述依赖列表中唯一没有找到的文件是我自己的。

谁能建议我做正确的事,我宁愿不改变我的包装风格 ejb。

问候,英戈

【问题讨论】:

    标签: jakarta-ee ejb wildfly


    【解决方案1】:

    Wildfly 使用基于模块概念的类加载机制。它们的模块必须被定义并且依赖声明在standalone.xml或者你的META-INF/WEB-INF文件夹中一个特定的jboss-deployment-structure.xml,并且{user.home}/.m2/不是一个jboss 模块的路径。

    也就是说,将接口声明部署为 Wildfly 中的模块似乎不是一个合乎逻辑的想法。

    创建一个 application-deployment.ear,并将 applcation-ejb.jar 作为依赖项添加到它,这将可以跨应用服务器、glassfish、weblogic、wildfly 移植。

    【讨论】:

      猜你喜欢
      • 2016-07-15
      • 1970-01-01
      • 2016-12-13
      • 2021-03-27
      • 2013-09-10
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 2023-01-18
      相关资源
      最近更新 更多