2017-03-15 51 views
0

井EJB模块EJB类,我有以下结构的EAR项目:WAR模块中找不到相同的EAR

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

里面的EJB模块有没有一个简单的无状态会话bean接口(无视图接口)。

发生了什么事情是我无法将该EJB注入打包在war模块中的JSF托管bean中。 Netbeans甚至没有看到这个班。

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

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

+1

ejb.jar是否在您的web.war的构建类路径中?如果你的项目是基于maven的,那么ejb.jar是web.war项目的一个依赖项吗? – OndrejM

+0

你是对的,这是一个maven项目。我已经将EJB模块添加为“提供”的依赖关系,并且工作得很完美。谢谢。 – Jaumzera

回答

1

那么,正如@OndrejM所建议的那样,我只是在WAR的pom.xml中添加了EJB模块依赖关系,并且“完美”。

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

您可以将此答案标记为正确的答案,即使它是您的答案) – OndrejM

+0

考虑到这是您的答案,我认为您可能会改进并再次发布。所以我可以接受并赞扬它。无论如何,谢谢。 – Jaumzera

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服务器。

+0

我正在使用EJB的无界面视图。 – Jaumzera

+0

要说实话,在WAR的pom.xml中添加EJB项目作为依赖,就像@OndrejM所建议的那样。 – Jaumzera