井EJB模块EJB类,我有以下结构的EAR项目:WAR模块中找不到相同的EAR
EarSample
- EarSample-ejb.jar
- EarSample-web.war
里面的EJB模块有没有一个简单的无状态会话bean接口(无视图接口)。
发生了什么事情是我无法将该EJB注入打包在war模块中的JSF托管bean中。 Netbeans甚至没有看到这个班。
我已经尝试过GF 3/4和Payara。
任何帮助将不胜感激。 谢谢。
井EJB模块EJB类,我有以下结构的EAR项目:WAR模块中找不到相同的EAR
EarSample
- EarSample-ejb.jar
- EarSample-web.war
里面的EJB模块有没有一个简单的无状态会话bean接口(无视图接口)。
发生了什么事情是我无法将该EJB注入打包在war模块中的JSF托管bean中。 Netbeans甚至没有看到这个班。
我已经尝试过GF 3/4和Payara。
任何帮助将不胜感激。 谢谢。
那么,正如@OndrejM所建议的那样,我只是在WAR的pom.xml中添加了EJB模块依赖关系,并且“完美”。
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>EarSample-ejb</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
您应该从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服务器。
ejb.jar是否在您的web.war的构建类路径中?如果你的项目是基于maven的,那么ejb.jar是web.war项目的一个依赖项吗? – OndrejM
你是对的,这是一个maven项目。我已经将EJB模块添加为“提供”的依赖关系,并且工作得很完美。谢谢。 – Jaumzera