Domanda

Eseguo il server delle applicazioni Java di iPlanet, qualcosa sta caricando commons-logging-1.0.4.jar .

Va ??bene fino a quando una delle mie applicazioni chiama AuthSSLProtocolSocketFactory che è un'altra libreria apache che utilizza anche registrazione comune .

Metto il vaso sul percorso di classe jvm e ottengo questo errore:

  

Gerarchia del caricatore di classi non valida. Hai più di una versione di "org.apache.commons.logging.Log" visibile, che non è consentita.   (Causato da org.apache.commons.logging.LogConfigurationException: gerarchia del caricatore di classi non valida ....

Sembra che a commons-logger non piaccia avere due istanze di se stesso caricate in diversi classloader. Suppongo che il server delle applicazioni abbia un proprio caricatore di classi che lo sta caricando la prima volta (anche se non riesco a trovare alcuna configurazione di appserver che lo menziona), quindi quando la mia applicazione lo carica per la seconda volta genera quell'eccezione.

Non riesco a cambiare il web server e non posso cambiare la libreria apache. Suggerimenti?

È stato utile?

Soluzione

Stai inserendo esplicitamente i beni comuni nel tuo percorso di classe? Hai detto jvm classpath, quindi presumo che lo specifichi sulla riga di comando quando avvii iPlanet. Questo non è il modo consigliato per caricare barattoli nelle app J2EE.

La cosa più semplice è lasciare che la libreria Apache usi il jar di registrazione dei beni comuni fornito con iPlanet. Non inserire commons-logging.jar nella tua directory WEB-INF / lib o in qualsiasi impostazione del percorso di classe e quella di iPlanet dovrebbe essere prelevata automaticamente.

Altri suggerimenti

Dai un'occhiata a SLF4J .

Inoltre, http://www.qos.ch/logging/classloader.jsp aiuterà.

Non hai familiarità con iplanet, ma in WebSphere puoi impostare la tua politica di caricamento delle classi delle applicazioni su PARENT_LAST. Questo caricherà quindi tutto nel classloader delle applicazioni prima di guardare il genitore. Questo dovrebbe risolvere questo tipo di problema, supponendo che tu abbia un'impostazione simile.

Ciò significa che dovrai fornire tutte le dipendenze nella tua applicazione (che è comunque la migliore pratica).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top