2016-06-22 15 views
0

私はTomcat 5上で動作する完全に機能するWeb Java 1.5 Webアプリケーションを持っています。アプリケーションはそのセッションに依存しているので、Session Cookieが渡されるか、JSESSIONIDがコンテキストの最後に来る限り、JSESSIONIDで特定のセッションを設定するにはどうすればよいですか?

  • 私のアプリへのすべての要求はただ一つにPOSTになります。「JSESSIONID = ...」

    私は今、このように動作します環境の中で、自分のアプリケーションの作業を行う必要があり、このようなパスURLをパラメータなしで指定します(したがって、コンテキストパスでjsessionidを設定することはできません)。

  • リダイレクトが許可されていないため、私の応答でHTTPステータス200を返す必要があります。
  • POSTの本体は特定のXMLです(カスタムパラメータをそこに追加できます)。

私のアプリケーションが古くてうまく動作するので、私はすべてを変更することなくこの作業をしたいと思っていました。私は、XML本体のパラメータの1つとして、実際に実行する必要があるURLを追加し、そのURLへの応答を転送し、そこに残りのパラメータを追加することで、単一のURLを機能させることができました。

http://server.com/realPage.do?param1=value1&param2=value2 

そして、それは動作します:私はその後、前方これに

POST http://server.com/singleUrl.do 

<xml> 
    <parameters>url=realPage.do&amp;param1=value1&amp;param2=value2</parameters> 
</xml> 

:ここでは一例です。私はアプリケーションに抽象レイヤーを追加したところ、すべて正常に動作します。セッションを除く...

セッションクッキーが送信されないので、私はPOST間のセッションを失います。私はこのように、XMLのカスタムパラメータの1つとしてJSESSIONIDを追加しました:

<xml> 
    <parameters>url=realPage.do&amp;param1=value1&amp;param2=value2&amp;jsessionid=ABC121312</parameters> 
</xml> 

とに転送しようとした:

http://server.com/realPage.do;jsessionid=ABC121312?param1=value1&param2=value2 

しかし、それは動作しません。同じことが、リダイレクトと共に機能します。もちろん、私の新しい要件では、リダイレクトは許可されません。

最後に、私の質問です。そのJSESSIONIDに対応するセッションをどのように設定できますか?私はそれを私の「本当の」アプリケーションに送る前に要求を処理する同じ抽象化レイヤーでそれをやりたいのです。

+0

リクエストヘッダーにCookieが設定されています。与えられた制約によって同じセッションを維持できない場合は、変更する必要があります。 – EJP

+0

私を信じて、私はこれについて熱い議論をしてきました。彼らのプラットフォームは変更できません。それがクライアントであるか失われているのか。 – manugarciac

答えて

0

私はこれのための解決策を思いついたと思います...私は、XMLを解析し、JSESSIONIDを指定して新しいリクエストを作成するプロキシを実装しました。私はその要求の応答を実際の要求の応答に書いています。

私はプロトタイプを作っており、動作しているようです。それは本当に醜いですが、少なくとも私のアプリケーションは、これが実際に起こっていることを知らない。

関連する問題