我正在努力实现这一目标:部署一个由简单Servlet构成的WAR,它注入EJB,并在其上调用业务方法。
全部使用由两个组成部分组成的maven项目:
1)示例EJB(pom.xml打包为ejb) 2)示例WAR(Servlet,将pom.xml打包为WAR。依赖于ejb模块)
我首先要说的是,我能够以另一种方式进行此练习,将WAR和EJB打包在EAR中,但不包括上面提到的。任何人都可以告诉我使用的Application Server(WebLogic 10.3.3)是否有任何限制?
SimpleServlet(WAR)的代码片段:
public class SimpleServlet extends HttpServlet {
@EJB(mappedName="ejb/SimpleSessionBean")
private SimpleSessionRemote simpleSessionBean;
SimpleSession远程接口(EJB)的代码片段:
@Remote
public interface SimpleSessionRemote
{
String getMessage();
}
SimpleSession Bean类(EJB)中的代码片段:
@Stateless(name="SimpleSessionEJB", mappedName="ejb/SimpleSessionBean")
@Remote(SimpleSessionRemote.class)
public class SimpleSession
{
...
EJB没有weblogic-ejb-jar.xml部署描述符,因此它是完全注释的EJB。
在管理控制台中部署WAR后,在Servlet中直接注入后,我得到一个空引用。
怎么了?我忘记了任何一步吗?
此致 Pierluigi Salera
=================================
App Server不支持EJB 3.1
我确实使用的WebLogic支持EJB 3.0,如下所述:
http://docs.oracle.com/cd/E14571_01/web.1111/e14529/compatibility.htm
“
WebLogic Server 11g第1版(10.3.3)与JEE5兼容
“
Java EE 5支持EJB 3.0,如下所述:
我还检查了EJB 3.0规范(JSR220),实际上,从来没有明确提到过无法在.war中打包ejb。我相信,不支持的事实是暗示的。
为了提供完整的概述,我终于检查了EJB 3.1规范(JSR318),其中明确指出“
企业bean也可以打包在Web应用程序模块中 (的.war)“
,第20章包装。
因此,我们可以得出结论,我的工作范围是证明使用不支持EJB 3.1规范的Application Server无法在WAR中打包Enterprise Bean。
亲切的问候, Pierluigi Salera
答案 0 :(得分:2)
Servlet 2.5意味着Java EE 5. WAR中的EJB仅受Java EE 6支持。
你有两个选择: