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 层给每个方法。但这是最聪明的变种吗?

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

我正在寻找类似的东西:context.getCallerLocale();

谢谢你的帮助。维克多

4

1 回答 1

0

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

于 2012-04-23T21:08:43.283 回答