2013-07-25 67 views
3

我的開發服務器GlassFish的我的web應用程序報告說,它有一個本地EN_US的。這導致日期以美國格式顯示。我希望我們在日期中使用語言環境en_GB。無法更改區域設置上Glassfish的第三版J2EE應用程序

我的開發服務器配置爲虛框如下:

  • 的Ubuntu的Ubuntu 12.04.2 LTS服務器
  • 甲骨文的Java 1.7.0_11
  • GlassFish應用服務器3.1.2.2版(版本5 )
  • GlassFish中使用新貴
  • JavaServerFaces 1.2的Web應用程序
運行

無論是主機和虛擬機在我的web應用程序都返回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 

然而,當我寫的區域設置日誌文件,或顯示日期時,我可以看到現場設置爲en_US。

   Locale locale = Locale.getDefault(); 
       log("Login.login_btn_action(): Default locale = " + locale.toString()); 

報告

Login.login_btn_action(): Default locale = en_US 

爲了解決這個問題,我嘗試了以下(無sucess):

1)在管理員界面,選擇域和區域設置到EN_GB 我可以看到,此設置出現在第一行的domain.xml中:

2)添加在domain.xml中進行額外的JVM選項爲「默認配置」和「服務器配置」來設置user.language和user.country

<jvm-options>-Duser.language=en</jvm-options> 
    <jvm-options>-Duser.country=GB</jvm-options> 

(當然,每次我做出改變我停止和啓動Glassfish的)

請你可以建議其他選項/設置檢查/改變讓我的Java應用程序與本機服務器的語言環境中運行?

回答

0

根據Javadoc的Locale.getDefault(),可以使用Locale.setDefault(Locale)更改默認語言環境。顯然,在你的應用中硬編碼一個語言環境並不是很好,所以你可以考慮從配置文件或JVM選項中讀取它。

+1

他也可能會嘗試根據區域設置更改日期格式。 – Lenymm

+1

感謝mthmulders的建議。使用Locale.setDefault(Locale)是一種解決方法。 但是爲什麼Glassfish不使用操作系統或jvm-option語言環境仍然沒有答案..... – SteveGreenslade

相關問題