Jersey 1.x では、 https://stackoverflow.com/a/15767824/1399659で説明されているように、(Jersey) セッション属性から Wicket セッションにアクセスしました。
Jersey 2.x への移行では、Spring Bean インジェクションも可能にするContainerRequestFilterを使用するのが適切なパターンのようです。含めることで、これが正常に機能しています
<param-name>jersey.config.server.provider.packages</param-name>
ServletContainer への init-param として、ContainerRequestFilter 実装で @Provider アノテーションを使用します。ただし、このコンテナ フィルタはシングルトンであり、これに HttpServletRequest を挿入することはできません ( JERSEY-2114を参照) 。
filter() メソッドではContainerRequestContextにアクセスできますが、そこから HttpServletRequest にアクセスすることはできません。
したがって、次のいずれかの方法があります。
- サーブレット フィルター内で Spring Bean インジェクションを有効にしますか (Jersey も使用)?
- ContainerRequestFilter 内からサーブレット リクエストにアクセスしますか?
- 他の方法でジャージーフィルタリング機能を使用して、Spring Bean 対応オブジェクトからウィケットセッションにアクセスしますか?
`
import java.io.IOException;
import javax.servlet.http.HttpSession;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Provider;
import org.apache.wicket.injection.Injector;
@Provider
public class SecurityContextFilter implements ContainerRequestFilter {
//@Context
//HttpServletRequest webRequest;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
//HttpSession httpSession = webRequest.getSession();
//MyWicketSession mySession = (MyWicketSession) httpSession.getAttribute("wicket:" + BaseConstants.WICKET_FILTER_NAME + ":session");
//doAuthCheck(mySession, requestContext);
}
...
}
`
前もって感謝します