EJB встроенный контейнер - внедрение зависимостей не работает? - PullRequest
0 голосов
/ 18 мая 2011

Посмотрите на следующий код:

@Local
public interface MyService {

    void printMessage();
}

@Stateless
public class MyServiceImpl implements MyService {

    @Override
    public void printMessage() {
        System.out.println("Hello from MyService.");
    }
}

@Stateless
@Named
public class Application {

    @EJB
    public MyService sampleService;

    private static Application getApplication() throws NamingException {
        Properties properties = new Properties();
        properties.setProperty(EJBContainer.APP_NAME, "admin");
        EJBContainer.createEJBContainer(properties); //.getContext();
        Context context = new InitialContext();

        Application application = (Application) context.lookup("java:global/admin/classes/Application");
        return application;
    }

    public static void main(String[] args) throws NamingException {
        Application application = getApplication();
        application.start(args);
    }

    private void start(String[] args) {
        sampleService.printMessage();
    }
}

Я ожидал, что экземпляр экземпляра simpletService будет доступен при запуске (), но он равен нулю. Все классы являются частью одного проекта (размещены в отдельных файлах). Где я ошибся? Спасибо за совет.

1 Ответ

0 голосов
/ 22 октября 2011

Наконец-то я нашел решение. Когда я изменил start () на общедоступный, инъекция начала работать нормально.

...