私はActivitiの実装をCDIを使用してリファクタリングしようとしていましたが、いくつかの問題がありました。私はすでにこれを解決しようと多くの時間を費やしてきましたが、私はそれを行かせることができません...私は今問題を解決し、Activitiを含まずにきれいな構造化戦争を設定し、私は主な問題だと思うものを再現する。WebLogic12cでのServiceLoaderの問題
私は基本的にjar1とjar2を持っていますが、どちらもMETA-INF/beans.xmlをインクルードすることでCDIを有効にしています。どちらのjarもMETA-INF/services/test.TheTestのクラスを指定して、それぞれのjarのローカルな実装を指しています。 jar1はjar2に依存します。また、両方のjarは、javax.enterprise.inject.spi.Extensionの実装を指し、シナリオをトリガーします。
public void afterDeploymentValidation(
@Observes AfterDeploymentValidation event, BeanManager beanManager) {
System.out.println("In jar1 extension");
ServiceLoader<TheTest> loader = ServiceLoader.load(TheTest.class);
Iterator<TheTest> serviceIterator = loader.iterator();
List<TheTest> discoveredLookups = new ArrayList<TheTest>();
while (serviceIterator.hasNext()) {
TheTest serviceInstance = (TheTest) serviceIterator.next();
discoveredLookups.add(serviceInstance);
System.out.println(serviceInstance.getClass().getName());
}
}
さて、私の問題はWebLogic12cを実行するときにServiceLoader
は、いずれの場合には任意の実装を見ていないということです:拡張の各実装では、私のような方法があります。同じコードが、Jboss 7.1.1とGlassfishの両方で完全に正常に動作し、test.TheTestインターフェイスの両方の実装がリストされています。
WebLogic 12cではこれが実際に問題であると思われるのですか、何か間違っていますか?私は単にActivitiを組み込むときに使用する生産セットアップをエミュレートしようとしていることに気をつけてください。
よろしく、 /ペッター
これは更新されていますか? –
残念ながら、 WebLogicのクラスローディング回路図に問題があるようです。 WebLogicの次のバージョンが問題を解決するかどうかを熱心に待っています。 –