我在Java EE6世界中很安静(不过JEE5,我知道的很好)。在Glassfish上的CDI pojo中注入Servlet对象
我的环境是Glassfish的3.1.2
我想在一个CDI豆注入的servlet对象(与@Named和注释的一个POJO @ *范围的)被称为一个用jsp $ {nameofBean。 nameofMethode(PAR1 ...)}
我试试这个:
@Inject
private ServletContext context; (or HTTPServletRequest or HttpServletResponse (for calling sendRedirect))
这给了我以下部署例外:用于注射点预选赛[@default]类型[ServletContext中] WELD-001408不满意的依赖
显然,在JBoss,这可能工作:http://docs.jboss.org/seam/3/servlet/latest/reference/en-US/html/injectablerefs.html
我有一个想法是使用@Produces,但到现在为止,我也没弄清楚如何做到这一点。
也许一句话,为什么我想这样做:
我想做一些CRUD的东西,但我真的不知道如何处理异常。所以我的想法是:创建一个CDI Bean,它由JSP调用,并在后端调用一些ejb。如果一个EJB抛出一个异常,我想在CDI Bean中捕获这个异常,并且在请求对象的某个地方(重定向某处,设置一条消息...)。通过注入servlet上下文,我也可以访问POST参数。我希望避免使用servlet来支持jsps并与ejbs建立连接(我认为这太过时髦了)。
感谢您的帮助
伊夫
我的解决方法:创建一个webfilter,它将http-response和-request对象设置为具有请求范围的cdi-beans。现在可以将bean注入到其他bean中,并且我可以访问这两个对象。目前,该解决方案为我工作。任何意见? – Yves 2012-04-23 14:27:08