2015-11-04 2 views
1

Ошибка при использовании ISORequestListener для прослушивания ISOMessage от клиента. Просьба предложить подходящее решение для этого вопросы Channel - org.jpos.iso.channel.BASE24TCPChannel и упаковщик - org.jpos.iso.packager.BASE24PackagerjPOS: Поле 70 ошибка iso упаковка?

<receive> 

    <iso-exception> 

    org.jpos.iso.IFA_NUMERIC: Problem unpacking field 70 (java.lang.RuntimeException: Required 3 but just got 2 bytes) unpacking field=70, consumed=52 

    org.jpos.iso.ISOException: org.jpos.iso.IFA_NUMERIC: Problem unpacking field 70 (java.lang.RuntimeException: Required 3 but just got 2 bytes) unpacking field=70, consumed=52 

    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:265) 

    at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:420) 

    at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:923) 

    at org.jpos.iso.BaseChannel.receive(BaseChannel.java:691) 

    at org.jpos.iso.ISOServer$Session.run(ISOServer.java:131) 

    at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72) 

    </iso-exception> 

    --- header --- 

    0000 49 53 4F 30 30 36 30 30 30 30 36 30 ISO006000060 

    --- data --- 

    0000 30 38 30 30 38 32 32 30 30 30 30 30 30 30 30 30 0800822000000000 

    0010 30 30 30 30 30 34 30 30 30 30 30 30 30 30 30 30 0000040000000000 

    0020 30 30 30 30 31 30 33 30 31 30 31 34 33 31 30 30 0000103010143100 

    0030 30 33 30 33 33 30 030330 

    </receive> 

    </log> 

ответ

1

Кажется, есть проблема с ваш канал неправильно получает длину сообщения. Вероятно, есть трейлер (что «03» вы видите в конце).

+0

Это был запрос эха клиента на наш сервер, поэтому трейлер, о котором вы говорите, на самом деле 301, есть способ, которым я могу узнать, какой канал используется клиентом. – Zahid

+1

«Канал» на самом деле это имя jPOS для класса, который реализует проводной протокол, ваш клиент может использовать другое программное обеспечение, отличное от jPOS, что вам нужно, это о проводном протоколе. Я полагаю, что реализация _your_ channel, вероятно, ожидает какого-то трейлера и вычитает «1» из длины сообщения, следовательно, пропавшего байта. Я предлагаю вам дважды проверить метод 'getMessageLength()' вашего канала. – apr

+1

Большое спасибо за вашу помощь. Я очень ценю это – Zahid

Смежные вопросы