1. WAS 버전 : WAS ND
2. OS : All
3. Error 발생 시점 : 하나의 WAS 안의 같은 EAR 내에서의 Workarea service remote call 에는 문제가 없는데
하나의 WAS 안의 다른 EAR 간 Workarea service call 시 ClassCastException 발생
4. Error message :
[13. 5. 20 13:48:19:345 KST] 00000045 SystemOut O Caused by: java.rmi.RemoteException: ; nested exception is:
java.lang.ClassCastException: xxx.requestcontext.HeaderRequestContextData incompatible with xxx.requestcontext.HeaderRequestContextData
at xxx.requestcontext.HeaderRequestContextManager.getRequestContextData(HeaderRequestContextManager.java:44)
at ds.cmr.asynch.transaction.ejb.UserAsynchTransactionCallerBean.doTransaction(UserAsynchTransactionCallerBean.java:86)
at ds.cmr.asynch.transaction.ejb.EJSRemoteStatelessUserAsynchTransactionCMRCaller_114f6f7e.doTransaction(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.rmi.util.ProxyUtil$4.run(ProxyUtil.java:726)
at java.security.AccessController.doPrivileged(AccessController.java:246)
at com.ibm.rmi.util.ProxyUtil.invokeWithClassLoaders(ProxyUtil.java:724)
at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1161)
at $Proxy5.doTransaction(Unknown Source)
at aaa.ejb._UserAsynchTransactionCaller_Stub.doTransaction(_UserAsynchTransactionCaller_Stub.java:270)
at aaa.otis.request.FwtBOTDR0001.transmitRequest(FwtBOTDR0001.java:150)
at aaa.batch.framework.userexit.AbstractRequestDataUE.transmitRequest(AbstractRequestDataUE.java:100)
at xxx.apputil.finance.onlinetransactioninvocationservice.ControlFacadeBean.execController(ControlFacadeBean.java:631)
at xxx.onlinetransactioninvocationservice.EJSLocalStatelessControlFacade_de45d1ec.execController(EJSLocalStatelessControlFacade_de45d1ec.java:225)
at com.ibm.nefss.apputil.finance.onlinetransactioninvocationservice.ControlDelegate.execController(ControlDelegate.java:508)
at com.ibm.nefss.apputil.finance.onlinetransactioninvocationservice.PerformerBean.run(PerformerBean.java:143)
at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:261)
at java.security.AccessController.doPrivileged(AccessController.java:219)
at javax.security.auth.Subject.doAs(Subject.java:495)
at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:118)
at com.ibm.ws.asynchbeans.J2EEContext$DoAsProxy.run(J2EEContext.java:328)
at java.security.AccessController.doPrivileged(AccessController.java:246)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:757)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:218)
at com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:158)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)
Caused by: java.lang.ClassCastException: xxx.requestcontext.HeaderRequestContextData incompatible with xxx.requestcontext.HeaderRequestContextData
... 29 more
5. 예상 이유 :
"Deferred attribute serialization" 옵션이 true 로 설정되어 있으면 EAR 간의 classloader 가 다르기 때문에 해당 class 를
다른 class 로 인식하게 되면서 ClassCastException 발생
6. 조치 방안 :
"Deferred attribute serialization" 옵션을 false 로 변경하거나 해당 class 를 shard library 로 만들어서
다른 EAR 에서 공동으로 참조할 수 있게 변경하면 됨
IBM - old/WAS 문제&해결
댓글