0

私は適切に構成された http インボーカーのセットアップがあり、動作状態にあります。認証には、基本的にさまざまな基準 (Web コンテキスト、ユーザー名 pwd など) に基づいてスレッド ローカルに認証ビットを追加する AOP を使用します。

そして今、問題。コールがサービス終了時に受信されると、私のサービスは認証ビットを確認します。慎重にデバッグしたところ、それぞれのアスペクトが呼び出されていないことに気付きました。

認証ビットをスレッドローカルに追加するアスペクトの関連コードを次に示します。

@Before(value = "execution(public * provision(..))")
public void authenticate(){...}

そして、これが呼ばれるサービスメソッドです。

public ServiceResponse provision(String xyz, String abc){...}

ローカルセットアップで呼び出される「provision()」メソッドを作成すると、アスペクトが呼び出されます。しかし、このメソッドが http-invoker 経由で呼び出された場合、呼び出されませんか? この問題をエレガントに回避するにはどうすればよいですか? (私は認証ピースを provision() メソッドに追加するという1つの解決策を持っていますが、それは私のテスト能力とSRPを妨げています.

4

1 に答える 1

0

AOPプロキシはどのように作成されますか?自動プロキシで実行されますか?HttpInvokerServiceExporterを使用しているため、アプリケーションのメインコンテキストとエクスポーターを指定する-servlet.xmlファイルの少なくとも2つのコンテキストもあると思います。これは正しいです?メインコンテキストのAOP構成が子-servlet.xmlコンテキストに伝播されないため、おそらく問題があります。

于 2011-10-26T17:39:58.277 に答える