2012-10-30 3 views
8

私は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を組み込むときに使用する生産セットアップをエミュレートしようとしていることに気をつけてください。

よろしく、 /ペッター

+0

これは更新されていますか? –

+0

残念ながら、 WebLogicのクラスローディング回路図に問題があるようです。 WebLogicの次のバージョンが問題を解決するかどうかを熱心に待っています。 –

答えて

0

WLSを提供クラスローダ分析ツールがあり、これはあなたの問題の診断に役立ちます場合は、あなたが見てきました。

このツールにアクセスするには、ip:port/wls-cat/index.jspにアクセスします。 ここで、portは、アプリケーションがデプロイされている管理対象サーバーのポートです。

関連する問題