无法更改Glassfish v3 J2EE应用程序上的Locale

时间:2013-07-25 09:31:40

标签: java java-ee locale glassfish-3

我的开发服务器我的glassfish网络应用程序报告它有一个本地的en_US。这导致日期以美国格式显示。我希望我们使用locale en_GB作为日期。

我的开发服务器是一个配置如下的虚拟框:

  • Ubuntu Ubuntu 12.04.2 LTS服务器
  • Oracle Java 1.7.0_11
  • GlassFish Server开源版3.1.2.2(版本5)
  • GlassFish正在使用upstart
  • 运行
  • JavaServerFaces 1.2 Web应用程序

主机和VM都将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)在Admin界面中,选择Domain并将语言环境设置为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应用程序与本机服务器区域设置一起运行?

1 个答案:

答案 0 :(得分:0)

根据Locale.getDefault()的Javadoc,您可以使用Locale.setDefault(Locale)更改默认语言环境。显然,在应用程序中对区域设置进行硬编码并不是很好,因此您可以考虑从配置文件或JVM选项中读取它。