huweihong
作者huweihong·2008-12-10 18:45
软件开发工程师·自由职业者

憋巴的问题,弱智的解决方法

字数 1198阅读 2846评论 0赞 0
最近在帮BP测试公文传输,用了MQ。工程师反映,在数据接收的时候,总是抱错:
MQJE001: 完成代码是 2,原因为 2009

MQJE001: MQException 出现:完成代码是 2,原因为 2009

MQJE003: 传输消息缓冲区时出现 IO 错误
 
  但是不影响消息的发布和接受。就是频繁在日志中出现这个提示。BP觉得心里不爽,就把我叫来,问问怎么办。
从网上查到,解决这个问题的几种方法:
1。在mq.ini文件中添加 KeepAlive=yes
2。升级MQ,于是把MQ升级到了6.0.2.5,
3。关闭防火墙
可是问题依旧。
没办法了之后看源代码,在数据接收程序的不同地方添加了注释,花了1天的时间,终于找到了原因了。
代码中使用了MQSimpleConnectionManager,但是由于代码经过n个人的手,很乱,没有把获取MQSimpleConnectionManager 的地方释放。唉!郁闷。
如下是使用MQSimpleConnectionManager的标准代码:
MQSimpleConnectionManager myConnMan=new MQSimpleConnectionManager();
   myConnMan.setActive( MQSimpleConnectionManager.MODE_ACTIVE);
   MQQueueManager qmgr=new MQQueueManager("my.qmgr.1", myConnMan);
   :
   : (do something with qmgr)
   :
   qmgr.disconnect();
  
   MQQueueManager qmgr2=new MQQueueManager("my.qmgr.1", myConnMan);
   :
   : (do something with qmgr2)
   :
   qmgr2.disconnect();
   myConnMan.setActive( MQSimpleConnectionManager.MODE_INACTIVE); //BP的代码里面没有这一句,才导致那个2009的问题

http://www.webspherechina.net/uchome/space.php?uid=1790&do=blog&id=15

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广