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: 发生文件结束异常(“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;
}
请求帮助,这几天问题多多.哎.