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

もちろん、各メソッドのパラメーターによって、ロケールをWeb層からEJB層に渡すことは可能です。しかし、これは最も賢いバリアントですか?

context.getCallerPrincipal();に似たより良い解決策はありますか?

私は次のようなものを探しています:context.getCallerLocale();

ご協力いただきありがとうございます。ヴィクトル

4

1 に答える 1

0

そのような標準機能はありません。1つの手法は、スレッドローカルを使用することですが、コンテナーのスレッドプールで問題が発生しないように、.remove()を慎重に呼び出す必要があります。他の唯一の代替手段は、WebSphereApplicationServerの国際化サービスなどのベンダー固有の機能を使用することです。

于 2012-04-23T21:08:43.283 に答える