Ho cercato di ridefinire la nostra implementazione di Activiti nell'uso del CDI, ma ho incontrato una serie di problemi. Ho passato troppo tempo a cercare di risolvere questo problema, ma non riesco a lasciarlo andare ... Penso di aver bloccato il problema ora, creando una guerra strutturata senza coinvolgere Activiti e ho potuto riprodurre ciò che penso sia il problema principale.Problema ServiceLoader in WebLogic12c
Fondamentalmente ho jar1 e jar2, entrambi CDI abilitati includendo META-INF/beans.xml. Entrambi i jar specificano una classe in META-INF/services/test. Il test punta alle implementazioni locali per il rispettivo jar. jar1 dipende da jar2. Inoltre, entrambi i jar puntano a un'implementazione di javax.enterprise.inject.spi.Extension, attivando lo scenario. In ogni implementazione di estensione, ho un metodo come:
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());
}
}
Ora, il mio problema è che il ServiceLoader
non vede alcun implementazioni in entrambi i casi durante l'esecuzione WebLogic12c. Lo stesso codice funziona perfettamente sia in Jboss 7.1.1 che in Glassfish, elencando entrambe le implementazioni del test. Interfaccia test.
È giusto presumere che questo sia effettivamente un problema in WebLogic 12c o sto facendo qualcosa di sbagliato? Per favore, tieni a mente che sto semplicemente cercando di emulare il setup di produzione che usiamo quando incorpori Activiti.
saluti, /Petter
avete aggiornato su questo? –
Purtroppo no. Sembra essere un problema con gli schemi di caricamento della classe in WebLogic. Attendiamo con impazienza la prossima versione di WebLogic per vedere se questo risolve il problema. –