Java Inject Applicationscope Bean

Я пытаюсь внедрить bean-компонент applicationScoped. Я нашел похожие темы в время создания экземпляра компонента JSF2 ApplicationScope? и Получить управляемый компонент JSF по имени в любом классе, связанном с сервлетом

С способом jsf в контексте лиц все в порядке (WebsitesController находится в AppScoped):

FacesContext context = FacesContext.getCurrentInstance();
WebsiteController websitesController = context.getApplication().evaluateExpressionGet(context, "#{websitesController}", WebsitesController.class);

С инъекциями двух потоков переполнения это не работает. Мой код:

@ManagedBean(eager=true)
@ApplicationScoped
public class WebsitesController implements Serializable {
...}

а теперь я попробовал

@ManagedBean(name = "shopController")
@ViewScoped
public class ShopController {
    {Injection-Statement}
    private WebsitesController websitesController;

Я пробовал следующие утверждения:

@ManagedProperty("#{websitesController}")
@Inject
@EJB

В чем моя вина?


person user962466    schedule 11.10.2011    source источник


Ответы (1)


У меня также проблема с ApplicationScope на Glassfish. У вас есть веб-проект maven или ant? (Я думаю, что с maven ApplicationScope не работает должным образом - с муравьем он работает)

Теперь к вашему вопросу:

Когда вы используете @Inject, вашему WebsiteController нужны @Named и @ApplicationScope (другой импорт как jsf !!), и у вас должен быть beans.xml - тогда CDI активируется.

Когда вы используете @EJB, ваш WebsiteController нуждается в @Stateless.

Я надеюсь, что смогу помочь вам...

person iggi    schedule 09.12.2011