MTI not available and unpacking field problems

674 views
Skip to first unread message

Luis Alberto Velez

unread,
Apr 10, 2014, 10:48:52 PM4/10/14
to jpos-...@googlegroups.com
Hi

I'm having some problems receiving data from a client and server app

This is the server side:

            ISOMsg m = new ISOMsg();
            logISOMsg(m);
            m.setMTI("0210");
            byte b[] = {00, ((byte) 0xfb)};
            m.setHeader(b);
            m.set(3, ("000000"));
            m.set(11, ("000003"));
            m.set(12, ISODate.getTime(new Date()));
            m.set(13, ISODate.getDate(new Date()));
            m.set(39, "00");
            source.send(m);

At this part I'm getting this error:

<log realm="channel/127.0.0.1:52015" at="Thu Apr 10 21:39:54 COT 2014.907">
  <receive>
    <isomsg direction="incoming">
      <field id="0" value="&#0;ÿ02"/>
      <field id="11" value="100000"/>
      <field id="19" value="000"/>
      <field id="20" value="000"/>
org.jpos.iso.ISOException: MTI not available
      <field id="21" value="022"/>
at org.jpos.iso.ISOMsg.getMTI(ISOMsg.java:671)
      <field id="49" value="139"/>
at jpostest.JPosTest.logISOMsg(JPosTest.java:80)
at jpostest.JPosTest.process(JPosTest.java:40)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:149)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
    </isomsg>
  </receive>
</log>

And this is the Client side:

        Logger logger = new Logger();
        logger.addListener(new SimpleLogListener(System.out));
        ISOChannel channel = new ASCIIChannel("localhost", 7777, new ISO87APackager());
        ((LogSource) channel).setLogger(logger, "test-channel");
        channel.connect();
        ISOMsg m = new ISOMsg();
        m.setMTI("0200"); // I'm setting MTI code
        byte b[] = {00, ((byte) 0xff)};
        m.setHeader(b);
        m.set(3, "000000");
        m.set(11, "000002");
        m.set(12, ISODate.getTime(new Date()));
        m.set(13, ISODate.getDate(new Date()));
        m.set(41, "00000001");
        m.set(60, "LUIS");
        channel.send(m);
        ISOMsg r = channel.receive();
        System.out.println("Client Input : " );
        logISOMsg(r);
        channel.disconnect();

on the client side I'm getting this exception:

<log realm="test-channel/127.0.0.1:7777" at="Thu Apr 10 21:39:54 COT 2014.896">
  <send>
    <isomsg direction="outgoing">
      <header>00FF</header>
      <field id="0" value="0200"/>
      <field id="3" value="000000"/>
      <field id="11" value="000002"/>
      <field id="12" value="213954"/>
      <field id="13" value="0410"/>
      <field id="41" value="00000001"/>
      <field id="60" value="LUIS"/>
    </isomsg>
  </send>
</log>
error unpacking field 21
org.jpos.iso.ISOException: org.jpos.iso.IFA_NUMERIC: Problem unpacking field 21 (java.lang.ArrayIndexOutOfBoundsException: 46)
at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:178)
at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
at jpostest.Cliente.main(Cliente.java:49)
Nested:java.lang.ArrayIndexOutOfBoundsException: 46
at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
Exception in thread "main" org.jpos.iso.ISOException: org.jpos.iso.IFA_NUMERIC: Problem unpacking field 21 (java.lang.ArrayIndexOutOfBoundsException: 46)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
at jpostest.Cliente.main(Cliente.java:49)
at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:178)
<log realm="test-channel/127.0.0.1:7777" at="Thu Apr 10 21:39:54 COT 2014.951">
  <receive>
    <iso-exception>
      org.jpos.iso.IFA_NUMERIC: Problem unpacking field 21
      <nested-exception>
at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
      java.lang.ArrayIndexOutOfBoundsException: 46
at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
at jpostest.Cliente.main(Cliente.java:49)
      </nested-exception>
      org.jpos.iso.ISOException: org.jpos.iso.IFA_NUMERIC: Problem unpacking field 21 (java.lang.ArrayIndexOutOfBoundsException: 46)
at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:178)
at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
at jpostest.Cliente.main(Cliente.java:49)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
at jpostest.Cliente.main(Cliente.java:49)
Nested:java.lang.ArrayIndexOutOfBoundsException: 46
at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
Nested:java.lang.ArrayIndexOutOfBoundsException: 46
at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
at jpostest.Cliente.main(Cliente.java:49)
    </iso-exception>
    --- data ---
at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
    0000  00 FB 30 32 31 30 32 30  33 38 30 30 30 30 30 32  ..02102038000002
0010  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  0000000000000000
at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
0020  30 33 32 31 33 39 35 34  30 34 31 30 30 30        03213954041000

  </receive>
</log>
at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
at jpostest.Cliente.main(Cliente.java:49)

00FB 0210 20380000020000000 000000 00003 204124 0410 00

The bitmap shows that fields 3,11,12,13,39 are present, I don´t understand why it's trying to unpack field 21.

Can someone help me fixing this?

Thanks

Mark Salter

unread,
Apr 11, 2014, 12:42:22 AM4/11/14
to jpos-...@googlegroups.com
On 11/04/2014 03:48, Luis Alberto Velez wrote:
>
> The bitmap shows that fields 3,11,12,13,39 are present, I don´t
> understand why it's trying to unpack field 21.
Your interpretation of the bitmap doesn't really matter; it is the
setup/environment that does.


>
> Can someone help me fixing this?
Check that your sending and receiving set-up matches completly -
Channel, Packager etc...

..something won't match between the ends.



--
Mark

chhil

unread,
Apr 11, 2014, 12:46:05 AM4/11/14
to jpos-...@googlegroups.com
Here is modified code that runs server and client together kind of a test calss.
Instantiates server, creates a client channel, connects and sends.
Servers channel is used to send back a response.
Client channel receives.

The problem with your code was that the channel is not aware it needs to deal with the header while unpacking so it treats it as part of the bitmap.
So we need to set a dummy header of size 2 so it knows it needs to accept a 2 byte header.





       
ISOMsg resp = new ISOMsg();

        resp
.setMTI("0210");

       
byte b[] = { 00, ((byte) 0xfb) };

        resp
.setHeader(b);
        resp
.set(3, ("000000"));
        resp
.set(11, ("000003"));
        resp
.set(12, ISODate.getTime(new Date()));
        resp
.set(13, ISODate.getDate(new Date()));
        resp
.set(39, "00");

       
ASCIIChannel serverChannel = new ASCIIChannel(new ISO87APackager());
        serverChannel
.setHeader(new byte[2]);

       
ISOServer server = new ISOServer(6789, serverChannel, new ThreadPool(1, 100));
       
Thread t = new Thread(server);
        t
.start();


       
Logger logger = new Logger();
        logger
.addListener(new SimpleLogListener(System.out));

       
ASCIIChannel channel = new ASCIIChannel("localhost", 6789, new ISO87APackager());
        channel
.setHeader(new byte[2]);

       
((LogSource) channel).setLogger(logger, "test-channel");
        channel
.connect();
       
ISOMsg m = new ISOMsg();
        m
.setMTI("0200"); // I'm setting MTI code

       
byte b1[] = { 00, ((byte) 0xff) };
        m
.setHeader(b1);

        m
.set(3, "000000");
        m
.set(11, "000002");
        m
.set(12, ISODate.getTime(new Date()));
        m
.set(13, ISODate.getDate(new Date()));
        m
.set(41, "00000001");
        m
.set(60, "LUIS");
        channel
.send(m);

        server
.getLastConnectedISOChannel().send(resp);

       
ISOMsg r = channel.receive();
       
System.out.println("Client Input : ");

        channel
.disconnect();
       
System.out.println("");
   

-chhil

chhil

unread,
Apr 11, 2014, 12:50:35 PM4/11/14
to jpos-...@googlegroups.com

Redirecting direct email to list.
---------- Forwarded message ----------
From: "chhil"
Date: Apr 11, 2014 10:18 PM
Subject: Re: MTI not available and unpacking field problems
To: "Luis Alberto Velez" <java...@gmail.com>
Cc:

> Look at the asciichannel source code and look at how the message length is prepended to the message.
> You may need to write your own channel class that extends the base channel class and prepends the message correctly while packing and understands the bytes when unpacking the message.
>
> What's the correlation between field  60 and the first 2 bytes in the message ?
>
> -chhil
>
> On Apr 11, 2014 9:56 PM, "Luis Alberto Velez"  wrote:
>>
>> Hi Chhil, thanks for your answer. Works great.
>>
>> Now I'm getting this error: Invalid message length 
>>
>> I receive data from a Spectra T800 and the terminal software provider told me that the header may vary depending on the data in field 60, ex:
>>
>> Message 1
>> 0000  00 d0 02 00 20 38 00 00 00 80 00 10 00 00 00 00   .... 8..........
>> 0010  00 15 09 50 59 04 11 32 41 30 30 31 36 35 34 01   ...PY..2A001654.
>> 0020  77 39 32 35 34 30 39 34 36 7c 70 61 62 6c 6f 7c   w92540946|pablo|
>> 0030  41 70 65 72 74 75 72 61 7c 35 30 30 7c 32 30 31   Apertura|500|201
>> 0040  34 2f 30 33 2f 33 31 3b 39 32 35 34 30 39 34 36   4/03/31;92540946
>> 0050  7c 70 61 62 6c 6f 7c 50 65 72 47 6c 69 63 65 6d   |pablo|PerGlicem
>> 0060  69 6e 61 7c 32 30 30 30 7c 32 30 31 34 2f 30 33   ina|2000|2014/03
>> 0070  2f 33 31 3b 39 32 35 34 30 39 34 36 7c 70 61 62   /31;92540946|pab
>> 0080  6c 6f 7c 45 78 61 50 65 72 69 6f 64 69 63 6f 7c   lo|ExaPeriodico|
>> 0090  33 30 30 30 7c 32 30 31 34 2f 30 33 2f 33 31 3b   3000|2014/03/31;
>> 00a0  39 32 35 34 30 39 34 36 7c 70 61 62 6c 6f 7c 42   92540946|pablo|B
>> 00b0  6f 6c 65 74 61 52 69 66 61 28 45 79 42 69 63 29   oletaRifa(EyBic)
>> 00c0  7c 2d 31 30 30 30 7c 32 30 31 34 2f 30 33 2f 33   |-1000|2014/03/3
>> 00d0  31 3b                                             1;
>>
>>
>> Message 2
>> 0000  00 6d 02 00 20 38 00 00 00 80 00 10 00 00 00 00   .m.. 8..........
>> 0010  00 72 10 03 59 04 11 32 41 30 30 32 30 34 36 00   .r..Y..2A002046.
>> 0020  78 32 30 30 30 30 30 30 7c 63 61 6d 69 6c 6f 7c   x2000000|camilo|
>> 0030  41 70 65 72 74 75 72 61 7c 35 30 30 7c 32 30 31   Apertura|500|201
>> 0040  34 2f 30 34 2f 31 31 3b 31 30 30 30 30 30 30 7c   4/04/11;1000000|
>> 0050  6a 6f 69 6e 65 72 7c 41 70 65 72 74 75 72 61 7c   joiner|Apertura|
>> 0060  35 30 30 7c 32 30 31 34 2f 30 34 2f 31 31 3b      500|2014/04/11;
>>
>>
>> Each header of each message may be different, how can i handle this?
>>
>> Thanks!
>>
>>
>>>

Luis Alberto Velez

unread,
Apr 14, 2014, 1:46:43 PM4/14/14
to jpos-...@googlegroups.com
Hi Chhil, as you suggested, I override getMessageLength method and It works, but now I´m getting this exception.

<log realm="server.session/186.102.166.50" at="Mon Apr 14 11:59:24 COT 2014.29">
  <session-error>
    <iso-exception>
      org.jpos.iso.IFA_LLNUM: Problem unpacking field 2
      <nested-exception>
      java.lang.ArrayIndexOutOfBoundsException: 245
        at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
      </nested-exception>
      org.jpos.iso.ISOException: org.jpos.iso.IFA_LLNUM: Problem unpacking field 2 (java.lang.ArrayIndexOutOfBoundsException: 245)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:178)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
Nested:java.lang.ArrayIndexOutOfBoundsException: 245
        at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
    </iso-exception>
  </session-error>
</log>


0000  00 f9 02 00 20 38 00 00 00 80 00 10 00 00 00 00   .... 8..........
0010  00 85 12 29 14 04 14 32 41 30 30 32 30 34 36 02   ...)...2A002046.
0020  18 32 30 30 30 30 30 30 7c 63 61 6d 69 6c 6f 7c   .2000000|camilo|
0030  41 70 65 72 74 75 72 61 7c 35 30 30 7c 32 30 31   Apertura|500|201
0040  34 2f 30 34 2f 31 31 3b 31 30 30 30 30 30 30 7c   4/04/11;1000000|
0050  6a 6f 69 6e 65 72 7c 41 70 65 72 74 75 72 61 7c   joiner|Apertura|
0060  35 30 30 7c 32 30 31 34 2f 30 34 2f 31 31 3b 31   500|2014/04/11;1
0070  30 30 30 30 30 30 7c 6a 6f 69 6e 65 72 7c 43 6f   000000|joiner|Co
0080  6e 63 69 65 6e 74 65 74 65 28 53 50 41 29 7c 31   ncientete(SPA)|1
0090  30 30 30 7c 32 30 31 34 2f 30 34 2f 31 34 3b 31   000|2014/04/14;1
00a0  30 30 30 30 30 30 7c 6a 6f 69 6e 65 72 7c 42 6f   000000|joiner|Bo
00b0  6c 65 74 61 52 69 66 61 28 45 79 42 69 63 29 7c   letaRifa(EyBic)|
00c0  2d 31 30 30 30 7c 32 30 31 34 2f 30 34 2f 31 34   -1000|2014/04/14
00d0  3b 31 30 30 30 30 30 30 7c 6a 6f 69 6e 65 72 7c   ;1000000|joiner|
00e0  44 6f 6e 61 53 61 6e 67 72 65 7c 35 30 30 30 7c   DonaSangre|5000|
00f0  32 30 31 34 2f 30 34 2f 31 34 3b                  2014/04/14; 

According to the bitmap 20 38 00 00 00 80 00 10 {0010000000111000000000000000000000000000100000000000000000000000} field number 2 it's not present.

Any idea?

Mark Salter

unread,
Apr 14, 2014, 4:25:27 PM4/14/14
to jpos-...@googlegroups.com
On 14/04/2014 18:46, Luis Alberto Velez wrote:
> According to the bitmap *20 38 00 00 00 80 00 10
> {*0010000000111000000000000000000000000000100000000000000000000000}
> field number 2 it's not present.
Please stop manually working out what you think the data components are.
As I indicated previously it was your Channel, Packager and the field
definitions think of the data that matter.

Add a Logger to you packager and share it's output, that way you (and
perhaps we) might see what is out of alignment with the data - as
something certainly is.

Making sure you have the right components accurately and precisely
describing the message structure is paramount and you have not shared
those details nor indicated that you have already matched the Packager
to the job of breaking the message apart successfully.

--
Mark

chhil

unread,
Apr 15, 2014, 1:24:38 AM4/15/14
to jpos-...@googlegroups.com

What is the channel used by the server?
What is the packager used by the server?
What is the channel used by the client?
What is the packager used by the client?

The channels used by the server and client should be the same. Make sure the right one is on the classpath and being used.
The packager used by the server and client should be the same.

If you can , do share your channel code that you use to extend the BaseChannel.

-chhil



--
--
jPOS is licensed under AGPL - free for community usage for your open-source project. Licenses are also available for commercial usage.  Please support jPOS, contact: sa...@jpos.org

Join us in IRC at http://webchat.freenode.net/?channels=jpos

You received this message because you are subscribed to the  "jPOS Users" group.
Please see http://jpos.org/wiki/JPOS_Mailing_List_Readme_first
To post to this group, send email to jpos-...@googlegroups.com
To unsubscribe, send email to jpos-users+...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/jpos-users
---
You received this message because you are subscribed to the Google Groups "jPOS Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jpos-users+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/534C4437.5070909%40talktalk.net.
For more options, visit https://groups.google.com/d/optout.

Luis Alberto Velez

unread,
Apr 24, 2014, 1:12:05 PM4/24/14
to jpos-...@googlegroups.com
Hi
 
What is the channel used by the server?
   I'm using ASCIIChannel overriding the getMessage() method
 
What is the packager used by the server?
   ISO87APackager
 
What is the channel used by the client?
   The only thing that I know about the client : Spectra T800 Terminal, first 2 bytes indicates the length of the message

This is the code

@Override
    public boolean process(ISOSource source, ISOMsg mES) {
        try {
            ISOMsg m = new ISOMsg();
            m.setMTI("0210");
            byte b[] = {00, ((byte) 0xfb)};
            m.setHeader(b);
            m.set(3, ("000000"));
            m.set(11, ("000003"));
            m.set(12, ISODate.getTime(new Date()));
            m.set(13, ISODate.getDate(new Date()));
            m.set(39, "00");
            source.send(m);
        } catch (ISOException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return true;
    }

    public static void main(String[] args) throws Exception {
        Logger logger = new Logger();
        logger.addListener(new SimpleLogListener(System.out));
//        ASCIIChannel channel = new ASCIIChannel(new ISO87APackager());
        MyASCIIChannel channel = new MyASCIIChannel(new ISO87APackager());
        channel.setHeader(new byte[2]);
        ((LogSource) channel).setLogger(logger, "channel");
        ISOServer server = new ISOServer(7777, channel, null);
        server.setLogger(logger, "server");
        server.addISORequestListener(new JPosTest());
        new Thread(server).start();
    }

MyASCIIChannel extends from BaseChannel and override getMessageLength()
@Override
    protected int getMessageLength() throws IOException, ISOException {
        byte[] b = new byte[2];
        serverIn.readFully(b, 0, 2);
        return (((((int) b[0]) & 0xFF) << 8) | (((int) b[1]) & 0xFF));
    }

And thisis the entired log error

<log realm="server" at="Thu Apr 24 11:37:19 COT 2014.190">
  <iso-server>
    listening on port 7777
  </iso-server>
</log>
<log realm="server.session/186.170.52.2" at="Thu Apr 24 11:37:26 COT 2014.787">
  <session-start/>
</log>
249
error unpacking field 2
org.jpos.iso.ISOException: org.jpos.iso.IFA_LLNUM: Problem unpacking field 2 (java.lang.ArrayIndexOutOfBoundsException: 247)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:178)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
Nested:java.lang.ArrayIndexOutOfBoundsException: 247
        at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
<log realm="channel/186.170.52.2:20791" at="Thu Apr 24 11:37:27 COT 2014.21">
  <receive>
    <iso-exception>
      org.jpos.iso.IFA_LLNUM: Problem unpacking field 2
      <nested-exception>
      java.lang.ArrayIndexOutOfBoundsException: 247
        at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
      </nested-exception>
      org.jpos.iso.ISOException: org.jpos.iso.IFA_LLNUM: Problem unpacking field 2 (java.lang.ArrayIndexOutOfBoundsException: 247)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:178)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
Nested:java.lang.ArrayIndexOutOfBoundsException: 247
        at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
    </iso-exception>
    --- header ---
    0000  02 00                                             ..

    --- data ---
    0000  20 38 00 00 00 80 00 10  00 00 00 00 00 92 12 06   8..............
0010  42 04 24 32 41 30 30 32  30 34 36 02 18 32 30 30  B.$2A002046..200
0020  30 30 30 30 7C 63 61 6D  69 6C 6F 7C 41 70 65 72  0000|camilo|Aper
0030  74 75 72 61 7C 35 30 30  7C 32 30 31 34 2F 30 34  tura|500|2014/04
0040  2F 31 31 3B 31 30 30 30  30 30 30 7C 6A 6F 69 6E  /11;1000000|join
0050  65 72 7C 41 70 65 72 74  75 72 61 7C 35 30 30 7C  er|Apertura|500|
0060  32 30 31 34 2F 30 34 2F  31 31 3B 31 30 30 30 30  2014/04/11;10000
0070  30 30 7C 6A 6F 69 6E 65  72 7C 43 6F 6E 63 69 65  00|joiner|Concie
0080  6E 74 65 74 65 28 53 50  41 29 7C 31 30 30 30 7C  ntete(SPA)|1000|
0090  32 30 31 34 2F 30 34 2F  31 34 3B 31 30 30 30 30  2014/04/14;10000
00a0  30 30 7C 6A 6F 69 6E 65  72 7C 42 6F 6C 65 74 61  00|joiner|Boleta
00b0  52 69 66 61 28 45 79 42  69 63 29 7C 2D 31 30 30  Rifa(EyBic)|-100
00c0  30 7C 32 30 31 34 2F 30  34 2F 31 34 3B 31 30 30  0|2014/04/14;100
00d0  30 30 30 30 7C 6A 6F 69  6E 65 72 7C 44 6F 6E 61  0000|joiner|Dona
00e0  53 61 6E 67 72 65 7C 35  30 30 30 7C 32 30 31 34  Sangre|5000|2014
00f0  2F 30 34 2F 31 34 3B                              /04/14;

  </receive>
</log>
<log realm="server.session/186.170.52.2" at="Thu Apr 24 11:37:27 COT 2014.52">
  <session-error>
    <iso-exception>
      org.jpos.iso.IFA_LLNUM: Problem unpacking field 2
      <nested-exception>
      java.lang.ArrayIndexOutOfBoundsException: 247
        at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
      </nested-exception>
      org.jpos.iso.ISOException: org.jpos.iso.IFA_LLNUM: Problem unpacking field 2 (java.lang.ArrayIndexOutOfBoundsException: 247)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:178)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
Nested:java.lang.ArrayIndexOutOfBoundsException: 247
        at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:55)
        at org.jpos.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:173)
        at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:233)
        at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:344)
        at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:849)
        at org.jpos.iso.BaseChannel.receive(BaseChannel.java:620)
        at org.jpos.iso.ISOServer$Session.run(ISOServer.java:146)
        at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:74)
    </iso-exception>
  </session-error>
</log>
<log realm="server.session/186.170.52.2" at="Thu Apr 24 11:37:27 COT 2014.68">
  <session-end/>
</log>

Thanks

Mark Salter

unread,
Apr 24, 2014, 4:44:10 PM4/24/14
to jpos-...@googlegroups.com
On 24/04/2014 18:12, Luis Alberto Velez wrote:
> The only thing that I know about the client : Spectra T800 Terminal,
> first 2 bytes indicates the length of the message

Then you have work to do (or need to get lucky). Get the documentation
and find out more :-).

The immediate good news is that with a quick glance the request looks to
*not* be ISO8583. With all those field separators you should probably
be using FSDMessage and it's 'ISO' cousin.

But, get the documentation first.

--
Mark
Reply all
Reply to author
Forward
0 new messages