Java JSF2.0:部署到另一台服务器后选择了错误的语言
我用JSF2.0制作了一个web应用程序。它支持德语(默认)和英语,这是由语言选择的,在http头中发送 在我的本地服务器(Tomcat 6.0)上,自动语言选择是正确的,如果我的最高优先级是“德语”,那么应用程序就是德语。英语也一样 但是现在我将它部署到了我的Web服务器上(Tomcat6.0在Apache Web服务器后面,使用ModJk),现在它只使用英语。但http头仍然是相同的:Java JSF2.0:部署到另一台服务器后选择了错误的语言,java,apache,jsf,tomcat,Java,Apache,Jsf,Tomcat,我用JSF2.0制作了一个web应用程序。它支持德语(默认)和英语,这是由语言选择的,在http头中发送 在我的本地服务器(Tomcat 6.0)上,自动语言选择是正确的,如果我的最高优先级是“德语”,那么应用程序就是德语。英语也一样 但是现在我将它部署到了我的Web服务器上(Tomcat6.0在Apache Web服务器后面,使用ModJk),现在它只使用英语。但http头仍然是相同的: Accept-Language: de-de,en-us;q=0.8,de;q=0.5,en;q
Accept-Language: de-de,en-us;q=0.8,de;q=0.5,en;q=0.3
(Fetched from Firebug)
my faces-config.xml中的语言包条目如下所示:
<application>
<locale-config>
<default-locale>de</default-locale>
<supported-locale>en</supported-locale>
</locale-config>
<resource-bundle>
<base-name>de.citkomm.tbm.locale.Lang</base-name>
<var>lang</var>
</resource-bundle>
</application>
判定元件
EN
de.citkomm.tbm.locale.Lang
朗
de.citkomm.tbm.locale中的文件“Lang.properties”和“Lang_en.properties”已正确部署
这是Apache+ModJk+Tomcat6.0的问题还是配置错误?有人知道为什么Tomcat选择了错误的语言吗
提前谢谢 真奇怪。。。我认为mod_jk不应该影响这一点,因为您要验证HTTP头仍然包含正确的
Accept语言。如果您在同一个内部网络上,那么您可以尝试直接访问Tomcat web应用程序并跳过Apache web服务器,但是我怀疑这是问题所在
如果您在Tomcat服务器环境中部署了任何公共库,那么可能正在使用不同版本的JSF实现,可能是有国际化bug的早期版本
我在JBoss和Glassfish等应用服务器上看到过这种情况,默认情况下,这些应用服务器都预先打包了自己的JSF实现。类似地,JBoss/Glassfish类加载器优先选择捆绑的JSF实现库,而不是出现在WEB-INF/lib
中的任何JSF实现
然而,Tomcat6在默认情况下不会这样做,但我仍然怀疑存在某种类加载问题。仔细检查web服务器上的公共库和已部署库,并验证是否存在正确的JSF实现。这很奇怪。。。我认为mod_jk不应该影响这一点,因为您要验证HTTP头仍然包含正确的Accept语言。如果您在同一个内部网络上,那么您可以尝试直接访问Tomcat web应用程序并跳过Apache web服务器,但是我怀疑这是问题所在
如果您在Tomcat服务器环境中部署了任何公共库,那么可能正在使用不同版本的JSF实现,可能是有国际化bug的早期版本
我在JBoss和Glassfish等应用服务器上看到过这种情况,默认情况下,这些应用服务器都预先打包了自己的JSF实现。类似地,JBoss/Glassfish类加载器优先选择捆绑的JSF实现库,而不是出现在WEB-INF/lib
中的任何JSF实现
然而,Tomcat6在默认情况下不会这样做,但我仍然怀疑存在某种类加载问题。仔细检查您的公共库和web服务器上部署的库,并验证是否存在正确的JSF实现。好吧,我不知道tomcat为什么使用我的Ubuntu服务器的环境变量,但确实如此
将LANG从“en_US.UTF-8”改为“de_de.UTF-8”,现在一切都好了:
无论如何谢谢你 我不知道tomcat为什么使用我的Ubuntu服务器的环境变量,但它确实使用了
将LANG从“en_US.UTF-8”改为“de_de.UTF-8”,现在一切都好了:
无论如何谢谢你 您必须在服务器端而不是客户端调试请求头。HTTPD或modjk在转发到Tomcat之前可能已经剥离/更改了它。您必须在服务器端而不是客户端调试请求头。HTTPD或modjk在转发给Tomcat之前可能已经剥离/更改了它。