Fix (APAR): JR31967 Status: Fix Release: 6.1.0.3,6.1.0.2,6.1.0.1 Operating System: AIX,HP-UX,Linux,Solaris,Windows Supersedes Fixes: CMVC Defect: xxxxxx Byte size of APAR: 29977 Date: 2009-04-28 Abstract: Under high loads, de-serialization path in service component architecture (SCA) throws a classcast exception while parsing simple types on the WSDL wrapper. Description/symptom of problem: JR31967 resolves the following problem: ERROR DESCRIPTION: During a load test, ClassCastException errors are thrown. Reported environment is 6.1.0.1. When translating SCA wrapper to WSDL wrapper, there is some EMF code that copies over anySimpleType as the wrapped object (in this case, java.lang.Boolean). This code executes in WSDLTypeHelper.convertToWSDLType. In WSDLTypeHelper.copyFeature, there is a check if we are copying over anySimpleType feature. If it is anySimpleType, then we re-wrap the simple type and return it. The problem is that this check is only performed if the simple type is Integer or String. It needs to be altered to handle ANY simple types (like Boolean). Error stack trace: [11/11/08 14:35:00:014 CET] 00000070 SystemOut O Caused by: java.lang.ClassCastException: java.lang.Boolean incompatible with org.eclipse.emf.ecore.EObject at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElementIDRefSingl e(XMLS aveImpl.java:2003) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveFeatures(XMLSaveI mpl.ja va:1439) at com.ibm.ws.bo.bomodel.util.BOXMLSaveImpl.saveFeatures(BOXMLSaveI mpl.ja va:523) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElementID(XMLSave Impl.j ava:2458) at com.ibm.ws.bo.bomodel.util.BOXMLSaveImpl.writeTopObject(BOXMLSav eImpl. java:92) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.traverse(XMLSaveImpl. java:5 49) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSaveImpl.java :233) at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave(XMLResourc eImpl. java:203) [.....] LOCAL FIX: none PROBLEM SUMMARY USERS AFFECTED: WebSphere Process Server v6.1.x, v6.1.2.x, and v6.2.0 users. PROBLEM DESCRIPTION: Under high loads, de-serialization path in service component architecture (SCA) throws a classcast exception while parsing simple types on the WSDL wrapper. RECOMMENDATION: None De-serialization code path in SCA and WSDL plugin did not account for all the simple types while parsing wrapper object containing simple types. Only String and Integer types were being suupported. This resulted in classcast exceptions when other simple types are part of the wrapper. Exception trace: Stack Dump = java.lang.RuntimeException: Error serializing BO co m.ibm.ws.sca.internal.multipart.impl.ManagedMultipartImpl@657e65 7e (eClass: BusinessObjectType: invokeTwoWayWithoutFaultResponse _._type@666e666e (namespace=wsdl:http://SCULib/Inf/SCUInf, insta nceClass=com.ibm.wsspi.sca.multipart.Multipart, schema=jar:file: /usr/WebSphere/AppServer/lib/ext/SCULib.jar!/Inf/SCUInf.wsdl)) at com.ibm.ws.bo.service.BOXMLSerializerImpl.save(BOXMLS erializerImpl.java:420) at com.ibm.ws.bo.service.BOXMLSerializerImpl.writeDataOb ject(BOXMLSerializerImpl.java:161) at com.ibm.bpe.flavor.impl.bpc.SDOServiceBPC.serialize(S DOServiceBPC.java:109) at com.ibm.bpe.util.DataObjectWrapper.writeObject(DataOb jectWrapper.java:97) at sun.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Deleg atingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStr eamClass.java:973) at java.io.ObjectOutputStream.writeSerialData(ObjectOutp utStream.java:1431) at java.io.ObjectOutputStream.writeOrdinaryObject(Object OutputStream.java:1382) at java.io.ObjectOutputStream.writeObject0(ObjectOutputS tream.java:1111) at java.io.ObjectOutputStream.defaultWriteFields(ObjectO utputStream.java:1467) at java.io.ObjectOutputStream.writeSerialData(ObjectOutp utStream.java:1439) at java.io.ObjectOutputStream.writeOrdinaryObject(Object OutputStream.java:1382) at java.io.ObjectOutputStream.writeObject0(ObjectOutputS tream.java:1111) at java.io.ObjectOutputStream.writeObject(ObjectOutputSt ream.java:325) at com.ibm.bpe.util.SerializerDeserializer.serializeInte rnal(SerializerDeserializer.java:236) at com.ibm.bpe.util.ExtendedSerializerDeserializer.seria lizeInternal(ExtendedSerializerDeserializer.java:70) at com.ibm.bpe.util.SerializerDeserializer.serialize(Ser ializerDeserializer.java:70) at com.ibm.bpe.api.ClientObjectWrapper.writeObject(Clien tObjectWrapper.java:198) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native M ethod) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMet hodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Deleg atingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStr eamClass.java:973) at java.io.ObjectOutputStream.writeSerialData(ObjectOutp utStream.java:1431) at java.io.ObjectOutputStream.writeOrdinaryObject(Object OutputStream.java:1382) at java.io.ObjectOutputStream.writeObject0(ObjectOutputS tream.java:1111) at java.io.ObjectOutputStream.defaultWriteFields(ObjectO utputStream.java:1467) at java.io.ObjectOutputStream.writeSerialData(ObjectOutp utStream.java:1439) at java.io.ObjectOutputStream.writeOrdinaryObject(Object OutputStream.java:1382) at java.io.ObjectOutputStream.writeObject0(ObjectOutputS tream.java:1111) at java.io.ObjectOutputStream.writeObject(ObjectOutputSt ream.java:325) at com.ibm.bpe.util.SerializerDeserializer.serializeInte rnal(SerializerDeserializer.java:236) at com.ibm.bpe.util.ExtendedSerializerDeserializer.seria lizeInternal(ExtendedSerializerDeserializer.java:70) at com.ibm.bpe.util.SerializerDeserializer.serialize(Ser ializerDeserializer.java:97) at com.ibm.bpe.framework.navigation.EngineMessageWrapper .(EngineMessageWrapper.java:76) at com.ibm.bpe.framework.navigation.NavigationMessageHan dler.persistMessage(NavigationMessageHandler.java:106) at com.ibm.bpe.framework.navigation.NavigationMessageHan dler.sendInternalMessage(NavigationMessageHandler.java:206) at com.ibm.bpe.framework.sca.ProcessSessionBean.bpc_onIn vokeResponse(ProcessSessionBean.java:2065) at com.ibm.bpe.framework.sca.EJSLocalStatelesscomponent_ Unfall_Storno_3cf1f390.bpc_onInvokeResponse(Unknown Source) at com.ibm.bpe.framework.sca.ProcessImplementationHandle r.handleAsyncResponseCallbackMessage(ProcessImplementationHandle r.java:358) at com.ibm.bpe.framework.sca.ProcessImplementationHandle r.processMessage(ProcessImplementationHandler.java:163) at com.ibm.ws.sca.internal.message.impl.MessageDispatche rImpl.processMessage(MessageDispatcherImpl.java:1286) at com.ibm.ws.sca.internal.message.impl.ManagedMessageIm pl.process(ManagedMessageImpl.java:829) at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.p rocessUOWMessage(ModuleSessionBean.java:336) at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.t ransactionRequiredActivitySessionSupports(ModuleSessionBean.java :307) at com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_ 43132892.transactionRequiredActivitySessionSupports(Unknown Sour ce) at com.ibm.ws.sca.internal.uow.handler.UOWStrategyImpl.t ransactionGlobalActivitySessionAny(UOWStrategyImpl.java:336) at com.ibm.ws.sca.internal.uow.handler.JoinUOWHandler.pr ocessMessage(JoinUOWHandler.java:168) at com.ibm.ws.sca.internal.message.impl.MessageDispatche rImpl.processMessage(MessageDispatcherImpl.java:1297) at com.ibm.ws.sca.internal.message.impl.ManagedMessageIm pl.process(ManagedMessageImpl.java:829) at com.ibm.ws.sca.internal.async.impl.AbstractAsyncInbou ndHandler.processMessage(AbstractAsyncInboundHandler.java:122) at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessage Bean.processMessage(ServiceSIBusMessageBean.java:265) at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessage Bean.access$000(ServiceSIBusMessageBean.java:50) at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessage Bean$1.onMessage(ServiceSIBusMessageBean.java:74) at com.ibm.wbiserver.manualrecovery.ejb.RecoveryMDBHandl er.processMessage(RecoveryMDBHandler.java:126) at com.ibm.wbiserver.manualrecovery.ejb.RecoveryMDBHandl er.onMessage(RecoveryMDBHandler.java:82) at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessage Bean.onMessage(ServiceSIBusMessageBean.java:115) at sun.reflect.GeneratedMethodAccessor100.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Deleg atingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at com.ibm.ejs.container.MessageEndpointHandler.invokeMd bMethod(MessageEndpointHandler.java:1018) at com.ibm.ejs.container.MessageEndpointHandler.invoke(M essageEndpointHandler.java:747) at $Proxy10.onMessage(Unknown Source) at com.ibm.ws.sib.ra.inbound.impl.SibRaEndpointInvokerIm pl.invokeEndpoint(SibRaEndpointInvokerImpl.java:156) at com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispat ch(SibRaDispatcher.java:768) at com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessList ener$SibRaWork.run(SibRaSingleProcessListener.java:584) at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:419 ) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java :1473) Caused by: java.lang.ClassCastException: java.lang.Boolean incom patible with org.eclipse.emf.ecore.EObject at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElemen tIDRefSingle(XMLSaveImpl.java:2003) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveFeatur es(XMLSaveImpl.java:1439) at com.ibm.ws.bo.bomodel.util.BOXMLSaveImpl.saveFeatures (BOXMLSaveImpl.java:523) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElemen tID(XMLSaveImpl.java:2458) at com.ibm.ws.bo.bomodel.util.BOXMLSaveImpl.writeTopObje ct(BOXMLSaveImpl.java:92) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.traverse(X MLSaveImpl.java:549) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSa veImpl.java:233) at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave (XMLResourceImpl.java:203) at org.eclipse.emf.ecore.resource.impl.ResourceImpl.save (ResourceImpl.java:993) at com.ibm.ws.bo.bomodel.util.SerializerUtil$1.run(Seria lizerUtil.java:131) at java.security.AccessController.doPrivileged(AccessCon troller.java:246) at com.ibm.ws.bo.bomodel.util.SerializerUtil.privilegedS ave(SerializerUtil.java:122) at com.ibm.ws.bo.service.BOXMLSerializerImpl.save(BOXMLS erializerImpl.java:412) ... 69 more PROBLEM CONCLUSION: Applying the interim fix will resolve the issue. Directions to apply fix: Download and follow Update Installer installation instructions. The Update Installer can be downloaded from the following link: http://www.ibm.com/support/docview.wss?rs=180&uid=swg21205991 1) Copy the pak file to the directory maintenance in the UpdateInstaller directory 2) Shutdown WebSphere Process Server. It is important that you perform a controlled and complete shutdown of the server to ensure that all transactions have completed, before installing the fix. 3) Run the UpdateInstaller and follow the prompts. 4) Restart WebSphere Process Server. Directions to remove fix: NOTE: FIXES MUST BE REMOVED IN THE REVERSE ORDER IN WHICH THEY WERE APPLIED. DO NOT REMOVE A FIX UNLESS ALL FIXES APPLIED AFTER IT HAVE FIRST BEEN REMOVED. YOU MAY REAPPLY ANY REMOVED FIX. Example: If your system has fix1, fix2, and fix3 applied in that order and fix2 is to be removed, fix3 must be removed first, then fix2 may be removed 1) Shutdown WebSphere Process Server. It is important that you perform a controlled and complete shutdown of the server to ensure that all transactions have completed, before installing the fix. 2) Follow the Fix instructions that are packaged with the Fix Installer on how to uninstall and reinstall the Fix. 3) Restart WebSphere Process Server. Directions to re-apply fix: 1) Shutdown WebSphere. It is important that you perform a controlled and complete shutdown of the server to ensure that all transactions have completed, before installing the fix. 2) Run the UpdateInstaller and follow the instructions. The Update Installer can be downloaded from the following link: http://www.ibm.com/support/docview.wss?rs=180&uid=swg21205991 3) Restart WebSphere Process Server. Additional Information: