私はJavaが初めてで、次の問題の適切な解決策を探しています。一般的な方法でいくつかの操作を実行するアプリケーションを開発しました。ここで、このアプリケーションが、共通のインターフェースを使用する外部クラスまたは jar ファイル (実際にインストールされているかどうかに関係なく) に応じて、標準の動作をより具体的なものに変更できるようにしたいと考えています。これらの外部ファイルは、メイン アプリケーションよりもはるかに頻繁にアップグレードされることを前提としています。このタスクの正しいアプローチは何ですか? リフレクトはこれが可能ですか?ありがとう!
2 に答える
1
jar を classPath に追加すると、それをロードして、プラグインの効果を得ることができます。
しかし、それを classLoader にロードすると、クラス定義を単純に更新することはできません (その場で更新する必要がある場合)。
その場で更新が必要な場合は、OSGi などのソリューションがあります。プラグインを更新するたびに再起動できる場合は、Spring、Guice、Tapestry IoC などの単純な IoC コンテナーを使用できます。
ここに興味深い投稿があります。この場合、ロードされるモジュールは起動時に検出され、クラスパスにあるプラグインをロードしてロードされます (それぞれが jar である可能性があります)。
于 2012-07-05T11:13:42.500 に答える
0
Spaethの言うこと。ただし、アプリケーションを再起動せずにクラスを置き換える必要がある場合は、Commons JCI のReloadingClassloaderを使用できます。
于 2012-07-05T11:19:51.017 に答える