4

ServiceLoaderのようなものを探していますが、SPIファイルに依存していません。ここでは、すべてのサービス実装を列挙してから、クラスローダーのパスに追加して見つける必要があります。

インターフェイスとサービスのいくつかの実装を備えたアプリケーションがあるとしましょう。どのフレームワークを使用できますか?これにより、アプリケーションに新しいJARを追加できます。これには、いくつかの新しい実装が含まれ、そのアプリケーション内のすべてのクラスローダーのクラスパスに自動的に追加できますか?ここでは、すべてのクラスローダーが非常に重要です。これがNetBeansモジュールアプリケーションの場合、NetBeansプラットフォームは奇妙な魔法を実行し、どのクラスローダーがどのスレッドでどのクラスパスで使用されているかがわからないためです。 、新しいJARを見つけるためにアプリケーションを再起動する必要がない場合でも、それは重要な要件ではありません。

OSGiについてはすでに聞いたことがありますが、これは大きすぎるようで、必要な機能は1%だけです。

提案をありがとう!

4

3 に答える 3

7

最も簡単な解決策は、 JSPFを使用することです。

より「エンタープライズ」なものはOSGiを使用することかもしれません...しかしその場合、例としてiPOJOを見る必要があります。申し訳ありませんが、私はついにあなたのメッセージを読み直しました。あなたの言うこととは反対に、OSGiはサービスのロードと動的な配線を正確に可能にするので、あなたのニーズにぴったり合っていると思います。

また、IoCコンテナーは、いくつかの拡張機能を使用して、その種の機能を提供する場合があります(少なくとも、Guice拡張機能を使用して可能だと思います)。

于 2010-07-07T12:26:50.100 に答える
2

NetbeansLookupAPIを探しているようです-リンク

于 2010-07-07T13:02:48.817 に答える
0

新しい代替案(これは古い質問です)はsezpozかもしれません。

META-INFリソースが注釈プロセッサによって自動的に作成されることを除いて、リソースルックアップを使用するという点でJDKServiceLoaderと非常によく似ています。したがって、その注釈は非常に重く、一般的に後処理を犠牲にしてよりタイプセーフです。ハドソン/ジェンキンスによって使用されます。

コウスケがこの注釈処理のアイデアを最初に思いついたと思います:http://metainf-services.kohsuke.org/

于 2015-02-25T14:47:47.810 に答える