Post

Visualizzazione dei post con l'etichetta Class Loader

ClassCastException con oggetto in ClassLoader diversi

Immagine
DOMANDA: Perchè ricevo un errore di ClassCastException se dalla mia webapp recupero lo stesso oggetto creato da un'altra webapp? RISPOSTA: Di solito questo errore si verifica quando stiamo utilizzando un oggetto in due class loader diversi . Ad esempio ho una webapp A che utilizza un oggetto X del jar X.jar presente nella sua WEB-INF/lib . Decido di recuperare l'oggetto X dalla webapp B che avrà anch'essa nella sua WEB-INF/lib il jar X.jar . In questo caso è vero che l'oggetto X è lo stesso ma viene caricato sia nel class loader di A che in quello di B. Ciò comporta la generazione di un errore di ClassCastException quando si tenta di recuperare l'oggetto X da B. Per ovviare facilmente a questo errore si potrebbe decidere di inserire il jar X.jar in un class loader condiviso tra le due webapp A e B (ad esempio il class loader dell'Application Server). Una soluzione più elegante, che offre una serie di vantaggi e rispetta le tecniche d