- - PR -
Struts のファイルアップロードでフェイルオーバされない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-03-15 11:12
現在 Java + Struts + Jakarta POIを使用してシステム開発をしています。
更に2台のAPサーバで負荷分散、およびフェイルオーバされる仕組みとしています。 この中でファイルアップロード機能を使用しているのですが テストにおいて、使用している2台のAP サーバの内、 ファイルアップロード処理中のサーバ側を切断すると、 ブラウザ上は真白となり、上手くフェイルオーバされません。 (再試行により稼動しているもう一方のサーバ側にフェイルオーバされます) 再試行を要せずにフェイルオーバするための方法について、 ご存知の方がいらっしゃいましたら、ご教示下さい。 尚、struts-config.xmlファイルのアクションクラスの定義の スコープは、session から request のいずれの場合においても、 同じ現象となっております。 |
|
投稿日時: 2007-03-15 12:40
APサーバは何をお使いでしょうか?
また負荷分散/フェールオーバはどうやって実現していますか? 例えば、WebLogic で Web サーバプラグインを使って負荷分散/フェールオーバを行っているのであれば FileCaching 機能を使うことが出来ます。。 http://edocs.beasys.co.jp/e-docs/wls/docs81/plugins/plugin_params.html#1157851 リクエストのサイズが大きい場合、Web サーバ側で POST リクエストをファイルに保存して、AP サーバが落ちた場合はフェールオーバして POST リクエストを再試行してくれます。 |
|
投稿日時: 2007-03-15 13:21
ご連絡ありがとうございます。
構成は、下記のとおりです。 HTTP/APサーバ2機 tomcat5.0.28 Apache 2.0.49 ロードバランサ1機 Big-IP 負荷分散/フェールオーバの実現方法 java.io.Serializable で各オブジェクトをシリアライズ(直列化)可能にしています。 自分で作成したクラスのインスタンスをセッションオブジェクトとして使う際には implements Serializable を付加しています。 web.xmlの<web-app>ディレクティブ先頭行に<distributable/>を記載しています。 |
|
投稿日時: 2007-03-15 13:32
Big-IP に、WebLogic のFileCaching みたいな POST リクエストを一旦保存する機能はあるでしょうか?
なければ大きな POST リクエスト最中に落ちた場合にフェールオーバすることはできないと思います。 Big-IP のサポート窓口に問いあわせてみてはいかがでしょう。 |
|
投稿日時: 2007-03-15 13:39
ファイル送信の完全なフェイルオーバーなんてできるんですか?
ブラウザ側からF5等で再試行すれば動きそうな気はします。 落ちた場所にもよりますが、Webサーバが落ちたのならば、 ロードバランスしてようと、クライアントからはサーバに 強制的にTCPセッションを切られたのと同じになります。 Tomcatの場合は、mod_jkはワーカーがダウンした場合に リクエストを別のワーカーに再送する設定もありますが、 ブラウザから送信された全てのデータをメモリなり、 一時ファイルなりに常に保存しなければならないので、 ファイル送信に対応するのは厳しそうな気がします。 |
|
投稿日時: 2007-03-15 13:58
ご連絡ありがとうございます。
> ブラウザ側からF5等で再試行すれば動きそうな気はします。 ブラウザ側からの再試行で動作することは確認出来ております。 > Tomcatの場合は、mod_jkはワーカーがダウンした場合に > リクエストを別のワーカーに再送する設定もありますが、 前述の設定を試行してみたいと考えます。 お手数ですが、ご教示いただけますでしょうか。 |
|
投稿日時: 2007-03-15 14:50
>前述の設定を試行してみたいと考えます。
>お手数ですが、ご教示いただけますでしょうか。 mod_jk が WebLogic のプラグインのように、一旦ファイルに保存する仕組みが実装されていなければ Big-IP でフェールオーバするのとだいたい同じ事です。 やはりブラウザ側で再送信しないといけません。 |
1