WAR模块无法在同一EAR中的EJB模块中找到EJB类

时间:2017-03-15 18:17:03

标签: java-ee-6 glassfish-3 ear glassfish-4 payara

好吧,我有一个具有以下结构的EAR项目:

EarSample
  - EarSample-ejb.jar
  - EarSample-web.war

在EJB模块中,a有一个简单的无状态会话bean,没有接口(无视图接口)。

我发生的事情是,我无法在战争模块中打包的JSF托管bean中注入该EJB。 Netbeans甚至没有看到这个课程。

我已经尝试过GF 3/4和Payara。

任何帮助将不胜感激。 谢谢。

2 个答案:

答案 0 :(得分:1)

好吧,正如@OndrejM所建议的那样,我只在WAR的pom.xml中添加了EJB模块依赖,因为它是“提供的”,并且它运行良好。

    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>EarSample-ejb</artifactId>
        <version>${project.version}</version>
        <scope>provided</scope>
    </dependency>

答案 1 :(得分:0)

您应该从EarSample-ejb.jar模块中提取EJB接口,并将它们放入单独的jar文件EarSample-common.jar中。这样的存档应放在EarSample内的lib文件夹中,因此可以从两个模块访问它。

结构应如下所示:

EarSample
  EarSample-ejb.jar
  EarSample-web.war
  /lib/EarSample-common.jar

背后的原因是符合JSR标准,一般来说EAR模块应该有单独的类加载器(默认情况下不限制在Glassfish或JBoss / Wildfly中)。

如果要将提到的EJB接口提取到单独的maven模块并将该工件作为编译范围依赖项添加到ejb和web模块,那么您的解决方案将适用于所有JavaEE 6/7服务器。