Activiti の実装を CDI を使用するようにリファクタリングしようとしましたが、多くの問題に遭遇しました。私はすでにこれを解決するためにあまりにも多くの時間を費やしてきましたが、それを手放すことはできません...私は今、問題を突き止め、Activitiを関与させずにきれいに構造化された戦争を設定し、それができたと思います.私が主な問題だと思うものを再現すること。
基本的に、jar1 と jar2 があり、どちらも META-INF/beans.xml を含めることで CDI が有効になります。両方の jar は、META-INF/services/test.TheTest で、それぞれの jar にローカルな実装を指すクラスを指定します。jar1 は jar2 に依存します。また、両方の jar が javax.enterprise.inject.spi.Extension の実装を指し、シナリオをトリガーします。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());
}
}
さて、私の問題は、ServiceLoader
WebLogic12c を実行しているときに、どちらの場合も実装が表示されないことです。Jboss 7.1.1 と Glassfish の両方で同じコードが完全に正常に動作し、test.TheTest インターフェイスの両方の実装がリストされています。
これが実際に WebLogic 12c の問題であると仮定するのは公平でしょうか、それとも何か間違ったことをしているのですか? Activiti を組み込むときに使用する本番環境のセットアップをエミュレートしようとしているだけであることを心に留めておいてください。
よろしく、/ペッター