【问题标题】:Unable to change the Locale on a Glassfish v3 J2EE app无法更改 Glassfish v3 J2EE 应用程序的区域设置
【发布时间】:2013-07-25 09:31:39
【问题描述】:

我的开发服务器我的 glassfish web 应用程序报告它有一个本地 en_US。这导致日期以美国格式显示。我希望我们使用语言环境 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 应用程序

Host 机器和 VM 都返回 en_GB 作为默认 OS 语言环境

$ 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 应用程序在本机服务器区域设置下运行?

【问题讨论】:

    标签: java jakarta-ee locale glassfish-3


    【解决方案1】:

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

    【讨论】:

    • 他也可以尝试根据地区更改日期格式。
    • 感谢 mthmulders 的建议。使用 Locale.setDefault(Locale) 是一种解决方法。但是为什么 Glassfish 不使用操作系统或 jvm-option 语言环境仍然没有答案.....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2023-04-02
    • 2019-03-22
    • 2011-01-16
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多