有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    在CXF中,“拦截器”是修饰请求的标准方式。不过,我不知道有什么可移植的方法

    。。。另一种方法也可以是(专有的)http://cxf.apache.org/docs/jax-rs-filters.html(本质上几乎相同)