小编Bra*_*d M的帖子

如何从Jersey-2请求过滤器访问wicket会话?

在Jersey 1.x中,我们从(Jersey)会话属性访问了Wicket会话,如/sf/answers/1103747711/所述.

在迁移到Jersey 2.x时,使用ContainerRequestFilter似乎是正确的模式,它也允许Spring bean注入.我们成功地通过包括这项工作

<param-name>jersey.config.server.provider.packages</param-name>
Run Code Online (Sandbox Code Playgroud)

作为ServletContainer的init-param并在ContainerRequestFilter实现上使用@Provider注释.但是这个容器过滤器是单例,并且不可能将HttpServletRequest注入其中(参见JERSEY-2114)

在filter()方法中,我们可以访问ContainerRequestContext,但无法从那里访问HttpServletRequest.

那么有没有办法:

  1. 在servlet过滤器中启用Spring bean注入(也使用Jersey)?
  2. 从ContainerRequestFilter中访问servlet请求?
  3. 从具有Jersey过滤能力的Spring-bean感知对象访问wicket会话还有其他方式吗?

`

import java.io.IOException;

import javax.servlet.http.HttpSession;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Provider;

import org.apache.wicket.injection.Injector;

@Provider
public class SecurityContextFilter implements ContainerRequestFilter {

//@Context
//HttpServletRequest webRequest;

@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
    //HttpSession httpSession = webRequest.getSession();
    //MyWicketSession mySession = (MyWicketSession) httpSession.getAttribute("wicket:" + BaseConstants.WICKET_FILTER_NAME + ":session");
    //doAuthCheck(mySession, requestContext);
}
...
}
Run Code Online (Sandbox Code Playgroud)

`

提前致谢

spring wicket jersey jersey-2.0

3
推荐指数
1
解决办法
6414
查看次数

标签 统计

jersey ×1

jersey-2.0 ×1

spring ×1

wicket ×1