インターフェースMyInterfraceがあります。
システムにはいくつかの EAR があり、それぞれがそのインターフェイスの独自の実装を持っています。名前のないすべての実装を見つける必要があります ( ? extends MyInterface )。
私はjava.util.ServiceLoaderを使用することに決め、その中に META-INF/services/com.example.MyInterface を含む jar を作成しました。この jar はどの EAR でもデプロイできます。
jar には、int の init メソッド内にサーブレットと次のコードがあります。
ServiceLoader<MyInterface > loader = ServiceLoader.load(MyInterface .class);
Iterator<MyInterface > it = loader.iterator();
しかし、イテレータはまだ空です..
services/com.example.MyInterface を EARs META-INF に追加しようとしましたが、結果は同じです。
このアプローチは、jboss 6 と tomcat でうまく機能します。