Archive for 2008年3月7日
御注意:ロードバランサー構築時の問題の解決方法
1点問題を報告します。
私が過去にブログで書いた下記のエントリで、
マルチリンガル版を使用して下記の手順通りに設定して頂くと
正常に動作しないという問題を確認しました。
今日は、その問題の御報告と対処方法について説明します。
ロードバランサプラグインのインストールと設定
私が上記のエントリを書いていた時は、まだマルチリンガル版がリリースされておらず、
英語版(テクニカルプレビュー版)を使用してインストール、設定を行っていたので
実際に上記の通り問題ありませんでした。
今回、御紹介する問題はマルチリンガル版においてのみ発生致します。
そこで、英語版を使用した場合にはこの問題は発生いたしません。
詳細は、下記に記載しております。
https://glassfish.dev.java.net/issues/show_bug.cgi?id=4288
#このエントリを読んでいただいた日本人の方は是非、
#注目度を上げるため、投票を行って頂けないでしょうか。
#当然、私の方から社内から、エンジニアリングチームに対して
#プッシュを掛けておりますが。(次期バージョンで修正される予定)
#注目度が高いとそれだけ日本人が望んでいるんだという証になります。
さて、実際の問題についての報告ですが、ロードバランサプラグインを
設定して頂いている環境で、クライアントのブラウザからLBプラグイン
経由でアプリケーションサーバにアクセスをすると、期待するコンテンツが
ブラウザに正常に表示されずバイナリデータをダウンロードするウィンドウが
表示されるという現象が発生する事があります。
この問題は、当初Webサーバ側、もしくはロードバランサプラグイン側の
問題ではないかと思っていたのですが、実は、アプリケーションサーバ側の
問題でした。
アプリケーションサーバ側では、送信されてきたHTTPリクエストに対する
レスポンスを返す際に、下記のようなHTTPヘッダに変な文字列を付け加えて
投げ返すように実装されておりました。
*************************************************
HTTP/1.1 200 ・
HTTP/1.1 302 B・・ユW~W_
HTTP/1.1 401 *
HTTP/1.1 404 掬K樫[
HTTP/1.1 500 ・オ・・鵈
*************************************************
上記は、ヘッダ内のレスポンス応答文字列も日本語化していた
ために発生しているのですが、HTTPヘッダの内容はASCIIテキストで
返さない場合、HTTPクライアントによっては変な挙動を起こしてしまいます。
本問題に対する対処方法についてですが、
各インスタンスのJVMの設定において、「JVM オプションを追加」ボタンを
押下して、”-Duser.language=en”のオプションを追加して頂ければ、
問題を回避できます。
このオプションにつきましては、内部的なログファイルの内容が
英語で表示される等の変更がありますが、基本的にはシステムの運用に対する影響は
少なく、Webの管理画面につきましても、上記の画面を見て頂く通り、ブラウザの
ロケールが日本語環境に設定されている場合、日本語で管理画面が表示されます。
また作成頂いた日本語アプリケーションも問題なく扱える事まで確認しております。
(UTF8確認)
このワークアラウンドを使用して仮に何らかの問題があった場合は、
コメント欄に記載して下さい。
つか、HTTPヘッダまで日本語化してしまっていたなんて。。。(T_T)
追記です(2008/03/13)
********************************************************************************
本問題は、次期バージョンであるSun Java System Application Server 9.1.1で
修正される事が正式に決まりました。ですのでSun Java System Application
Server 9.1.1以降を御使用の方は本ワークアラウンドの適用は行わなくても
よくなります。
********************************************************************************