4

1つのパラメーター(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.
    }
}

各方法からこれを除外する方法はありますか?セッターを作成してみましたが、セッターは構築時にしか呼び出されないため、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 に答える