数据队列大小限制-从iSeries到Java的通信



我有一个数据队列对象的问题。我通过Java中的数据队列对象向iSeries程序(又名AS400)发送消息。我可以写入iSeries并读取响应,但问题是数据队列的大小是由我之前发送的消息的大小定义的,因此,当我收到答案时,它已被截断为请求消息的大小,并且我丢失了信息。我该如何解决这个问题?有人能帮我吗?我正在使用JTOpen库。

谢谢

无论它是如何创建的,数据队列都有一个"最大条目长度"。这是在CL的CRTDTAQ命令上指定的,如果使用JTOpen设置DataQueue对象,则在create方法调用中指定。

如果您计划通过数据队列发送不同长度的消息,则需要创建"最大条目长度"大于或等于实际最大条目长度的数据队列。否则,你可能会把一些东西放在一端,当它从另一端出来时,它会被截断。

下面是Javadoc,展示了如何从JTOpen中create数据队列。

您是否愿意考虑其他解决方案?我们在类似情况下使用的方法是通过用户空间(AS/400上的对象类型USRSPC)传递请求/响应消息的内容,它没有大小限制。嗯,如果我没记错的话,大概是16GB…固定大小的用户空间名称依次通过AS/400服务器和Java客户机之间的数据队列(DTAQ)传递。

最新更新