EJB无状态会话Bean - 无法创建错误

时间:2011-04-29 23:41:19

标签: ejb java-ee-6 glassfish-3 stateless-session-bean

首先我要指出,虽然我已经使用Java SE一段时间了,但这是我第一次涉足Java EE领域。我正在使用Netbeans 6.9和Netbeans代码生成器来完成大部分繁重的工作(更多关于这一点)。 GlassFish的版本是3 - 当您下载Netbeans时出现的沼泽标准版本。

我创建了一个无状态会话Bean,以返回一个简单的String,如下所示:

@Stateless
public class SDBSStatelessSessionBean implements SDBSStatelessSessionBeanRemote {

    @Override
    public String sayHello() {
        return "This seems to be working just fine.";
    }     
}

接口定义为:

@Remote
public interface SDBSStatelessSessionBeanRemote {

   String sayHello();
}

使用Netbeans提供的“插入代码”功能创建类和接口。我这样想,我避免犯任何愚蠢的新手错误(哦,具有讽刺意味)。

我的问题是当我尝试从servlet调用Enterprise bean时(使用Netbeans代码生成器中的'Call Enterprise Bean'选项添加调用),我收到以下错误:

javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB

异常是由以下原因引起的:     的 NoClassDefFoundError的

这是servlet进行调用的方式:

@EJB
private SDBSStatelessSessionBeanRemote sDBSStatelessSessionBean;

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Test Servlet</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<p>" + sDBSStatelessSessionBean.sayHello()  +"</p>");
        out.println("</body>");
        out.println("</html>");
    } catch (Exception e) {
        out.println("<p>" + e.getMessage() + "</p>");
        out.println("</body>");
        out.println("</html>");
    } finally {
        out.close();
    }
}

我担心在广泛的谷歌搜索之后我找不到解决这个问题的方法(主要是因为这个问题似乎附近的一些论坛帖子包含了太多的术语,让我无法遵循解决方案)。< / p>

非常感谢任何建议/帮助指出我正确的方向。

1 个答案:

答案 0 :(得分:3)

如果这是一个本地EJB(在与servlet相同的JVM / EE容器中),您可以尝试将EJB声明为@LocalBean(在@Stateless注释下)。您还可以删除@Remote接口(并使您的EJB无法实现它)。

所以你的EJB将成为

@Stateless
@LocalBean
public class SDBSStatelessSessionBean
{
    public String sayHello() 
    {
        return "This seems to be working just fine.";
    }     
}