Hi,
I made a mistake in my last email. The line 1329 is actually within method
invoke(Object[] params)
1329 throw new AxisFault( Messages.getMessage("errorInvoking00",
"\n" + exp) );
So, the ClassCastException was actually thrown in the try (starting at line
1314) block and caught by the catch block at line 1326.
But can anyone tell me where is org.apache.axis.attachments.AttachmentsImpl
used and casted in this invoke(Object[] params) method? I was debugging
this code in WSAD, and found the params Object array always contains one
object of Login. I can't think of anything different by the way we call
this invoke() method. Puzzled!
The full method:
public Object invoke(Object[] params) throws java.rmi.RemoteException {
long t0=0, t1=0;
if( tlog.isDebugEnabled() ) {
t0=System.currentTimeMillis();
}
/* First see if we're dealing with Messaging instead of RPC.
*/
/* If ALL of the params are SOAPBodyElements then we're doing
*/
/* Messaging, otherwise just fall through to normal RPC processing.
*/
/********************************************************************/
SOAPEnvelope env = null ;
int i ;
for ( i = 0 ; params != null && i < params.length ; i++ )
if ( !(params[i] instanceof SOAPBodyElement) ) break ;
if ( params != null && params.length > 0 && i == params.length ) {
/* ok, we're doing Messaging, so build up the message */
/******************************************************/
isMsg = true ;
env = new SOAPEnvelope(msgContext.getSOAPConstants());
if ( !(params[0] instanceof SOAPEnvelope) )
for ( i = 0 ; i < params.length ; i++ )
env.addBodyElement( (SOAPBodyElement) params[i] );
Message msg = new Message( env );
setRequestMessage(msg);
invoke();
msg = msgContext.getResponseMessage();
if (msg == null) {
if (FAULT_ON_NO_RESPONSE) {
throw new AxisFault(Messages.getMessage("nullResponse00"));
} else {
return null;
}
}
env = msg.getSOAPEnvelope();
return( env.getBodyElements() );
}
1312 if ( operationName == null )
1313 throw new AxisFault( Messages.getMessage("noOperation00")
);
1314 try {
1315 Object res=this.invoke(operationName.getNamespaceURI(),
1316 operationName.getLocalPart(), params);
1317 if( tlog.isDebugEnabled() ) {
1318 t1=System.currentTimeMillis();
1319 tlog.debug("axis.Call.invoke: " + (t1-t0) + " " +
operationName);
1320 }
1321 return res;
1322 }
1323 catch( AxisFault af) {
1324 throw af;
1325 }
1326 catch( Exception exp ) {
1327 //if ( exp instanceof AxisFault ) throw (AxisFault) exp ;
1328 entLog.info(Messages.getMessage("toAxisFault00"), exp);
1329 throw new AxisFault( Messages.getMessage("errorInvoking00",
"\n" + exp) );
1330 }
1331 }
Tony Chen
SUN Certified Java 2 Programmer
IBM Certified Enterprise Developer - WebSphere V4.0 & V5.0
Canadian Securities Course (CSC) Certification
Securities Industry Services, IBM Global Services
phone: 416-478-5852
e-mail: [EMAIL PROTECTED]
Tony
Chen/Toronto/IBM@
IBMCA To
[email protected]
05/20/2005 10:32 cc
AM
Subject
Axis V1.0 -
Please respond to java.lang.ClassCastException:
axis-user org.apache.axis.attachments.Attachm
entsImpl
Hi Everyone,
This is my first email to axis-user. We are using axis.jar V1.0 in order to
access a 3rd-party software. Our system is running fine in production until
a few days later, we got the following error:
java.lang.ClassCastException: org.apache.axis.attachments.AttachmentsImpl:
AxisFault
faultCode: {http://xml.apache.org/axis/}Server.generalException
faultString: Error invoking operation:
java.lang.ClassCastException: org.apache.axis.attachments.AttachmentsImpl
faultActor: null
faultDetail:
stackTrace: AxisFault
faultCode: {http://xml.apache.org/axis/}Server.generalException
faultString: Error invoking operation:
java.lang.ClassCastException: org.apache.axis.attachments.AttachmentsImpl
faultActor: null
faultDetail:
Error invoking operation:
java.lang.ClassCastException: org.apache.axis.attachments.AttachmentsImpl
at org.apache.axis.client.Call.invoke(Call.java:1329)
at com.actuate.schemas.ActuateSoapBindingStub.login(Unknown Source)
at com.ibm.sis.util.ActuateHelper.getProxyForUser(Unknown Source)
...
I downloaded the source code for Axis v1.0 and the line 1329 of Call.java
is "return this.invoke(params);" in method "public Object invoke(QName
operationName, Object[] params)"
1324 public Object invoke(QName operationName, Object[] params)
1325 throws java.rmi.RemoteException {
1326 QName origOpName = this.operationName;
1327 this.operationName = operationName;
1328 try {
1329 return this.invoke(params);
1330 }
1331 catch (java.rmi.RemoteException re) {
1332 this.operationName = origOpName;
1333 throw re;
1334 }
1335 catch (RuntimeException re) {
1336 this.operationName = origOpName;
1337 throw re;
1338 }
1339 catch (Error e) {
1340 this.operationName = origOpName;
1341 throw e;
1342 }
1343 } // invoke
Can anyone please give me a hand on why this is happening? The interesting
thing is everything runs okay in development and test systems. The
ClassCastException only happens in production system after it has been
running for a few day. To recover from the problem, we have to restart the
app server.
Best regards,
Tony Chen
SUN Certified Java 2 Programmer
IBM Certified Enterprise Developer - WebSphere V4.0 & V5.0
Canadian Securities Course (CSC) Certification
Securities Industry Services, IBM Global Services
phone: 416-478-5852
e-mail: [EMAIL PROTECTED]