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