Java Inject Applicationscope Bean - PullRequest
       45

Java Inject Applicationscope Bean

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

Я пытаюсь внедрить приложение Scoped Bean. Я нашел похожие темы в Время создания бина 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

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

1 Ответ

1 голос
/ 09 декабря 2011

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

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

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

Если вы используете @ EJB, то для WebsiteController требуется @Stateless.

Надеюсья могу помочь тебе ...

...