【发布时间】:2016-08-05 02:19:55
【问题描述】:
我有一个托管 bean(@Named 和 @RequestScoped),应用程序的其余部分使用它来检索正在处理的当前请求的客户端的 IP 地址。此 bean 用于 JSF 和 JAX-RS 上下文。
对于 JAX-RS,我使用
将请求注入到字段中 @Context
HttpServletRequest httpRequest;
如果那是null,我会尝试这样获取请求:
final FacesContext jsfCtxt = FacesContext.getCurrentInstance();
if ( jsfCtxt != null ) {
return (HttpServletRequest) jsfCtxt.getExternalContext().getRequest();
} else {
Logger.getLogger(DataverseRequestServiceBean.class.getName()).log(Level.WARNING, "Cannot get the HTTP request object.");
return null;
}
但是JSF上下文中的一些bean在上下文存在之前就调用了这个方法,而这个jsfCtxt就是null,所以没有得到请求。这打破了一切。
在 Java EE 中从托管 bean 获取 HTTP 请求是否有一种单向捕获的方法?
谢谢!
【问题讨论】:
标签: jsf jakarta-ee jax-rs