Javaアプリケーションに動的プラグイン機能を実装したいと思います。理想的には:
- アプリケーションは、の
Plugin
ようなメソッドでインターフェースを定義しますgetCapabilities()
。 - プラグインは、実装
pluginX.jar
するクラス(およびおそらく他のいくつか)を含むJARになります。PluginXImpl
Plugin
- ユーザーは
pluginX.jar
、特別なディレクトリに配置するか、それを指す構成パラメーターを設定します。ユーザーは必ずしもpluginX.jar
クラスパスに含める必要はありません。 - アプリケーションは
PluginXImpl
(おそらくJARマニフェストを介して、おそらくリフレクションによって)それを見つけてレジストリに追加します。 - クライアントは
PluginXImpl
、たとえば、のようなメソッドを呼び出すことによって、のインスタンスを取得できますgetPluginWithCapabilities("X")
。ユーザーは必ずしもプラグインの名前を知っている必要はありません。
ピーベリーでこれができるはずだと思いますが、ドキュメントの意味がわかりません。私はGuiceの学習に時間を費やしてきたので、私の好みの答えは「SpringDynamicModulesを使用する」ではありません。
Guice / peaberry、OSGi、または単なるJavaを使用してこれを行う方法について誰かが私に簡単なアイデアを教えてもらえますか?