4

Maven-SCRを使用しています。@Componentandタグを使用する@Serviceことで、クラスインスタンスに自動的に提供されるインターフェイスを登録させることができます。

ただし、場合によっては、activateメソッド(としてマークされている@Activate)またはコンストラクターでさえ、例外をスローして、処理できない方法で失敗することがあります。

問題は次のとおりです。適切にログに記録できるようにその例外をキャッチしたいのですが、同時に、アクティブ化または初期化に失敗した場合にクラスがサービスを公開しないようにしたいのです。

どうやってこれをするの?

ありがとう!

4

2 に答える 2

2

SCR仕様では、これらのメソッドからの例外をOSGiLogServiceに記録する必要があります。LogService実装バンドルがインストールされていますか?もしそうなら、そこに記録されたこれらのメソッドからの例外を見つけることができます。これらの例外を他のログに記録する必要がある場合は、PaxLoggingのようなものをチェックアウトすることをお勧めします。

于 2012-10-07T13:51:06.893 に答える
1

まず、OSGi フレームワークのロギング構成を調べます。これらの例外をログに記録する必要があります。

それがうまくいかない場合は、注釈付きのメソッドにこのタイプのコードを入れるだけです

catch (Exception ex) {  // or RuntimeException if possible
    // log it
    // then rethrow
    throw ex;
}

これは、重複するスタック トレースが生成される傾向があるため、アンチ パターンと見なされていることに注意してください。

OSGi に問題を引き起こす可能性がありますが、これをアスペクトに移動することもできます。

于 2012-10-07T13:13:40.070 に答える