0

SpringでJersey 1.13を使用しています。次のように定義された ContextResolver があります。

@Provider
public class ThemeSourceContextResolver implements ContextResolver<ThemeSource> {

    @Context private HttpServletRequest request;

    @Override
    public ThemeSource getContext(Class<?> type) {
        return new DefaultThemeSource(request);
    }
}


<bean id="themeSourceContextResolver" scope="singleton" class="com.example.ThemeSourceContextResolver" />

上記は有効ですか?具体的には@Context private HttpServletRequest request、 ContextResolver で を使用することは「合法」ですか (または意味がありますか)? ContextResolver はシングルトンであるため、Jersey/JAX-RS はスレッドローカル プロキシ マジックなどを実行して、すべてのリクエストの HttpServletRequest にアクセスできるようにしますか?

4

2 に答える 2

0

この回答を Jersey 2.14 に更新するには:

答えは「時々」です。Jersey は、特定の @Context 変数、つまり HttpHeaders、Request、UriInfo、および SecurityContext に対して実際にプロキシ マジックを実行します。特定のケース HttpServletRequest はサポートされていません。

https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2578を参照してください。

于 2015-01-30T02:29:19.347 に答える
0

有効ではありません。@ContextJAX-RS リソースにのみ注入されます。ContextResolver<?>あなたが言ったように、主にシングルトンであるため、リクエストコンテキストとは何の関係もありません。

于 2012-12-07T13:12:55.420 に答える