2011-09-22 3 views
0

메트로를 사용하여 Java에서 SOAP 웹 서비스를 개발 중입니다. 응답을 클라이언트 언어로 전달하고 싶습니다. 제 아이디어는 모든 문자열 필드를 반환하는 것입니다. 이것은 웹 서비스의 주요 목적은 아니지만 필요한 편의입니다.클라이언트 언어로 웹 서비스 응답 - 방법?

ResourceBundle은 클라이언트 위치에 따라 정확한 문자열 세트로드를 처리하는 Java 클래스입니다. 이 클래스가 가장 적합한 접근인가요?

실제 질문 : WS 환경에서 클라이언트 위치를 아는 방법은 무엇입니까?

편집 : @Volker 아이디어가 마음에 들면, 어떤 언어가 사용될 지 결정 해주세요.

서비스에 의도를 보내는 방법은 무엇입니까?

  • 헤더 매개 변수?
  • 메서드 (본문) 매개 변수?
  • 다른 옵션은 무엇입니까?

답변

2

일반적으로 가능하면 클라이언트가 자신이 원하는 언어를 명시하여 자신의 필요에 따라 전달하도록합니다.

enUS, deDE 등의 목록을 제공하는 다른 웹 메소드 "getSupportedLanguages"가 될 수 있으며 다른 방법은 해당 언어를 사용하고 올바른 응답을 제공 할 수 있습니다. 또는 모든 언어 버전을 제공하고 클라이언트가이를 분류 할 수있게하십시오. 그러나 이것은 지원되는 로케일의 수에 따라 약간의 네트워크 잔인 함이 될 수 있습니다 ...

제 생각에는 WebServices가 "자체적으로 서 있어야합니다."클라이언트는 씬하고 컨텐트를 처리하는 데 많은 정보가 필요하지 않습니다. . 귀하의 Ressources 등으로 작업 할 수없는 C# 클라이언트를 상상해보십시오. 또는 ressources가없는 새로운 클라이언트가 데이터로 작업 할 수없는 경우 ...

또한 클라이언트 로케일을 실제로 얻는 방법과 다를 수 있습니다. 영어가 아닌 사람이 영어 시스템을 사용하거나 영어 국가 일 수 있지만 자신의 모국어로 된 데이터를보고 싶습니다. 그러나 당신이 정말로 이것을해야한다면, 나는 이것을 가능케 할 어떤 것도 모르고 있습니다.

2

번역은 서비스의 주된 목적입니까, 아니면 단지 사용자의 편의를 고려한 것입니까?

그런 언어 중립적 메시지 (같은 service.fail 또는 뭔가를 보낼 수있는 방법으로, 응용 프로그램 디자인, 그것을이다 : 나는 가지 다른 방법으로 라운드 문제에 대해 갈 것이라고 후자의 경우를 들어

)를 클라이언트에 보내고 클라이언트가 로컬 자원 번들로 인해 클라이언트를 변환하게합니까? 이렇게하면 서비스의 독립적 인 사용자가 ResourceBundle을 사용하여 번역을 포함하여 원하는 답변으로 변환 할 수 있습니다. 내 눈에는 클라이언트 인터페이스가 서비스의 일이 아니라 적절한 메시지를 보여주는 것입니다.

물론이 단점은 리소스 번들이 더 이상 한 곳에서 없어지지 않는다는 것입니다.

질문의 다른 측면에 관해서는 : ResourceBundle은 가야 할 길입니다. 특별히 작업을 위해 설계되었습니다.

기타 : 웹 서비스가 Http 요청을 직접 가로 채고 필드를 읽는 클라이언트에 대해 전혀 알지 못하는데 특히 Accept-Language입니다. 이 필드는 en-US과 같은 언어를 인코딩합니다.

+0

편집 됨; 번역은 보조이지만 필요합니다. ws는 일련의 필드가있는 객체를 반환하고 문자열 인 객체는 전자 번역이 필요합니다. –