Внедрить объект Servlet в CDI Pojo на Glassfish - PullRequest
4 голосов
/ 21 марта 2012

Я новичок в мире Java EE6 (однако, JEE5, я знаю достаточно хорошо).

Моя среда - Glassfish 3.1.2

Я пытаюсь внедрить сервлетобъекты в bean-объекте CDI (pojo, аннотированном @Named и @ * Scoped), который вызывается для jsp с $ {nameofBean.nameofMethode (par1 ...)}

Я пытаюсь это сделать:

@Inject
private ServletContext context; (or HTTPServletRequest or HttpServletResponse (for calling sendRedirect))

Что дает мне следующее исключение при развертывании: WELD-001408 Неудовлетворенные зависимости для типа [ServletContext] с квалификаторами [@Default] в точке внедрения

Очевидно, в JBoss это может работать: http://docs.jboss.org/seam/3/servlet/latest/reference/en-US/html/injectablerefs.html

Одна из моих идей заключалась в использовании @Produces, но до сих пор я не представлял, как это сделать.

Возможно, слово, почему я хочу это сделать:Я хочу сделать кое-что CRUD, но я действительно не знаю, как обрабатывать исключения.Итак, моя идея заключается в создании компонента CDI, который вызывается JSP и вызывает некоторый ejb в бэкэнде.Если EJB генерирует исключение, я хочу поймать это в компоненте CDI и кое-что с объектом запроса (куда-то перенаправить, установить сообщение ...).С внедрением контекста сервлета у меня также будет доступ к параметрам POST.Я хочу избегать использования сервлетов для поддержки jsps и установления связи с ejbs (я думаю, это слишком ld-fashioned).

Спасибо за вашу помощь

Ив

1 Ответ

0 голосов
/ 21 марта 2012

Ссылка на ServletContext вводится с помощью Weld, используя @Resource:

@Resource
private ServletContext servletContext;

Однако вы не можете вводить HttpServletRequest или HttpServletResponse. Для этого вам нужен фильтр сервлетов, который хранит объект запроса и ответа. Шовный припой обеспечивает эту возможность.

Я не эксперт в области разработки интерфейса с использованием JSF или JSP, но я убежден, что существует более подходящий способ обработки исключений, чем использование ServletContext или объектов ответа ...

...