1

我正在尝试创建一些 Java EE 应用程序。基础是EJB作为控制器。接下来我想用JSF+ManagedBeans呈现数据。问题是有

javax.servlet.ServletException:标准/SampleController

java.lang.NoClassDefFoundError:标准/SampleController

代码如下所示:

托管 bean(动态 Web 项目):WebView 项目:StdSampleController.java:

import javax.ejb.EJB;

import standards.SampleController;

public class StdSampleController {

    @EJB private SampleController c;
    public String value;

    public StdSampleController() {
        c = new SampleController();
        value = c.getValue();
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

EJB(EJB 项目):WebController 项目:standards.SampleController.java:

package standards;

import javax.ejb.Stateless;

/**
 * Session Bean implementation class SampleController
 */
@Stateless
public class SampleController implements SampleControllerRemote {

    private String value;

    public SampleController() {
        value = "EJB:SampleController bean";
    }

    public String getValue(){
        return value;
    }

}

所有这些代码都放在一个企业应用程序项目中。
我使用 GlassFish 版本 3 和 Eclipse 3.5.2。

4

2 回答 2

3

添加到 unbeli 的答案,请从您的代码中删除以下内容:

public StdSampleController() {
    c = new SampleController();
    value = c.getValue();
}

这是错误的。在您描述的情况下,c将由容器注入并引用您的 EJB。不要通过 new() 运算符自己实例化 EJB。

于 2011-06-11T22:02:18.267 回答
2

您使用(远程)接口调用 EJB,而不是它的实现。因此,而不是

@EJB private SampleController c;

你需要

@EJB private SampleControllerRemote c;

并相应调整进口。

于 2011-06-11T21:51:33.337 回答