网络服务i18n

时间:2013-06-24 13:06:47

标签: java spring web-services cxf

我正在使用cxf和spring开发一些Web服务。服务必须能够识别语言环境,因为某些消息是在数据库中定义的。

实施它的正确方法是什么?

如何将区域设置传递给服务?可以在HTTP标头中或SOAP标头中。我不希望使用除HTTP之外的其他传输,因此可能是HTTP标头将是一个不错的选择。

如何从Web服务代码中检索语言环境?可能是我可以使用一些Spring线程本地功能。顺便说一句,我使用Spring安全性进行身份验证和授权,因此我可以在安全上下文中以某种方式放置语言环境。

任何评论或示例都会有很大帮助。

非常感谢提前!

1 个答案:

答案 0 :(得分:1)

一般来说,您要求隐式显式参数的利弊。

隐式参数通常用于传递数据库连接,多租户ID,用户语言等。 - 不是真正直接的函数/服务参数的东西,但它们对正在生成的结果有影响。

在封闭系统中,您可以考虑隐式传递这些内容。所以没有必要明确地传递这些(这往往会使你的代码混乱)。

另一方面,它使你的代码“不那么明确”:如果你(或其他人)稍后查看代码,可能不清楚是否有其他东西在引擎盖下传递:声明隐式参数的位置,以及隐式使用它的函数,可能会造成混淆。

因此,即使在封闭的系统中,也应谨慎使用此功能:“较少打字”的优势应与“隐形隐式参数”的成本进行比较。

另一方面,在公共API的上下文中,我不会使用implicits:没有什么比明确传输所有参数的函数调用简单:我不会添加任何其他人工技术复杂性。如果您保持简单的技术界面,可能会阻止来电者的沮丧。