私の開発サーバーの私のglassfish Webアプリは、en_USのローカルがあると報告しています。これにより、日付が米国形式で表示されます。日付にロケール en_GB を使用したいと思います。
私の開発サーバーは、次のように構成された仮想ボックスです。
- Ubuntu Ubuntu 12.04.2 LTS サーバー
- オラクル Java 1.7.0_11
- GlassFish サーバー オープン ソース版 3.1.2.2 (ビルド 5)
- GlassFish は upstart を使用して実行されています
- JavaServerFaces 1.2 Web アプリ
ホスト マシンと VM の両方がデフォルトの OS ロケールとして en_GB を返します
$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=en_GB.UTF-8
ただし、Web アプリでロケールをログ ファイルに書き込むとき、または日付が表示されるときに、ロケールが en_US に設定されていることがわかります。
Locale locale = Locale.getDefault();
log("Login.login_btn_action(): Default locale = " + locale.toString());
レポート
Login.login_btn_action(): Default locale = en_US
これを修正するために、次のことを試しました(成功しませんでした):
1) 管理インターフェイスで、[ドメイン] を選択し、ロケールを en_GB に設定すると、この設定が domain.xml の最初の行に表示されることがわかります。
2) domain.xml の追加の jvm-options を「default-config」および「server-config」に追加して、user.language および user.country を設定します。
<jvm-options>-Duser.language=en</jvm-options>
<jvm-options>-Duser.country=GB</jvm-options>
(もちろん、変更を加えるたびに、Glassfish を停止して再起動します)
Java アプリをネイティブ サーバー ロケールで実行するためにチェック/変更する他のオプション/設定を提案できますか?