- - PR -
別サーバのセッション情報は取得できますか?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-10-19 20:32
お世話になっております。
サーバAに、Post形式でデータを取得し、結果をsession保存するサーブレットがあります。 サーバBのサーブレットからsession情報を取得することはできるのでしょうか?? APIで調べたのですが、別サーバにアクセスする方法が見つかりませんでした。 public void doPost(HttpServletRequest request, HttpServletResponse response) { ... ServletContext context = getServletConfig().getServletContext(); RequestDispatcher dispatcher = context.getRequestDispatcher("http://www〜/a"); dispatcher.include(request,response); HttpSession session = request.getSession(); hiddenDataCount = (String)session.getAttribute("DataCount"); ... 調べた結果、context.getRequestDispatcherは同一サーバ内にしかアクセスできそうになかったので、次に JavaからURLConnectionでサーバBのサーブレットにアクセスし、session情報を取得できるのかと調べたのですが、こちらでも、できそうにありませんでした。何かよい方法はありましたら、ご教授お願い致します。 | ||||
|
投稿日時: 2004-10-19 21:10
なぜ他サーバ上のSessionを取得したいのでしょう? クラスタリング動作をお考えですか? そのような場合、Sessionを複数サーバ間で同期するのは、 ミドルウェア(APサーバ)の役割になります。 ちなみに、Servletの枠組みで上記を実現する機能はありません。 [追記] もし、ミドルウェアの機能無しにどうしてもSession情報をサーバ間で シェアしたい場合は、独自にSessionを共有する仕組みを作る必要があります。 その場合、RDBMSを経由するのが安直だと思います。 但し、この場合はRDBMS上にあるSessionデータと、各サーバにある Sessionデータとの整合性を保つ必要があり、きちんと動作させる ためには結構手が掛かると思います。 [ メッセージ編集済み 編集者: おばけ 編集日時 2004-10-19 21:38 ] | ||||
|
投稿日時: 2004-10-19 21:35
アプリケーションサーバに依存しない方法としてはセションIDをキーにして共有したい
情報を共通のDBなどに格納するというやり方が使えます。 | ||||
|
投稿日時: 2004-10-20 17:14
おばけ様、meltingpot様
回答ありがとうございました。 別サーバのサーブレットを、そのまま流用できないかと思って考えてみたのです。 この機能を実現する方法は、やはり、手が掛かるんですね。 質問に回答いただき、ありがとうございました。 | ||||
|
投稿日時: 2004-10-20 19:51
そのサーブレットを、今回対象としているサーバにもデプロイすれば良いのでは? |
1