Java 具有不同区域设置的客户端和服务器-回退机制

Java 具有不同区域设置的客户端和服务器-回退机制,java,jboss,Java,Jboss,我使用fr_CH语言环境运行jboss服务器,使用de_CH语言环境运行应用程序客户端。我有两个包-messages.properties(root)和messages\u fr\u CH.properties。奇怪的是,在服务器端,ResourceBundle.getBundle(“bundleLocation”,new Locale(“de”,“CH”)返回fr\u CH Locale的bundle,而不是根bundle 我唯一能想到的是,在服务器端Locale.getDefault()是“

我使用fr_CH语言环境运行jboss服务器,使用de_CH语言环境运行应用程序客户端。我有两个包-messages.properties(root)和messages\u fr\u CH.properties。奇怪的是,在服务器端,ResourceBundle.getBundle(“bundleLocation”,new Locale(“de”,“CH”)返回fr\u CH Locale的bundle,而不是根bundle

我唯一能想到的是,在服务器端Locale.getDefault()是“fr_CH”,但如果我理解正确,由于优雅降级的概念,标准java回退机制不应该关心它

还有其他想法吗?问题可能是什么

谢谢,
Jan

您是正确的,这种行为是因为默认的区域设置。查看javadoc
ResourceBundle.getBundle

getBundle使用基本名称、指定的区域设置和默认值 locale(从locale.getDefault获得)生成 候选包名称。如果指定区域设置的语言、国家/地区, 和variant都是空字符串,那么基名称是唯一的 候选包名称。否则,将生成以下序列 从指定区域设置(language1, country1和variant1)以及默认语言环境(language2, 国家2和变量2):


所以您的案例是
baseName+“”+language2+“”+country2

谢谢,也许这会教我更好地阅读javadoc:)8)我看到我的许多同事(和我自己!)对默认语言环境和此方法感到困惑。
baseName + "_" + language1 + "_" + country1 + "_" + variant1
baseName + "_" + language1 + "_" + country1
baseName + "_" + language1
baseName + "_" + language2 + "_" + country2 + "_" + variant2
baseName + "_" + language2 + "_" + country2
baseName + "_" + language2
baseName