2011-04-29 128 views
1

让我首先指出,虽然我已经使用Java SE一段时间了,但这是我第一次进入Java EE领域。我使用Netbeans 6.9和Netbeans代码生成器来完成大部分繁重的工作(更多内容将在下面进行介绍)。 GlassFish的版本是3 - 在下载Netbeans时发布的标准版本。EJB无状态会话Bean - 无法创建错误

我创建了一个无状态会话Bean返回一个简单的字符串如下:

@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调用企业Bean(使用Netbeans的代码生成器“调用企业Bean的选项加入呼叫)我收到以下错误:

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

这是servlet如何进行呼叫:

异常被引起的

恐怕我无法在广泛的谷歌搜索之后找到解决这个问题的方法(主要是因为似乎接近这个问题的少数论坛帖子包含了太多的术语,使我无法遵循该解决方案)。

我想大大感谢任何意见/帮助指出我在正确的方向。

+0

应该有“致”为例外,显示了EJB无法创建的原因。请包括这一点。 – 2011-04-30 05:01:05

+0

谢谢你指出。我上面做了编辑。 – Insectatorious 2011-05-02 06:30:03

+0

对于将来的问题,最好包含完整的堆栈跟踪(或者至少包含完整的“由...引起的”行); NoClassDefFoundError的消息很重要。 – 2011-05-02 15:16:12

回答

2

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

所以,你的EJB将成为

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

谢谢!我做了修改并且工作。我不得不从头开始重新启动这个项目,并且由于某种原因,它在这个时候一直工作。 – Insectatorious 2011-05-02 06:29:41

+0

没问题,使用EJB简化了EE6(谢天谢地!) – Jon 2011-05-02 12:08:00

相关问题