2011-09-07 3 views
2

JSF 2.0으로 웹 응용 프로그램을 만들었습니다. http-header에서 전송 된 언어별로 선택된 독일어 (기본값)와 영어를 지원합니다.JSF 2.0 : 다른 서버에 배포 한 후 잘못된 언어가 선택되었습니다.

내 로컬 서버 (Tomcat 6.0)에서 자동 언어 선택이 정확했습니다. "독일어"가 가장 높은 우선 순위를 가지면 응용 프로그램이 독일어입니다. 영어에 대해서도 마찬가지입니다.

하지만 지금은 웹 서버 (Apache Webserver 뒤에있는 Tomcat 6.0, ModJk 사용)에 배포했으며 현재는 영어로만 제공됩니다. 그러나 HTTP 헤더는 여전히 동일합니다 :

Accept-Language:  de-de,en-us;q=0.8,de;q=0.5,en;q=0.3 
(Fetched from Firebug) 

내 얼굴-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> 

파일 "Lang.properties"와 "Lang_en de.citkomm.tbm.locale의 .properties 파일이 올바르게 배포되었습니다.

Apache + ModJk + Tomcat 6.0에 문제가 있습니까? 아니면 잘못 구성된 것입니까? Tomcat이 잘못된 언어를 선택한 이유는 누구입니까?

미리 감사드립니다.

+0

요청 헤더는 클라이언트 측이 아니라 서버 측에서 디버그해야합니다. HTTPD 또는 modjk는 Tomcat으로 전달하기 전에이를 제거/변경했을 수 있습니다. – BalusC

답변

0

이상한 점은 ... HTTP 헤더에 여전히 올바른 Accept-Language이 있는지 확인하면 mod_jk가 영향을 미치지 않아야한다고 생각합니다. 동일한 내부 네트워크에 있다면 온전한 확인을 위해 Tomcat 웹 응용 프로그램에 직접 액세스하고 Apache Web Server를 건너 뛸 수 있습니다. 그러나 이것이 문제가 아닌지 의심 스럽습니다.

톰캣 서버 환경에 배포 된 공통 라이브러리가있는 경우 다른 버전의 JSF 구현이 사용되고있을 가능성이 있으며, 아마도 국제화 버그가있는 이전 버전 일 수 있습니다.

JBoss와 Glassfish와 같은 응용 프로그램 서버에서 이러한 현상이 발생하는 것을 보았습니다. 기본적으로 자체 JSF 구현으로 미리 패키징되어 있습니다. 마찬가지로 JBoss/Glassfish 클래스 로더는 번들로 제공되는 JSF 구현 라이브러리와 WEB-INF/lib에 나타나는 JSF 구현을 비교했습니다.

그러나 Tomcat 6은 기본적으로이 작업을 수행하지 않지만 어떤 종류의 클래스로드 문제를 의심합니다. 웹 서버에 공통 라이브러리와 배포 된 라이브러리를 두 번 확인하고 올바른 JSF 구현이 있는지 확인하십시오.

0

글쎄, tomcat이 내 우분투 서버의 evironment-variable을 사용하는 이유를 모르지만 그렇습니다.

LANG가 "en_US.UTF-8"에서 "de_DE.UTF-8"로 변경되었으므로 이제는 문제가 없습니다. : S

고마워요!