- PR -

別サーバのセッション情報は取得できますか?

1
投稿者投稿内容
SALSA
会議室デビュー日: 2004/10/19
投稿数: 13
投稿日時: 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情報を取得できるのかと調べたのですが、こちらでも、できそうにありませんでした。何かよい方法はありましたら、ご教授お願い致します。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-10-19 21:10
引用:

サーバBのサーブレットからsession情報を取得することはできるのでしょうか??


なぜ他サーバ上のSessionを取得したいのでしょう?
クラスタリング動作をお考えですか?
そのような場合、Sessionを複数サーバ間で同期するのは、
ミドルウェア(APサーバ)の役割になります。

ちなみに、Servletの枠組みで上記を実現する機能はありません。

[追記]
もし、ミドルウェアの機能無しにどうしてもSession情報をサーバ間で
シェアしたい場合は、独自にSessionを共有する仕組みを作る必要があります。
その場合、RDBMSを経由するのが安直だと思います。

但し、この場合はRDBMS上にあるSessionデータと、各サーバにある
Sessionデータとの整合性を保つ必要があり、きちんと動作させる
ためには結構手が掛かると思います。

[ メッセージ編集済み 編集者: おばけ 編集日時 2004-10-19 21:38 ]
meltingpot
常連さん
会議室デビュー日: 2004/06/15
投稿数: 24
投稿日時: 2004-10-19 21:35
アプリケーションサーバに依存しない方法としてはセションIDをキーにして共有したい
情報を共通のDBなどに格納するというやり方が使えます。
SALSA
会議室デビュー日: 2004/10/19
投稿数: 13
投稿日時: 2004-10-20 17:14
おばけ様、meltingpot様

回答ありがとうございました。

別サーバのサーブレットを、そのまま流用できないかと思って考えてみたのです。
この機能を実現する方法は、やはり、手が掛かるんですね。

質問に回答いただき、ありがとうございました。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-10-20 19:51
引用:

別サーバのサーブレットを、そのまま流用できないかと思って考えてみたのです。


そのサーブレットを、今回対象としているサーバにもデプロイすれば良いのでは?
1

スキルアップ/キャリアアップ(JOB@IT)