4

我有一些代码可以将一个参数(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.
    }
}

有什么好的方法来处理这个吗?

4

1 回答 1

1

在 CXF 中,“拦截器”是装饰请求的标准方式。不过,我不知道便携式方法。

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

于 2012-05-08T08:47:46.107 回答