好吧,我有一个具有以下结构的EAR项目:
EarSample
- EarSample-ejb.jar
- EarSample-web.war
在EJB模块中,a有一个简单的无状态会话bean,没有接口(无视图接口)。
我发生的事情是,我无法在战争模块中打包的JSF托管bean中注入该EJB。 Netbeans甚至没有看到这个课程。
我已经尝试过GF 3/4和Payara。
任何帮助将不胜感激。 谢谢。
答案 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服务器。