2013-08-07 10 views
6

私のアプリケーションでJavaEE 7に基づくWebsocket-APIを使用しています。websocketエンドポイント内でクッキー値を取得するには

websocketエンドポイント[Annotated one : @ServerEndpoint ("/websocket") ]のクッキーに設定された値にアクセスする必要があります。どうすればいい?

@onOpen()メソッドがあり、このwebsocketエンドポイントへの接続が確立されると自動的に呼び出されます。私はそこにあるこのメソッド内のクッキーの値にアクセスしたいです。

私はサーブレットやJSPでそれを行う方法を知っていますが、私はWebソケットを初めて使っています。

これを手伝ってください。前もって感謝します。

答えて

6

要求パラメータへのアクセスは、@ServerEndpoint(configurator=MyConfigurator.class)テクニックによって行われます。

other answer on how to access the HttpSessionを参照してください。技術は非常に似ています。

+0

本当に素晴らしいです。私は正常にあなたが例示した方法を使用してHttpSessionを得ることができます。 しかし、私の意図は、HttpSessionではなくクッキーを取得することです。私は同じシナリオを試みましたが、それを得ることができませんでした。 (HttpSession)config.getUserProperties() .get(HttpCookie.class.getName()); ' コンフィグレータのmodifyHandshake()メソッドを使用して、このHttpCookieをEndPointConfigに配置する方法がわかりません。 これを手伝ってください。 –

+0

これは実際に元の質問には答えません – gshauger

+0

@gshaugerこれは実際には重複した質問だったので、HttpSessionへのアクセスに関する他の回答への参照(JEEアプリケーションではCookieが伝統的にアクセスされています) –

8

私はそれが完全に質問に答えない、または少なくとも補完することができると私は信じて正しい方向にヒントを提供しますが、

クッキーの値を取得するには、HandshakeRequestオブジェクトのヘッダーを取得し、「cookie」というヘッダーを検索する必要があります。あなたのmodifyHandshakeの実装は次のようになります:

public class MyEndpointConfigurator extends ServerEndpointConfig.Configurator { 
    @Override 
    public void modifyHandshake(ServerEndpointConfig config, 
           HandshakeRequest request, 
           HandshakeResponse response) 
    { 
     Map<String,List<String>> headers = request.getHeaders(); 
     config.getUserProperties().put("cookie",headers.get("cookie")); 
    } 
} 
関連する問題