2012-10-30 10 views
8

Próbowałem zmienić naszą implementację Activiti na używanie CDI, ale napotkałem na szereg problemów. Spędziłem zbyt wiele czasu próbując rozwiązać ten problem, ale po prostu nie mogę pozwolić mu odejść ... Myślę, że udało mi się teraz rozwiązać ten problem, rozpoczynając czystą wojnę bez udziału Activiti i odtworzyć to, co moim zdaniem jest głównym problemem.Problem ServiceLoadera w WebLogic12c

Zasadniczo mam jar1 i jar2, oba CDI włączone przez włączenie META-INF/beans.xml. Oba słoiki określają klasę w META-INF/services/test. Test wskazuje implementacje lokalne dla odpowiednich słoików. jar1 zależy od jar2. Ponadto oba słoiki wskazują na implementację javax.enterprise.inject.spi.Extension, uruchamiając scenariusz. W każdej realizacji Extension, mam metoda jak:

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()); 
    } 
} 

Teraz moim problemem jest to, że ServiceLoader nie widać żadnych implementacje w każdym przypadku, gdy uruchomiony WebLogic12c. Ten sam kod działa doskonale zarówno w Jboss 7.1.1 i Glassfish, wymieniając obydwie implementacje interfejsu test.Test.

Czy można założyć, że jest to rzeczywiście problem w WebLogic 12c lub czy robię coś nie tak? Proszę pamiętać, że po prostu próbuję naśladować konfigurację, której używamy podczas włączania Activiti.

Pozdrawiam, /Petter

+0

czy masz jakieś aktualne informacje na ten temat? –

+0

Niestety nie. Wydaje się być problem z schematami ładowania klas w WebLogic. Niecierpliwie oczekuję kolejnej wersji WebLogic, aby sprawdzić, czy to rozwiąże problem. –

Odpowiedz

0

Jest ClassLoader Analysis Tool wyposażony WLS, widziałeś, jeśli to pomoże w diagnozie problemu.

Dostęp do tego narzędzia można uzyskać, przechodząc do pliku ip: port/wls-cat/index.jsp Miejsce, w którym port będzie portem serwera zarządzanego, na którym wdrożono aplikację.