1

Eclipse OSGi Service Activator Toolkit は、バンドル間の依存関係の処理を簡素化するフレームワークを提供します。

org.eclipse.soda.sat.core.framework.BaseBundleActivator から派生させ、(たとえば) activate() メソッドをオーバーライドして、特定の初期化作業を行うことができます。

署名は保護されています void activate(){}

これは、「activate() が失敗した場合はどうすればよいのか?」という疑問につながります。何らかの理由で正しく初期化できないとします。例外をスローできません。メソッド シグネチャがそれを許可しません。

4

2 に答える 2

1

Equinox(org.eclipse.osgi_3.5.1.R35x_v20090827でテスト済み)を使用している場合、activate()メソッドでRuntimeExceptionまたはErrorをスローしても役に立ちません。何をスローするかに関係なく、バンドルは最終的にアクティブ状態になります。

私の理解では、これはOSGiの仕様に違反しているため、この動作はEquinox(バグ?)に固有のものであると思います。

于 2010-06-07T08:34:06.887 に答える
0

RuntimeExceptionError (およびこれらを継承する例外)をスローすることは引き続き可能です。(エラーは、合理的なアプリケーションがキャッチしようとすべきではない重大な問題を示していることに注意してください。)

ロギング機能に何かを出力することも良い考えのようです。

どちらを選択するかは、状況によって異なります。アクティベーション失敗の根本原因は何か。原因が何らかの異常である場合、それは通常の状況では発生しないはずであり、Error または RuntimeException (そしてもちろんログイン) が正しいと感じられます。

于 2009-05-08T20:36:19.263 に答える