1/9用友股份-LE支持服务业务本部技术方案--《NC575版本取消结账月份发生objecterror错误解决案例》建立日期:2013-10-20修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2013-01102/9文档控制创建记录适用范围审阅人日期审阅签字所属部门发布范围发布人姓名所属部门发布时间内部员工伙伴客户日期作者所属部门邮件地址版本2013-10-20赵健技术支持部V1.0版本领域模块备注NC5753/9目录NC575版本取消结账月份发生objecterror错误解决案例..................................4一.系统环境...............................................................................................................4二.问题描述.............................................................................................................4三.原因分析及解决方法.........................................................................................94/9NC575版本取消结账月份发生objecterror错误解决案例一.系统环境产品版本:NC5.75应用服务器操作系统:windowsserver2008二.问题描述客户操作总账反结账的时候,报错。提示:取消结账月份发生异常read/writeobjecter,有如下报错信息:com.ibm.ws.Transaction.IllegalResourceIn2PCTransactionException:Illegalattempttoenlistmultiple1PCXAResources详细错误信息如下:$$callid=1381554021745-6698$$thread=[WebContainer:0]$$host=127.0.0.1$$userid=0001MN10000000004RB0$$ts=2013-10-1213:00:21$$remotecall=[nc.itf.glcom.reckoning.ISettle]$$debuglevel=ERROR$$msg=sqloriginalexceptionjava.sql.SQLException:enlist:caughtExceptionatcom.ibm.ws.rsadapter.AdapterUtil.toSQLException(AdapterUtil.java:1376)atcom.ibm.ws.rsadapter.jdbc.WSJdbcConnection.beginTransactionIfNecessary(WSJdbcConnection.java:701)atcom.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareCall(WSJdbcConnection.java:1957)atcom.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareCall(WSJdbcConnection.java:1915)5/9atnc.jdbc.framework.crossdb.CrossDBConnection.prepareCall(CrossDBConnection.java:392)atnc.jdbc.framework.crossdb.CrossDBConnection.mapSessionToDB(CrossDBConnection.java:132)atnc.jdbc.framework.crossdb.CrossDBConnection.(CrossDBConnection.java:118)atnc.jdbc.framework.ConnectionFactory.getConnection(ConnectionFactory.java:47)atnc.vo.iufo.pub.DataManageObjectIufo.getConnection(DataManageObjectIufo.java:267)atnc.bs.iufo.task.TaskDMO.loadTaskById(TaskDMO.java:325)atnc.bs.iufo.cache.BSTaskCacheProxy.loadDatas(BSTaskCacheProxy.java:132)atnc.pub.iufo.cache.base.IUFOCache.get(IUFOCache.java:226)atnc.bs.iufo.task.TaskBO.loadTaskById(TaskBO.java:187)atnc.itf.iufo.AllEJBEjbBean.loadTaskById(AllEJBEjbBean.java:21929)atnc.itf.iufo.EJSLocalStatelessnc_itf_iufo_AllEJB_0bfd4279.loadTaskById(UnknownSource)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at6/9java.lang.reflect.Method.invoke(Method.java:618)atnc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:56)atnc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:34)at$Proxy85.loadTaskById(UnknownSource)atnc.ui.iufo.task.TaskBO_Client.loadTaskById(TaskBO_Client.java:129)atnc.ui.iufo.cache.UITaskCacheProxy.loadDatas(UITaskCacheProxy.java:78)atnc.pub.iufo.cache.base.IUFOCache.getAll(IUFOCache.java:395)atnc.pub.iufo.cache.base.IUFOCache.getAll(IUFOCache.java:368)atnc.pub.iufo.cache.TaskCache.getAllTaskVOs(TaskCache.java:177)atnc.ui.iufo.task.IUFOGlCheckUtil.isCanResettle(IUFOGlCheckUtil.java:51)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:618)atnc.bs.glcom.reckoning.SettleBO.doSettle(SettleBO.java:211)atnc.impl.glcom.reckoning.SettleImpl.doSettle(SettleImpl.java:188)atnc.gejb.gl.cmt.GlExtendsEJBEjbBean.doSettle(GlExtendsEJBEjbBean.java:804)atnc.gejb.gl.cmt.EJSLocalStatelessnc_gejb_gl_cmt_GlExtendsEJB_94cdaf5c.doSettle(UnknownSource)7/9atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:618)atnc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:56)atnc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:34)at$Proxy131.doSettle(UnknownSource)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:618)atnc.bs.framework.comn.serv.ServiceDispatcher.invokeBeanMethod(ServiceDispatcher.java:351)atnc.bs.framework.comn.serv.ServiceDispatcher.execCall(ServiceDispatcher.java:160)atnc.bs.framework.comn.serv.CommonServletDispatcher.doGet(CommonServletDispatcher.java:75)at8/9nc.bs.framework.comn.serv.CommonServletDispatcher.doPost(CommonServletDispatcher.java:95)Causedby:javax.resource.ResourceException:enlist:caughtExceptionatcom.ibm.ejs.j2c.LocalTransactionWrapper.enlist(LocalTransactionWrapper.java:694)atcom.ibm.ejs.j2c.ConnectionManager.lazyEnlist(ConnectionManager.java:1933)atcom.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.lazyEnlist(WSRdbManagedConnectionImpl.java:2247)atcom.ibm.ws.rsadapter.jdbc.WSJdbcConnection.beginTransactionIfNecessary(WSJdbcConnection.java:644)...49moreCausedby:com.ibm.ws.Transaction.IllegalResourceIn2PCTransactionException:Illegalattempttoenlistmultiple1PCXAResourcesatcom.ibm.ws.Transaction.JTA.RegisteredResources.enlistResource(RegisteredResources.java:417)atcom.ibm.ws.Transaction.JTA.TransactionImpl.enlistResource(TransactionImpl.java:3167)atcom.ibm.ws.Transaction.JTA.TranManagerSet.enlistOnePhase(TranManagerSet.java:449)atcom.ibm.ejs.j2c.LocalTransactionWrapper.enlist(LocalTransactionWrapper.java:591)...52more$$server=NCAPP$$file=..\..\nclogs\ncmem2\nc-log.log9/9三.原因分析及解决方法通过日志分析,判断为是操作在一个事务里访问两个数据源导致的报错,与开发沟通,确认问题确存在于NC575版本产品里,出具补丁解决。补丁号:http://ncspserver/fixsys/AttachmentPackage/NC_FI_GL-NC5.75-Patch-20131015-204787857.rar