- PR -

Weblogicから別のWeblogicを呼び出すとセッションタイムアウト

1
投稿者投稿内容
kabosu
会議室デビュー日: 2007/05/17
投稿数: 2
投稿日時: 2007-05-17 21:12
皆様、はじめまして。
Weblogicのことで質問させていただきます。

現在関わっている業務のことですが、
Weblogic上で稼動するWebアプリケーションから、別のWeblogicで稼動するWebアプリケーションを別ウィンドウで呼び出すと、その後で元のWeblogic上で稼動するWebアプリケーションがセッションタイムアウトになってしまいます。

【環境】
OS:SunOS 5.9
Webサーバ:(A)Weblogic 8.1.0 SP5
      (B)Weblogic 8.1.0 SP5
DBサーバ:Oracle 9.2.0.1.0
JDK:jdk1.4.2_08(A,BのWebサーバに共通)
通常使うWebアプリケーション(a)はWebサーバ(A)上で稼動しており、
Webサーバ(B)上で稼動するアプリケーション(b)は、Webアプリケーション(a)の一機能として提供しています。
Webサーバ(A)とWebサーバ(B)は同一マシン上に存在していますが、起動・停止を行うOS上のアカウントを別にしており、Webサーバのポート番号も分けてあります。

【症例】
Webアプリケーション(a)をブラウザから開き(仮にURLを「http://server:portA/js/Login.jsp」とします)、ログインした後メニューからアプリケーション(b)を開くリンクをクリックします。
別ウィンドウでアプリケーション(b)が開かれるので、そのままWebアプリケーション(a)の別メニューをクリックすると
「セッションがタイムアウトになった」と判定され、実際にタイムアウトになった時と同じエラーダイアログが表示されます。

【当該部分に使っているJSPのコード】
-------------------------------------------------
<a href="<%= request.getContextPath() %>/sv/pc?<%= WebKeys.PAGE %>=Menu" target="workarea" >Webアプリケーション(a)のメニュー</a>

<a href="#" onclick="javascript:window.open('http://server:portB/tiger/TIG000.do?tiger.targetParam=_blank&amp;tiger.tokenID=&amp;tiger.functionID=010Disp&amp;userId=<%= user.getUserID() %>','_blank','top=0,left=0,width=1010,height=700,statusbar=0,resizable=yes,menubar=no,toolbar=no'); return false;">別ウィンドウで開く、アプリケーション(b)のメニュー</a>
-------------------------------------------------

【設定用XMLファイル】
タイムアウトに関して、Webアプリケーション(a)では
web.xmlに以下の記述がありました。
-------------------------------------------------
<session-config>
<session-timeout>30</session-timeout>
</session-config>
-------------------------------------------------

アプリケーション(b)ではweblogic.xmlに以下の記述がありました。
-------------------------------------------------
<session-descriptor>
<session-param>
<param-name>TimeoutSecs</param-name>
<param-value>6000</param-value>
</session-param>
</session-descriptor>
-------------------------------------------------


本当はログファイルを閲覧してセッション情報を追いかけるのが筋だとは思うのですが
現在管理者の許可が下りていない状態です。
非常に難しい事例だとは思うのですが、皆様のお力を貸していただけないでしょうか。
よろしくお願いします。。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-05-17 21:25
100%再現するのであればパケットキャプチャをしてセッションのクッキーを確認してみてはいかがでしょうか。

ポートが違うだけだとクッキーが上書きされるんでしたっけ?
だとすればセッションのクッキー名を変更すればいいかも。
・weblogic.xml デプロイメント記述子の要素 > session-descriptor > CookieName
http://edocs.beasys.co.jp/e-docs/wls/docs81/webapp/weblogic_xml.html#1038216

再現性が低くて調査がむずかしいのであればサポート窓口に問いあわせるのも良いですね。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-05-17 21:31
システム名称はいえませんが、某元役所系のお仕事で
IndexArrayOutOfBoundsException が発生しても セッションタイムアウトとでるものもあるので、

すべての例外が SessionTimeOut の画面にJumpしてないかを確認してください。
エラー箇所がSESSIONと関係してるかを見てください。
Loggerをしいて Run & Debug を実行してみるべきだとおもう。

マーサ
ベテラン
会議室デビュー日: 2004/11/26
投稿数: 87
投稿日時: 2007-05-18 10:27
window.open使用時は、ウィンドウが親子関係になるために、同一セッションが使用されるはずです。
#メニューから「ファイル→新規作成→ウィンドウ」も同様
つまり、最後にアクセスした画面が有効になります。

IEを新規(スタートメニューから)起動した場合、別セッションになったと記憶しています。
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2007-05-18 12:03
1.ブラウザからのセッションが同一になっていること。
2.クッキーはドメイン毎で使用されること。
この2つの要因で事象が発生しているのではないでしょうか。(仮説)

1.サーバAに「sessionid=01」でアクセス。この情報をクッキーで保持。
2.サーバBに接続する際に「sessionid=02」でアクセス。このときクッキー上書き。
3.サーバAに「sessionid=02」でアクセス。この情報はサーバAには持っていないために事象発生。

キャプチャすればわかりますね。
kabosu
会議室デビュー日: 2007/05/17
投稿数: 2
投稿日時: 2007-05-21 23:06
皆様、ご回答ありがとうございます。
その後ログを閲覧することができましたので
おおよその原因が「セッション情報の消失(上書き?)」であることを突き止めました。
まだ解決できていませんが、情報をご提供いただきまして
大変感謝しております。

以上
1

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