在比特儿的聊天室服务器程序发消息总是显示服务器异常,有没有行家指点指点?

赞助商链接
本人现在公司用Java进行电子缴款系统模块的开发,使用的是无状态SessionBean,应用服务器为Weblogic配置的一个集群,偶尔出现过1-2次并发操作(并发程度在1秒以内);简单的说,我从前台发起一个扣款请求,从程序流程和EJB的架构来说,后台也应该发起一笔扣款请求;问题就在于后台不只发起一起扣款请求,而是几乎同时发起两笔扣款请求,从而导致并发重复扣款;暂时还没有找到具体产生原因,初步分析原因有两个1)服务器集群算法出现Bug,导致同时有两个Bean在服务器中运作;2)前台的事件处理存在Bug,同时发起了两个请求,只是界面上看不出来而已;我的同事上次就这个问题发过问题,那是2个月前出现的一批并发重扣;我今天再次发出此贴,就是因为前几天我又发现了一批并发重扣;我们再上一次的教训上,这次多输出了一些调试信息,主要是Weblogic的事务信息如下:连续两个我认为并发的Bean输出的日志如下(但是我不清楚这些日志代表什么意思): 11:29:50,402 [system:124] [ExecuteThread: '8' for queue: 'weblogic.kernel.Default'] - ZScomm ZSetskkService.logTx jklsh = 6014 **********txid1 = BEA1-72E10BBC0AA **********txid2 = BEA1-72E10BBC0AA **********TxStatus1 = Active **********TxStatus2 = Active **********timeSinceBegin1 = 645 **********timeSinceBegin2 = 645 **********tx1 = Name=[EJB gov.gdlt.taxcore.gateway.facade.TaxFacadeGateWayBean.invokeTask(gov.gdlt.taxcore.comm.event.RequestEvent)],Xid=BEA1-72E10BBC0AA(),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=0,seconds left=599,activeThread=Thread[ExecuteThread: '8' for queue: 'weblogic.kernel.Default',5,Thread Group for Queue: 'weblogic.kernel.Default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=ended,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@190cb2a),SCInfo[coredomain+coreapp4]=(state=active),SCInfo[eaidomain+eaiserver]=(state=active),properties=({weblogic.transaction.name=[EJB gov.gdlt.taxcore.gateway.facade.TaxFacadeGateWayBean.invokeTask(gov.gdlt.taxcore.comm.event.RequestEvent)], weblogic.jdbc=t3://150.18.30.31:7013}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=coreapp4+150.18.30.31:7013+coredomain+t3+, XAResources={},NonXAResources={})],CoordinatorURL=coreapp4+150.18.30.31:7013+coredomain+t3+) **********tx2 = Name=[EJB gov.gdlt.taxcore.gateway.facade.TaxFacadeGateWayBean.invokeTask(gov.gdlt.taxcore.comm.event.RequestEvent)],Xid=BEA1-72E10BBC0AA(),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=0,seconds left=599,activeThread=Thread[ExecuteThread: '8' for queue: 'weblogic.kernel.Default',5,Thread Group for Queue: 'weblogic.kernel.Default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=ended,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@190cb2a),SCInfo[coredomain+coreapp4]=(state=active),SCInfo[eaidomain+eaiserver]=(state=active),properties=({weblogic.transaction.name=[EJB gov.gdlt.taxcore.gateway.facade.TaxFacadeGateWayBean.invokeTask(gov.gdlt.taxcore.comm.event.RequestEvent)], weblogic.jdbc=t3://150.18.30.31:7013}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=coreapp4+150.18.30.31:7013+coredomain+t3+, XAResources={},NonXAResources={})],CoordinatorURL=coreapp4+150.18.30.31:7013+coredomain+t3+)======================================================================================== 11:29:50,993 [system:124] [ExecuteThread: '20' for queue: 'weblogic.kernel.Default'] - ZScomm ZSetskkService.logTx jklsh = 6016 **********txid1 = BEA1-72E50BBC0AA **********txid2 = BEA1-72E50BBC0AA **********TxStatus1 = Active **********TxStatus2 = Active **********timeSinceBegin1 = 763 **********timeSinceBegin2 = 763 **********tx1 = Name=[EJB gov.gdlt.taxcore.gateway.facade.TaxFacadeGateWayBean.invokeTask(gov.gdlt.taxcore.comm.event.RequestEvent)],Xid=BEA1-72E50BBC0AA(),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=0,seconds left=600,activeThread=Thread[ExecuteThread: '20' for queue: 'weblogic.kernel.Default',5,Thread Group for Queue: 'weblogic.kernel.Default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=ended,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@a82896),SCInfo[coredomain+coreapp4]=(state=active),SCInfo[eaidomain+eaiserver]=(state=active),properties=({weblogic.transaction.name=[EJB gov.gdlt.taxcore.gateway.facade.TaxFacadeGateWayBean.invokeTask(gov.gdlt.taxcore.comm.event.RequestEvent)], weblogic.jdbc=t3://150.18.30.31:7013}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=coreapp4+150.18.30.31:7013+coredomain+t3+, XAResources={},NonXAResources={})],CoordinatorURL=coreapp4+150.18.30.31:7013+coredomain+t3+) **********tx2 = Name=[EJB gov.gdlt.taxcore.gateway.facade.TaxFacadeGateWayBean.invokeTask(gov.gdlt.taxcore.comm.event.RequestEvent)],Xid=BEA1-72E50BBC0AA(),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=0,seconds left=600,activeThread=Thread[ExecuteThread: '20' for queue: 'weblogic.kernel.Default',5,Thread Group for Queue: 'weblogic.kernel.Default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=ended,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@a82896),SCInfo[coredomain+coreapp4]=(state=active),SCInfo[eaidomain+eaiserver]=(state=active),properties=({weblogic.transaction.name=[EJB gov.gdlt.taxcore.gateway.facade.TaxFacadeGateWayBean.invokeTask(gov.gdlt.taxcore.comm.event.RequestEvent)], weblogic.jdbc=t3://150.18.30.31:7013}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=coreapp4+150.18.30.31:7013+coredomain+t3+, XAResources={},NonXAResources={})],CoordinatorURL=coreapp4+150.18.30.31:7013+coredomain+t3+)==============================输出以上日志信息所用到的方法如下=================weblogic.transaction.Transaction t1 = weblogic.transaction.TxHelper.getTransaction();String txid1 = "" + t1.getXid();String txStatus1 = "" + t1.getStatusAsString();long timeSinceBegin1 = t1.getMillisSinceBegin();weblogic.transaction.Transaction t2 = ((weblogic.transaction.Transaction) weblogic.transaction.TransactionHelper.getTransactionHelper().getTransaction());String txid2 = "" + t2.getXid();String txStatus2 = "" + t2.getStatusAsString();long timeSinceBegin2 = t2.getMillisSinceBegin();LogWritter.sysError("ZScomm ZSetskkService.logTx jklsh = " + jklsh +" \r\n**********\r\n txid1 = " + txid1 +" \r\n**********\r\n txid2 = " + txid2 +" \r\n**********\r\n TxStatus1 = " + txStatus1 +" \r\n**********\r\n TxStatus2 = " + txStatus2 +" \r\n**********\r\n timeSinceBegin1 = " +timeSinceBegin1 +" \r\n**********\r\n timeSinceBegin2 = " +timeSinceBegin2 +" \r\n**********\r\n tx1 = " + t1.toString() +" \r\n**********\r\n tx2 = " + t2.toString());
我看了一下你输出的日志,我认为出现这个问题应该不是并发引起的,因为两次执行的时间相差还是比较长的。我猜想你的程序扣款这个过程的执行时间比较长,而且提交按钮是图片做的,如果我的猜想都是对的,那么出现你所说的问题,是web server因为执行时间比较长而重复提交造成的。
我看了一下你输出的日志,我认为出现这个问题应该不是并发引起的,因为两次执行的时间相差还是比较长的而且日志都是按顺序打印的。我猜想你的程序扣款这个过程的执行时间在这个时候比较长,而且提交按钮是图片做的,如果我的猜想都是对的,那么出现你所说的问题,是web server因为执行时间比较长而重复提交造成的而不是并发请求所造成的。
你前台和后台不是处于一个事务控制中。
赞助商链接
赞助商链接
最佳分辨率
OpenSource
Code & 2002-20sip设置总是出现408错误,服务器端检查注册信息,发现未注册成功!该怎么解决??!_百度知道
sip设置总是出现408错误,服务器端检查注册信息,发现未注册成功!该怎么解决??!
我有更好的答案
408错误是指超时了。你的注册信息服务器没收到。你首先在服务器端抓包,看看注册消息过来没?如果没有,需要查看终端这边发出来的目的对不。如果包过来了,那你看下服务器使用的端口和你终端发出来的目的端口是不是一样。
采纳率:24%
为您推荐:
其他类似问题
您可能关注的内容
服务器端的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。手机上网出现查询DNS服务器失败,提示735,是怎么回事?请指点。_百度知道
手机上网出现查询DNS服务器失败,提示735,是怎么回事?请指点。
我有更好的答案
这个不是你的问题是网站的问题,DNS解析失败简单的说是指网站的域名和和网站的空间匹配错误,造成不能访问。
采纳率:54%
为您推荐:
其他类似问题
您可能关注的内容
支付宝的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。拒绝访问 | www.bandog.cn | 百度云加速
请打开cookies.
此网站 (www.bandog.cn) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(410ad7-ua98).
重新安装浏览器,或使用别的浏览器

我要回帖

更多关于 聊天室服务器程序 的文章

 

随机推荐