我目前正在开发一个jax-ws webservice,它被假定为从数据库提供国际化的搜索结果。
我查看了互联网,找到了一个具体的代码示例,其中languageCode / languageId以标准方式与SOAP信封一起发送(为了避免将languageId作为webservice方法的参数发送),但到目前为止还没有找到任何具体的东西。
任何人都可以向我推荐一个如何解决这个问题的好方法吗?
与此同时,我发现了一种通过HTTP请求标头传输元数据(languageId,用户,密码)的方式 javax.xml.ws.handler.MessageContext.HTTP_REQUEST_HEADERS
http://www.mkyong.com/webservices/jax-ws/application-authentication-with-jax-ws/
有没有人在使用这种传输方法时看到一些明显的缺点(通过HTTP标头而不是SOAP信封中)?
答案 0 :(得分:2)
不是很令人惊讶,但它有一个标准。 http://www.w3.org/TR/ws-i18n/
但我不确定它有多可行。
答案 1 :(得分:2)
正如另一个答案中所述,您可以使用标准WS-I18N SOAP extension。
需要发送国际首选项的SOAP文档应该 在标题中包含i18n:国际元素信息项。 当从请求者发送到提供者时,标头代表 请求者或其客户端应用程序的首选项。当发送时 来自提供者的响应消息,标题表示设置 该服务用于处理请求。
在此blog post中查看如何在JAX-WS / Metro中添加SOAP标头(它包含指向特定步骤的详细信息)。
希望这有帮助。