ClassCastException tra classi internal e classi Axis


Have you tried turning it off and on again?

Problema

L’applicazione Java non funziona, emettendo un errore di ClassCastException tra classi del package com.sun.xml.internal e classi del package org.apache.axis, ad esempio:

java.lang.ClassCastException: com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl cannot be cast to org.apache.axis.message.MessageElement

Analisi

L’applicazione si aspetta di utilizzare classi di Axis, mentre a runtime si trova caricate le omologhe classi dei package “di sistema” della JDK/JRE.

Soluzione

Se si dispone di un ambiente “dedicato”, provare a forzare l’utilizzo delle classi di Axis, impostando le opportune variabili di sistema Java nello script di lancio della JVM.
Ad esempio, per Tomcat, aggiungere in catalina.sh (o .bat):

JAVA_OPTS="$JAVA_OPTS -Djavax.xml.soap.SOAPFactory=org.apache.axis.soap.SOAPFactoryImpl"
JAVA_OPTS="$JAVA_OPTS -Djavax.xml.soap.MessageFactory=org.apache.axis.soap.MessageFactoryImpl"
JAVA_OPTS="$JAVA_OPTS -Djavax.xml.soap.SOAPConnectionFactory=org.apache.axis.soap.SOAPConnectionFactoryImpl"

View original post