MQ读消息报:MQJE086

环境:  MQ6.0   WAS 7.0.0.13   Red Hat Enterprise Linux Server release 5.3 问题:  WAS上的定时任务应用读MQ时报错,如下: [11-8-3 20:03:12:535 CST] 00000031 SystemErr     R java.io.EOFException: MQJE086: 发生文件结束...显示全部
环境:
 MQ6.0
   WAS 7.0.0.13
   Red Hat Enterprise Linux Server release 5.3
问题:
 WAS上的定时任务应用读MQ时报错,如下:

[11-8-3 20:03:12:535 CST] 00000031 SystemErr     R java.io.EOFException: MQJE086: 发生文件结束异常(“MQMessage.readFully()”)。
[11-8-3 20:03:12:536 CST] 00000031 SystemErr     R  at com.ibm.mq.MQMessage.readFully(MQMessage.java:1093)
[11-8-3 20:03:12:536 CST] 00000031 SystemErr     R  at com.ibm.mq.client.MQReader.read(MQReader.java:46)
[11-8-3 20:03:12:536 CST] 00000031 SystemErr     R  at com.suning.uum.service.DataVarietyService.varietyDateForObj(DataVarietyService.java:49)
[11-8-3 20:03:12:536 CST] 00000031 SystemErr     R  at com.suning.uum.service.DataVarietyService.varietyDate(DataVarietyService.java:95)
[11-8-3 20:03:12:537 CST] 00000031 SystemErr     R  at com.suning.uum.timing.UumMQVaryietyTask.doTask(UumMQVaryietyTask.java:27)
[11-8-3 20:03:12:537 CST] 00000031 SystemErr     R  at com.ibm.task.AbstractTask.process(AbstractTask.java:64)
[11-8-3 20:03:12:537 CST] 00000031 SystemErr     R  at com.ibm.task.MainControllerTask.doTask(MainControllerTask.java:66)
[11-8-3 20:03:12:537 CST] 00000031 SystemErr     R  at com.ibm.task.AbstractTask.process(AbstractTask.java:64)
[11-8-3 20:03:12:537 CST] 00000031 SystemErr     R  at com.ibm.task.quartz.DefaultQuartzJob.execute(DefaultQuartzJob.java:109)
[11-8-3 20:03:12:538 CST] 00000031 SystemErr     R  at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
  原来在WAS6.0上跑的时候没有问题,迁移到WAS7.0上时抱如下错误.
  IBM网站有个参考:
// The following 4 statements are to overcome a runtime problem with readUTF:
// An IOException occured whilst writing to the message buffer: java.io.EOFException:
// MQJE086: End of file exception readUTF
//      String msgText = rcvMessage.readUTF();
int strLen = rcvMessage.getMessageLength();
byte[] strData = new byte[strLen];
rcvMessage.readFully(strData);
String msgText = new String(strData);
说可以避免此问题,但通看了代码和这写得一点也不差.

  MQMessage mqMsg = MQQueueAccessor.getMsgFromQueue(MQQueueAccessor.MQ_TIME_OUT, queue);
   if(mqMsg!=null){
    int msgLength =  mqMsg.getMessageLength();
    byte[] buf = new byte[msgLength];
    mqMsg.readFully(buf);
    String xml = new String(buf,encoding);   
    return xml;
   }
 请求帮助,这几天问题多多.哎.
   
收起
参与4

查看其它 2 个回答benson_liu的回答

benson_liubenson_liu技术经理IT
1.6 低版本补丁的JDK 会出现该问题,如果你使用的是1.6 JDK,请先升级到最新的补丁,然后观察
IT分销/经销 · 2011-08-05
浏览2625

回答者

benson_liu
技术经理IT

benson_liu 最近回答过的问题

回答状态

  • 发布时间:2011-08-05
  • 关注会员:1 人
  • 回答浏览:2625
  • X社区推广