2012-04-23 45 views
0

我們有一個JSF2.0/EJB3.0應用程序。是否可以從StatelessSessionBean中訪問用戶的語言/區域設置?例如類似的東西?如何在EJB3 SessionBean中找出用戶的語言?

@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 = ... 
    } 
} 

當然也能夠通過參數從web層通過區域設置到EJB層到每個方法。但這是最聰明的變體嗎?

是否有更好的解決方案,類似於context.getCallerPrincipal();

我在尋找類似的東西:context.getCallerLocale();

感謝您的幫助。 Viktor

回答

0

沒有這樣的標準功能。一種技術是使用線程本地,但您需要小心確保調用.remove()以避免導致容器線程池出現問題。唯一的另一種選擇是使用特定於供應商的功能,例如WebSphere Application Server的Internationalization service