java在每个请求之前运行资源方法
我有一些代码,其中一个参数(cookie)可以传递到任何路径,我希望以相同的方式处理它:
@Path("/some/path")
public class JaxRsService {
public void doStuff(@CookieParam("cookie") Cookie cookie) {
handleCookie(cookie);
// etc.
}
public void doStuff2(@CookieParam("cookie") Cookie cookie) {
handleCookie(cookie);
// etc.
}
public void doStuff3(@CookieParam("cookie") Cookie cookie) {
handleCookie(cookie);
// etc.
}
}
有没有办法从每种方法中考虑到这一点?我尝试创建一个setter,但是setter只在构造时被调用,所以cookie不可用
@Path("/some/path")
public class JaxRsService {
// This never gets called
@CookieParam("cookie")
public void setCookie(Cookie cookie) {
cookie // stuff
}
// etc.
}
类似地,还有@PostContruct
注释,但它只在构造时起作用
将cookie添加为类变量效果很好,但我仍然必须在每个请求中调用该方法:
@Path("/some/path")
public class JaxRsService {
// This never gets called
@CookieParam("cookie")
Cookie cookie;
public void doStuff() {
handleCookie();
// etc.
}
public void doStuff2() {
handleCookie();
// etc.
}
public void doStuff3() {
handleCookie();
// etc.
}
}
有什么好办法处理这个问题吗
# 1 楼答案
在CXF中,“拦截器”是修饰请求的标准方式。不过,我不知道有什么可移植的方法
。。。另一种方法也可以是(专有的)http://cxf.apache.org/docs/jax-rs-filters.html(本质上几乎相同)