Ограничение размера очереди данных - связь с iSeries на Java - PullRequest
0 голосов
/ 28 апреля 2011

У меня проблема с объектом очереди данных. Я отправляю сообщения в программу iSeries (также называемую AS400) через объект очереди данных в Java. Я могу написать в iSeries и прочитать ответ, но проблема в том, что размер очереди данных определяется размером сообщения, которое я отправил ранее, поэтому, когда я получаю ответ, оно усекается до сообщение запроса и я теряю информацию. Как я могу решить это? Может кто-нибудь мне помочь? Я использую библиотеку JTOpen.

Спасибо

Ответы [ 2 ]

3 голосов
/ 29 апреля 2011

Независимо от того, как он создается, очередь данных имеет «максимальную длину записи».Это указывается в команде CRTDTAQ из CL или в вызове метода create при настройке объекта DataQueue с помощью JTOpen.

Если вы планируете отправлять сообщения различной длины через очередь данных,вам нужно создать очередь данных с "максимальной длиной записи", большей или равной вашей фактической максимальной длине записи.В противном случае вы рискуете положить что-то в один конец и заставить его обрезаться, когда оно выходит на другую сторону.

Вот Javadoc , который показывает, как вы можете create очередь данных из JTOpen.

1 голос
/ 12 мая 2011

Готовы ли вы рассмотреть альтернативное решение?Подход, который мы использовали в аналогичной ситуации, состоял в том, чтобы передавать содержимое сообщений запроса / ответа через пользовательские пространства (тип объекта USRSPC в AS / 400), которые не имеют ограничений по размеру.Что ж, его ~ 16 ГБ, если я правильно помню ... Имена фиксированных размеров пользовательских пространств, в свою очередь, передавались через очередь данных (DTAQ) между сервером AS / 400 и клиентами Java.

...