如何在EJB3 SessionBean中找出用户的语言?

时间:2012-04-23 09:31:59

标签: internationalization ejb-3.0

我们有一个JSF2.0 / EJB3.0应用程序。是否可以从StatelessSessionBean中访问用户的语言/区域设置?比如说那样的东西?

@Stateless
@Local(MyService.class)
public class MyServiceBean implements MyService {

    @Resource
    private SessionContext context;

    public void doSomething() {
        Principal principal = context.getCallerPrincipal();

        // how to get acccess to user's language ?
        Locale locale = ...
    }
}

当然,可以将Locale从Web层传递到ejb tier by参数到每个方法。但这是最聪明的变种吗?

是否有更好的解决方案,类似于 context.getCallerPrincipal();

我正在寻找类似的事情: context.getCallerLocale();

感谢您的帮助。 尤

1 个答案:

答案 0 :(得分:0)

没有这样的标准功能。一种技术是使用线程本地,但您需要小心确保调用.remove()以避免导致容器的线程池出现问题。唯一的另一种选择是使用特定于供应商的功能,例如WebSphere Application Server的Internationalization service