我想從QSYS.LIB中的隊列以外的隊列中獲取AS400中的消息。我使用的是運行良好,下面的代碼,只有當我用從內QSYS.LIB隊列:JT400 - 從隊列中獲取消息
public String getMessagesFromQsysopr(boolean needReply) {
String messageStr = "";
try {
MessageQueue queue = new MessageQueue(this.as400, "/qsys.lib/qsysopr.msgq");
// want only inquiry messages
queue.setSelectMessagesNeedReply(needReply);
queue.setSelectMessagesNoNeedReply(!needReply);
queue.setSelectSendersCopyMessagesNeedReply(needReply);
queue.setListDirection(false);
Enumeration e = queue.getMessages();
while (e.hasMoreElements()) {
QueuedMessage message = (QueuedMessage) e.nextElement();
messageStr += message.getText()+"\n";
}
} catch (Exception e) {
e.printStackTrace();
}
如果我更換/qsys.lib/qsysopr.msgq從其他的lib任何其他隊列,像例如, 「/yaclib.lib/queueName.msgq」 我得到以下錯誤:
com.ibm.as400.access.IllegalPathNameException:/yaclib.lib/queueName.msgq:對象不QSYS文件系統。 在com.ibm.as400.access.QSYSObjectPathName.parse(QSYSObjectPathName.java:599) 在com.ibm.as400.access.QSYSObjectPathName。(QSYSObjectPathName.java:169) 在com.ibm.as400.access.QSYSObjectPathName 。(QSYSObjectPathName.java:177) at com.ibm.as400.access.MessageQueue。(MessageQueue.java:299) at br.com.operation.AS400Inspector.getMessagesFromYaclib(AS400Inspector.java:225) at br.com .operation.Main.main(Main.java:43)
問題1:我在做什麼錯?
問題2:有什麼辦法限制不需要回復的郵件嗎?就像在特定的日期之後或僅在最後2天的消息中獲取消息一樣?
謝謝。
'...例如「/yaclib.lib/queueName.msgq」'這不是一個有效的名稱。沒有_file system_名爲**/yaclib.lib **。你想引用庫YACLIB。使用IFS命名格式,您可以使用/qsys.lib文件系統啓動路徑,使其成爲「/qsys.lib/yaclib.lib/queueName.msgq」。 – user2338816
謝謝,它工作。 –
有一種方法可以在某個IFS類中QSYS'化給定的庫+成員。非常方便的做到這一點(有很多規則可以遵循)。 –