Eclipse: EJB и ManagedBean (для JSF) - PullRequest
1 голос
/ 04 июня 2011

Я пытаюсь создать приложение Java EE. База EJB в качестве контроллера. Далее я хочу представить данные с помощью JSF + ManagedBeans . Проблема есть

javax.servlet.ServletException: standard / SampleController

java.lang.NoClassDefFoundError: standard / SampleController

Код выглядит так:

Управляемый компонент (Динамический веб-проект): проект 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: standard.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.

Ответы [ 2 ]

3 голосов
/ 12 июня 2011

Добавляя к ответу unbeli, удалите из своего кода следующее:

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

Это неправильно. В ситуации, которую вы изображаете, контейнер будет вводить c со ссылкой на ваш EJB. Не создавайте экземпляр EJB самостоятельно с помощью оператора new ().

2 голосов
/ 12 июня 2011

Вы вызываете свой EJB, используя (удаленный) интерфейс, а не его реализацию. Поэтому вместо

@EJB private SampleController c;

вам нужно

@EJB private SampleControllerRemote c;

и соответственно скорректируйте импорт.

...