环境: 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; } 请求帮助,这几天问题多多.哎.