私は現在、JBoss 5.0で動作する共通のサービスにアクセスするいくつかのWebアプリケーションを用意しています。 GuiceとPOJOを使って、このサービスは非常に簡単です。 Webアプリケーションは認証され、ユーザーが誰で、どの役割を持っているのかがわかります。サービスを呼び出すときに、この認証情報をどのようにサービスに渡すべきですか?Javaのアプリケーションレイヤ間でサブジェクト/プリンシパル/ロールをどのように渡す必要がありますか?
単純なアプローチは、インターフェイスにパラメータを追加してユーザー情報を取得するだけのようです。おそらく科目。しかし、これは、手元の仕事に特化していない文脈情報とのインターフェースを混乱させるという欠点があります。
void doSomething(Subject subject, ...) {
}
私が見てきた代替は、ThreadLocalのストレージを使用する呼び出しを行う前に、そこにユーザー情報を入れて、サービスを使用することができ、いくつかのユーティリティクラスを経由して、これがアクセスできるようにすることです。これにより、インターフェイスがクリーンアップされますが、コールする前にサービスのクライアントがユーザー情報を設定する必要があることが隠されます。
これを行う別の方法はありますか?私はAOPがここでも使われているかもしれないと感じているが、どうやって見えるのか分からない。私は行方不明のいくつかの "ベストプラクティス"がありますか? EJBは役に立ちますか?
私は以来、この問題に対処し、[Apacheの史郎](http://shiro.apache.org)に遭遇してきました。方法はわかりませんが、それはそれを行います。 – pauli