In base alla documentazione OSGi, OSGi è progettato per aiutare a prevenire i problemi di ClassPath.OSGi: come garantire la coerenza del classpath?
Ad esempio, da "OSGi in azione":
ClassNotFoundExceptions quando iniziano l'applicazione perché il percorso classe non era corretta. OSGi può aiutare assicurando che le dipendenze del codice siano soddisfatte prima di consentire l'esecuzione del codice.
Tuttavia, dal momento che abbiamo passato la nostra applicazione java a OSGi, vedo più ClassNotFoundExceptions e soprattutto NoClassDefFoundErrors che mai. Le classi che in precedenza caricavano correttamente non vengono più trovate dal classloader OSGI, e peggio: si ottiene l'errore in fase di esecuzione, il che significa che non è possibile controllarlo facilmente eccetto testando manualmente ogni angolo della propria applicazione.
Ad esempio, la nostra applicazione era in esecuzione felicemente con OSGi, ma abbiamo ricevuto rapporti dai beta tester che non potevano più esportare documenti in PDF. In effetti, quando ho guardato dentro, ho scoperto che questa funzionalità ha causato un'eccezione da registrare:
java.lang.NoClassDefFoundError: org/w3c/dom/Node
Quindi, è in realtà la creazione OSGi più problemi di quanti ne risolva classpath?
e, ancora più importante: come posso verificare che il mio percorso di classe sia coerente, con tutte le istruzioni Import-Package necessarie, ecc. prima del Ho letto su di loro in segnalazioni di bug?
"se non per testare manualmente ogni angolo della vostra applicazione" - test automatizzati ERM? (lo stesso vale per qualsiasi applicazione) Se prima di eseguire la migrazione avevi suite di test, avresti individuato questi errori prima dei testers. Per verificare che i tuoi bundle si colleghino correttamente devi eseguire alcuni test di integrazione: stiamo utilizzando Pax Exam per questo e abbiamo brevi test di integrazione (bundle corrente e collaboratori) e alcuni test end-to-end più lunghi (testare l'intera app). – earcam