Wildfly 8.1, - 不识别我的依赖 - 但Glassfish确实如此

时间:2015-02-09 15:52:57

标签: java-ee ejb wildfly

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

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

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

EJB模块依赖于我的' Domain-service' -module,它是一个jar - > DomainService-2.0-SNAPSHOT.jar。这个项目包含我的“#entce'。

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

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

按下' General'的Glassfish标签。我可以看到以下内容:

'库'> /home/ingo/.m2/repository/se/server/tutorial/web/DomainService/2.0-SNAPSHOT/DomainService-2.0-SNAPSHOT.jar - Glassfish像这样管理它的依赖关系似乎很奇怪,但这就是玻璃鱼的做法,显然。

据我所知,Wildfly中的类加载与Glassfish中的加载方式不同。

我看过一些关于战争文件和耳文的建议。

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

se.nrm.mediaserver

ServerApp-EJB

1.0-SNAPSHOT

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。

问候,ingo

1 个答案:

答案 0 :(得分:0)

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移植。