Интересный вопрос, если бы вы не тестировали его, я бы поставил немного денег на то, что он не работает ;-)
CDI основан на управляемых bean-компонентах (JSR 316). Соответствующее определение довольно расслаблено (намеренно):
Из спецификации:
Управляемый компонент можно объявить, аннотируя его класс аннотацией javax.annotation.ManagedBean. Управляемый компонент не должен быть: конечным классом, абстрактным классом, нестатическим внутренним классом. Управляемый компонент не может быть сериализуемым, в отличие от обычного компонента JavaBean.
В базовой модели компонентов управляемые компоненты должны предоставлять конструктор без аргументов, но спецификация, основанная на управляемых компонентах, например CDI (JSR-299), может ослабить это требование и позволить управляемым компонентам предоставлять конструкторам более сложные сигнатуры.
Вероятно, происходит то, что контейнер просматривает путь к классам и находит скомпилированные сервлеты JSP. Прошло некоторое время с тех пор, как я последний раз видел один, но я помню, что код сгенерирован и все (включая скриптлеты) попадают в doGet()
или _2 _...!? Итак, даже несмотря на то, что они формально не дисквалифицируют с точки зрения определения, я сомневаюсь, что скрипт JSP - это что-то, что вы хотите рассматривать как управляемый компонент. Честно говоря, это ужасно неправильно ;-)
Я слежу за списками рассылки CDI / Weld / Seam уже довольно давно и не припомню, чтобы когда-либо упоминался JSP. То же самое и с поиском в Google этой связи.
Как следствие, вам не следует полагаться на CDI при работе со скриплетами. ИМХО, это поведение имеет больше побочных эффектов, чем что-то внутреннее, и может быть исключено в будущих выпусках без уведомления (или даже без заметного :-)
Итак, +1 за предложение JB Nizet: используйте сервлеты с CDI, но не JSP.
ОБНОВЛЕНИЕ: я пытался помочь, а не создавать путаницу ;-) Моя точка зрения: ИМХО, мне кажется, действительно неправильно использовать CDI в JSP, но я не нашел ничего в соответствующих спецификациях, подтверждающих это. . Все, что я могу сказать, это то, что JSP нигде никогда не упоминаются - это поддерживает мое чутье (и соответствует наблюдению, что некоторые реализации учитывают это, а другие нет).
person
jan groth
schedule
12.09.2011