Stacker, если вы хотите, чтобы Seam @ In-ject включал любой компонент, Он должен перехватить ваш запрос . Например, @ In-jection работает при использовании EJB, потому что Seam использует перехватчик EJB. Это объясняет, почему вы должны объявлять перехватчик EJB Seam при использовании EJB.
Java Server Faces, с другой стороны, Seam использует распознаватель языка выражений, чтобы предоставить вам доступ к любому компоненту Seam, который установлен по умолчанию , когда основной файл Seam размещен на пути к классам.
Ключом для включения интеграции Seam с любой веб-технологией является ContextFilter - имейте в виду, что вы должны включить Seam Filter для использования ContextFilter - который описан в соответствии с Seam в книге действий следующим образом
Включает контейнер Seam и контексты для запросов не-JSF . Не следует применять к запросам JSF, так как это приводит к выполнению дублирующей логики, что приводит к неопределенным результатам.
...
ContextFilter открывает доступ к контейнеру Seam и его контекстным переменным для не-JSF
сервлеты, такие как Struts, Spring MVC и Direct Web Remoting (DWR). Хотя большая часть работы Seam выполняется в сервлете JSF, эти дополнительные фильтры позволяют Seam
расширить границы своего жизненного цикла выше и за пределами досягаемости сервлета JSF .
Чтобы включить ContextFilter, вы объявляете его в components.xml
<component name="org.jboss.seam.web.contextFilter">
<property name="disabled">false</property>
</component>
Поскольку нет свободного времени, я не знаю, как использовать этот вид функциональности. Взгляните на исходный код ContextFilter. Это может дать вам хорошее понимание.