Build a header in Base24

515 views
Skip to first unread message

Juan

unread,
Mar 13, 2009, 12:32:39 PM3/13/09
to jPOS Users
Hi !

In my ISOmsg i need this header in my message

ISO025300045

but when I set my header, the header appears this

<isomsg direction="outgoing">
<header>49534F303235333030303430</header>
<field id="0" value="0200"/>
<field id="2" value="161234567890123456"/>
<field id="3" value="400000"/>
<field id="4" value="000000060050"/>

i need that ...

<isomsg direction="outgoing">
<header>ISO025300045</header>
<field id="0" value="0200"/>
<field id="2" value="161234567890123456"/>
<field id="3" value="400000"/>
<field id="4" value="000000060050"/>

this is my code

ISOMsg msgiso = new ISOMsg();
msgiso.setMTI("0200");
BaseHeader db = new BaseHeader("ISO025300040".getBytes());
db.setDestination("127.0.0.1");
db.setSource("127.0.0.1");
msgiso.setHeader(db);

...... my sets ....

GenericPackager packager = new GenericPackager("cfg/packager/
base24.xml");
msgiso.setPackager(packager);


help me !!

Juan

unread,
Mar 13, 2009, 12:38:35 PM3/13/09
to jPOS Users
something else

when i put my message in iso server whith that header, the server
generates a exception

rror unpacking field 59
org.jpos.iso.ISOException: org.jpos.iso.IFA_LLLCHAR: Problem unpacking
field 59 (java.lang.ArrayIndexOutOfBoundsException: 384)
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:342)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:844)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:615)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
Nested:java.lang.ArrayIndexOutOfBoundsException: 384
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:342)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:844)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:615)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
<log realm="iso-server.session/127.0.0.1" at="Fri Mar 13 10:39:52
GMT-06:00 2009.636">
<session-error>
<iso-exception>
org.jpos.iso.IFA_LLLCHAR: Problem unpacking field 59
<nested-exception>
java.lang.ArrayIndexOutOfBoundsException: 384
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:342)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:844)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:615)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
</nested-exception>

Alejandro Revilla

unread,
Mar 13, 2009, 7:07:56 PM3/13/09
to jpos-...@googlegroups.com
>
> Hi !
>
> In my ISOmsg i need this header in my message
>
> ISO025300045
>
You want "ISO025300045" but then you call BaseHeader db = new BaseHeader("ISO025300040".getBytes());

and that's why you get 49534F303235333030303430 instead of 49534F303235333030303435.

Please note 49534F303235333030303430 is the hex representation of "ISO025300040"

Alejandro Revilla

unread,
Mar 13, 2009, 7:08:54 PM3/13/09
to jpos-...@googlegroups.com
> when i put my message in iso server whith that header, the server
> generates a exception
>
You need to configure a header in your ISOServer's channel configuration.

Juan Carlos Picado

unread,
Mar 15, 2009, 7:37:57 PM3/15/09
to jpos-...@googlegroups.com
I don't find any example, in the guide not appears any example.
You can get one?



2009/3/13 Alejandro Revilla <a...@jpos.org>


> when i put my message in iso server whith that header, the server
> generates a  exception
>
You need to configure a header in your ISOServer's channel configuration.






--
Att,

Ing. Juan Carlos Picado Herrera
Analista - Programador
http://blog.jotadeveloper.com/

Alejandro Revilla

unread,
Mar 15, 2009, 8:21:35 PM3/15/09
to jpos-...@googlegroups.com
You can add an attribute like:

header="ISOXXXXXXXXX"

to your channel definition, i.e:

<channel class="xxxx" header="ISOXXXXXXXXX" ...>

(either in your server or channel-adaptor)

--Alejandro

Juan Carlos Picado

unread,
Mar 15, 2009, 8:30:39 PM3/15/09
to jpos-...@googlegroups.com
Alejandro, thanks for your response.. but


the request....

 (Cabecera)         ISO025300040

(Tipo Mensaje)     0200

(Bitmap Prim)      F23C848108E1821C

(Bitmap Sec)       0000000010000100


The response....

(Cabecera)         ISO025300045

(Tipo Mensaje)     0210

(Bitmap Prim)      F23880010E918018

(Bitmap Sec)       0000000016000000

(2)                161234567890123456



the header is diferent for the request and the response, it does not matter? I try before you as you say, but I get the problem mentioned above....


2009/3/15 Alejandro Revilla <a...@jpos.org>

Chhil

unread,
Mar 15, 2009, 8:53:12 PM3/15/09
to jpos-...@googlegroups.com
As long as the length is the same it should not matter. 
You mention you get a problem, what is the problem?

-Chhil

Juan Carlos Picado

unread,
Mar 16, 2009, 12:27:08 AM3/16/09
to jpos-...@googlegroups.com
Chhil,

my problem is this....

when i use the header, i can't recieve my response...

this is a extract of my client....

private final static String  HEADER = "ISO025300040";
BaseHeader db = new BaseHeader(HEADER.getBytes());

db.setDestination("127.0.0.1");
db.setSource("127.0.0.1");
msgiso.setHeader(db);       
msgiso.setMTI("200");               
msgiso.set("2", "161234567890123456");
msgiso.set("3", "140000");
msgiso.set("4", "000000100000");
msgiso.set("7", "1219171316");
msgiso.set("11", "058169");
msgiso.set("12", "111316");
msgiso.set("13", "1219");
msgiso.set("14", "0901");
msgiso.set("17", "1219");
msgiso.set("22", "010");

etc......etc.....

in my server, i don't use Q2...........

import java.awt.BorderLayout;
import java.io.IOException;
import java.util.Observable;
import ni.com.banex.listener.VasaListenerBanex;
import ni.com.banex.ui.PanelVasa;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOServer;
import org.jpos.iso.ServerChannel;
import org.jpos.iso.channel.BASE24Channel;
import org.jpos.iso.gui.ISOChannelPanel;
import org.jpos.iso.packager.GenericPackager;
import org.jpos.util.Logger;
import org.jpos.util.SimpleLogListener;
import org.jpos.util.ThreadPool;

public class ISOServerInit implements Runnable {

    private static ISOChannelPanel channelPanel;
    static Observable observer;
    static VasaListenerBanex vs = new VasaListenerBanex();
    private static PanelVasa palen2;
    BASE24Channel clientSideChannel = null;
    Logger logger = new Logger();

    public static void main(String args[]) {
        try {
            ISOServerInit panel = new ISOServerInit();
            palen2 = new PanelVasa(vs);
            new Thread(panel).start();
        } catch (Exception e) {
            System.out.println("Error ISO SERVER->" + e);
        }
    }

    public void run() {
        logger.addListener(new SimpleLogListener(System.out));
        try {
            clientSideChannel = new BASE24Channel(new GenericPackager(
                    "cfg/packager/base24.xml"));
            clientSideChannel.setName("channel-side");
            clientSideChannel.setLogger(logger, "channel-side");
        } catch (IOException ex) {
            System.out.println("Error ISO SERVER->" + ex);
        } catch (ISOException e) {
            System.out.println("Error ISO SERVER->" + e);
        }
        new Thread(createServer()).start();

    }

    private ISOServer createServer() {
        ThreadPool pool = new ThreadPool(5, 30);
        pool.setLogger(logger, "iso-server-pool");
        clientSideChannel.setHeader("ISO025300040".getBytes());
        ISOServer server = new ISOServer(8000,
                (ServerChannel) clientSideChannel, pool);
        server.setName("iso-server");
        server.setLogger(logger, "iso-server");
        server.addISORequestListener(vs);
        channelPanel = createChannelPanel();
        palen2.setLayout(new BorderLayout());
        palen2.add(channelPanel);
        server.addObserver(channelPanel);
        return server;
    }

    private ISOChannelPanel createChannelPanel() {
        Logger logger = new Logger();
        logger.addListener(new SimpleLogListener(System.out));
        return new ISOChannelPanel(clientSideChannel, "localhost:8000");
    }

}

this is my result......

<receive>
    <isomsg direction="incoming">

      <header>49534F303235333030303430</header>
      <field id="0" value="0200"/>
      <field id="2" value="161234567890123456"/>
      <field id="3" value="400000"/>
      <field id="4" value="000000060050"/>
      <field id="7" value="0122040226"/>
      <field id="11" value="058910"/>
      <field id="12" value="100747"/>
      <field id="13" value="0813"/>
      <field id="14" value="0903"/>
      <field id="17" value="0501"/>
      <field id="22" value="011"/>
      <field id="25" value="01"/>
      <field id="32" value="06289000"/>
      <field id="35" value="0202"/>
      <field id="37" value="848277058910"/>
      <field id="41" value="66778899        "/>
      <field id="42" value="BANKNAM       "/>
      <field id="43" value="BANKNAMSD               CITYNAME      NA"/>
      <field id="48" value="044                                            "/>
      <field id="49" value="840"/>
      <field id="55" value="003777"/>
      <field id="60" value="01288889999+000"/>
      <field id="61" value="0130000PRO10000P"/>
      <field id="62" value="006505050"/>
      <field id="100" value="06101010"/>
      <field id="120" value="033CITYDS                 TISCCITY"/>
    </isomsg>
  </receive>

<send>

    <isomsg direction="outgoing">
      <header>49534F303235333030303430</header>
      <field id="0" value="0210"/>

      <field id="2" value="161234567890123456"/>
      <field id="3" value="010000"/>
      <field id="4" value="000000100000"/>
      <field id="7" value="1219170713"/>
      <field id="11" value="058130"/>
      <field id="12" value="110713"/>
      <field id="13" value="1219"/>
      <field id="14" value="0903"/>
      <field id="17" value="1219"/>
      <field id="22" value="011"/>
      <field id="25" value="01"/>
      <field id="32" value="06289000"/>
      <field id="35" value="0202"/>
      <field id="37" value="027277058130"/>
      <field id="38" value="003304"/>
      <field id="39" value="00"/>
      <field id="41" value="NANCAJ02        "/>
      <field id="42" value="BANKNAM       "/>
      <field id="43" value="BANKNAMSD               CITYNAME      NA"/>
      <field id="44" value="254000000000000000000100000"/>
      <field id="48" value="044ASCAR ARMANDO PEREZ SANDOVAL              "/>
      <field id="49" value="558"/>
      <field id="55" value="003777"/>
      <field id="60" value="0130000PRO10000P"/>
      <field id="61" value="0130000PRO10000P"/>
      <field id="62" value="006505050"/>
      <field id="100" value="06289000"/>
      <field id="102" value="280002383112                  "/>
      <field id="103" value="28                            "/>
      <field id="120" value="033CITYDS                 TISCCITY"/>
    </isomsg>
  </send>

---------------------------------

log realm="iso-server.session/127.0.0.1" at="Sun Mar 15 22:08:34 CST 2009.418">
  <session-start/>
</log>
error unpacking field 100
org.jpos.iso.ISOException: org.jpos.iso.IFA_LLNUM: Problem unpacking field 100 (java.lang.NegativeArraySizeException)
    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:342)
    at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:844)
    at org.jpos.iso.BaseChannel.receive(BaseChannel.java:615)
    at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
    at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
Nested:java.lang.NegativeArraySizeException
    at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:53)
    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:342)
    at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:844)
    at org.jpos.iso.BaseChannel.receive(BaseChannel.java:615)
    at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
    at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
<log realm="channel-side/127.0.0.1:53192" at="Sun Mar 15 22:08:34 CST 2009.455">
  <receive>
    <iso-exception>
      org.jpos.iso.IFA_LLNUM: Problem unpacking field 100
      <nested-exception>
      java.lang.NegativeArraySizeException
    at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:53)
    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:342)
    at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:844)
    at org.jpos.iso.BaseChannel.receive(BaseChannel.java:615)
    at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
    at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
      </nested-exception>
      org.jpos.iso.ISOException: org.jpos.iso.IFA_LLNUM: Problem unpacking field 100 (java.lang.NegativeArraySizeException)
    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:342)
    at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:844)
    at org.jpos.iso.BaseChannel.receive(BaseChannel.java:615)
    at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
    at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
Nested:java.lang.NegativeArraySizeException
    at org.jpos.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:53)
    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:342)
    at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:844)
    at org.jpos.iso.BaseChannel.receive(BaseChannel.java:615)
    at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
    at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
    </iso-exception>






2009/3/15 Chhil <chi...@gmail.com>

chhil

unread,
Mar 16, 2009, 4:10:59 AM3/16/09
to jpos-...@googlegroups.com
Is the the Base24.xml  the one that comes with JPOS?
Are we sure the packager is aligned corectly, when its trying to unpack means its trying to deal with the request that came in and one field may be off causing the LL of field 100 to read an incorrect length causing it to throw an exception?
Can we see the raw dump of the message that has come in.

I hope I am not putting you on the wrong track, but I am sure someone will correct me if thats the case.

-chhil

Alejandro Revilla

unread,
Mar 16, 2009, 7:23:45 AM3/16/09
to jpos-...@googlegroups.com
Juan,

I think you want to set a dummy header with the appropriate length in
your clientChannel definition.
> >> **the request....
> >>
> >> *(Cabecera)* ISO025300040
> >>
> >> *(Tipo Mensaje)* 0200
> >>
> >> *(Bitmap Prim)* F23C848108E1821C
> >>
> >> *(Bitmap Sec)* 0000000010000100
> >>
> >> The response....
> >>
> >> *(Cabecera)* ISO025300045
> >>
> >> *(Tipo Mensaje)* 0210
> >>
> >> *(Bitmap Prim)* F23880010E918018
> >>
> >> *(Bitmap Sec)* 0000000016000000
> >>
> >> *(2)* 161234567890123456
> >>
> >>
> >> the header is diferent for the request and the response, it does not
> >> matter? I try before you as you say, but I get the problem mentioned
> >> above....
> >>
> >>
> >> 2009/3/15 Alejandro Revilla < <a...@jpos.org>a...@jpos.org>
> >>
> >>>
> >>> You can add an attribute like:
> >>>
> >>> header="ISOXXXXXXXXX"
> >>>
> >>> to your channel definition, i.e:
> >>>
> >>> <channel class="xxxx" header="ISOXXXXXXXXX" ...>
> >>>
> >>> (either in your server or channel-adaptor)
> >>>
> >>> --Alejandro
> >>>
> >>>
> >>> On Sun, Mar 15, 2009 at 05:37:57PM -0600, Juan Carlos Picado wrote:
> >>> > I don't find any example, in the guide not appears any example.
> >>> > You can get one?
> >>> >
> >>> >
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >> --
> >> Att,
> >>
> >> Ing. Juan Carlos Picado Herrera
> >> Analista - Programador
> >> <http://blog.jotadeveloper.com/>http://blog.jotadeveloper.com/
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
> >
> > >
> >
>
> >

Juan

unread,
Mar 24, 2009, 8:07:02 PM3/24/09
to jPOS Users
the base24.xml is fine , when i send my message without header, all
fine, but when I put header I get the impression that the message
conforms to one side and then unpacks and not well.

<log realm="xml-server.server.session/127.0.0.1" at="Tue Mar 24
17:51:49 GMT-06:00 2009.679">
<session-start/>
</log>
error unpacking field 56
org.jpos.iso.ISOException: org.jpos.iso.IFA_LLLCHAR: Problem unpacking
field 56 (java.lang.ArrayIndexOutOfBoundsException: 376)
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:342)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:856)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:627)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
Nested:java.lang.ArrayIndexOutOfBoundsException: 376
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:342)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:856)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:627)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
<log realm="channel/127.0.0.1:4807" at="Tue Mar 24 17:51:50 GMT-06:00
2009.679">
<receive>
<iso-exception>
org.jpos.iso.IFA_LLLCHAR: Problem unpacking field 56
<nested-exception>
java.lang.ArrayIndexOutOfBoundsException: 376
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:342)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:856)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:627)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
</nested-exception>
org.jpos.iso.ISOException: org.jpos.iso.IFA_LLLCHAR: Problem
unpacking field 56 (java.lang.ArrayIndexOutOfBoundsException: 376)
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:342)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:856)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:627)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
Nested:java.lang.ArrayIndexOutOfBoundsException: 376
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:342)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:856)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:627)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
</iso-exception>
--- data ---
0000 49 53 4F 30 32 35 33 30 30 34 30 30 32 30 30 46
ISO025300400200F
0010 32 33 43 38 34 30 31 30 38 45 31 38 32 31 43 30
23C840108E1821C0
0020 30 30 30 30 30 30 30 31 30 30 30 30 31 30 30 31
0000000100001001
0030 38 31 36 31 32 33 34 35 36 37 38 39 30 31 32 33
8161234567890123
0040 34 35 36 31 34 30 30 30 30 30 30 30 30 30 30 31
4561400000000001
0050 30 30 30 30 30 31 32 31 39 31 37 31 33 31 36 30
0000012191713160
0060 35 38 31 36 39 31 31 31 33 31 36 31 32 31 39 30
5816911131612190
0070 39 30 31 31 32 31 39 30 31 30 30 39 30 36 32 38
9011219010090628
0080 39 30 30 30 30 32 37 32 37 37 30 35 38 31 33 30
9000027277058130
0090 20 4E 41 4E 43 41 4A 30 32 20 20 20 20 20 20 20
NANCAJ02
00a0 20 42 41 4E 43 45 4E 54 52 20 20 20 20 20 20 20 BANCK
00b0 42 41 4E 43 45 4E 54 52 4F 20 20 20 20 20 20 20 BANCK
00c0 20 20 20 20 20 20 20 20 20 4D 41 4E 41 47 55
41 CITY
00d0 20 20 20 20 20 20 4E 49 30 34 37 30 34 34 30 33
NI04704403
00e0 30 35 31 37 20 20 20 20 20 20 20 20 20 20 20 20
0517
00f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20
0100 20 20 20 20 20 20 20 20 20 20 35 35 38 30 30 36
558006
0110 30 30 33 38 31 38 30 31 35 30 31 32 30 37 32 30
0038180150120720
0120 42 43 52 54 2B 30 30 30 30 31 36 30 31 33 30 30 BCRT
+00001601300
0130 30 30 50 52 4F 31 30 30 30 30 50 30 30 39 30 30
00PRO10000P00900
0140 36 30 30 38 35 36 34 30 38 30 36 32 38 38 30 30
6008564080628800
0150 30 30 33 36 30 33 33 4E 41 4E 44 41 49 4D 45 20
0036033NANDAIME
0160 2D 43 41 4A 41 2D 20 20 20 20 20 20 20 20 20 20 -
CAJA-
0170 20 20 20 20 20 20 20 20


qserver can not unpack the message correctly

***************************
ISOMsgTest.java
*************
ISOMsg message = new ISOMsg();
message.setMTI("200");
BaseHeader db = new BaseHeader("ISO02530040".getBytes());
message.setHeader(db);
message.set(2, "161234567890123456");
message.set(3, "140000");
message.set(4, "000000100000");
message.set(7, "1219171316");
message.set(11, "058169");
message.set(12, "111316");
message.set(13, "1219");
message.set(14, "0901");
message.set(17, "1219");
message.set(22, "010");
message.set(32, "062890000");
message.set(37, "27277058130");
message.set(41, "NANCAJ02 ");
message.set(42, "BANK ");
message.set(43, "BANK CITY NI");
message.set(48, "044030517 ");
message.set(49, "558");
message.set(55, "003818");
message.set(60, "0120720BCRT+000");
message.set(61, "0130000PRO10000P");
message.set(62, "006008564");
message.set(100, "06288000");
message.set(120, "033NANDAIME -CAJA- ");
GenericPackager packager = new GenericPackager(
"cfg/packager/base24.xml");
message.setPackager(packager);
logger.addListener(new SimpleLogListener(System.out));
channel = new BASE24Channel("localhost", 8000, new GenericPackager(
"cfg/packager/base24.xml"));
((LogSource) channel).setLogger(logger, "channel");
if (!channel.isConnected())
channel.connect();
channel.send(message);
ISOMsg rrro = channel.receive();


data has been modified for security

******************************************
<?xml version="1.0" encoding="UTF-8"?>
<server name="xml-server" class="org.jpos.q2.iso.QServer" logger="Q2">
<attr name="port" type="java.lang.Integer">8000</attr>
<channel name="dummyclient.channel"
class="org.jpos.iso.channel.BASE24Channel"
packager="org.jpos.iso.packager.GenericPackager" logger="Q2">
<property name="packager-config" value="cfg/packager/base24.xml" />
</channel>
<request-listener class="ni.com.banex.listener.GatewayBankListener"
logger="Q2">
</request-listener>
</server>
******************************************

On 16 mar, 05:23, Alejandro Revilla <a...@jpos.org> wrote:
> Juan,
>
> I think you want to set a dummy header with the appropriate length in
> your clientChannel definition.
>
> On Mon, Mar 16, 2009 at 01:40:59PM +0530, chhil wrote:
> > Is the the Base24.xml  the one that comes with JPOS?
> > Are we sure the packager is aligned corectly, when its trying to unpack
> > means its trying to deal with the request that came in and one field may be
> > off causing the LL of field 100 to read an incorrect length causing it to
> > throw an exception?
> > Can we see the raw dump of the message that has come in.
>
> > I hope I am not putting you on the wrong track, but I am sure someone will
> > correct me if thats the case.
>
> > -chhil
>
> > On Mon, Mar 16, 2009 at 9:57 AM, Juan Carlos Picado
> > <juanpicad...@gmail.com>wrote:
> ...
>
> leer más »

Mark Salter

unread,
Mar 25, 2009, 4:29:45 AM3/25/09
to jpos-...@googlegroups.com
Juan wrote:
> the base24.xml is fine , when i send my message without header, all
> fine, but when I put header I get the impression that the message
> conforms to one side and then unpacks and not well.
>

> qserver can not unpack the message correctly


>
> ***************************
> ISOMsgTest.java
> *************
> ISOMsg message = new ISOMsg();
> message.setMTI("200");
> BaseHeader db = new BaseHeader("ISO02530040".getBytes());

Here, your header is 11 bytes long, just note that for now, it is a
different length in the server code given earlier - I will mention this
again shortly.

>
> ******************************************
> <?xml version="1.0" encoding="UTF-8"?>
> <server name="xml-server" class="org.jpos.q2.iso.QServer" logger="Q2">
> <attr name="port" type="java.lang.Integer">8000</attr>
> <channel name="dummyclient.channel"
> class="org.jpos.iso.channel.BASE24Channel"
> packager="org.jpos.iso.packager.GenericPackager" logger="Q2">
> <property name="packager-config" value="cfg/packager/base24.xml" />
> </channel>
> <request-listener class="ni.com.banex.listener.GatewayBankListener"
> logger="Q2">
> </request-listener>
> </server>
> ******************************************

Is this your server configuration file? I thought I read somewhere that
you were not using Q2?

If this configuration is being used it is missing header="12345678901"
in the channel section. I have shown 11 bytes, but perhaps your header
is 12?

However, in the thread from a little while ago...

... you also presented this code :-


>>>> private ISOServer createServer() {
>>>> ThreadPool pool = new ThreadPool(5, 30);
>>>> pool.setLogger(logger, "iso-server-pool");
>>>> clientSideChannel.setHeader("ISO025300040".getBytes());
>>>> ISOServer server = new ISOServer(8000,
>>>> (ServerChannel) clientSideChannel, pool);
>>>> server.setName("iso-server");
>>>> server.setLogger(logger, "iso-server");
>>>> server.addISORequestListener(vs);
>>>> channelPanel = createChannelPanel();
>>>> palen2.setLayout(new BorderLayout());
>>>> palen2.add(channelPanel);
>>>> server.addObserver(channelPanel);
>>>> return server;
>>>> }

This method provides the clientSideChannel with a 'sample' header as
"ISO025300040", which is 12 bytes long.

This byte may make a lot of difference.

So:-

- How many bytes is your header?
- Are you setting the server up via code or via the xml configuration file?

--
Mark

Juan

unread,
Mar 25, 2009, 11:00:24 AM3/25/09
to jPOS Users
Sorry Mark, my header is 12 bytes, I was wrong

header: ISO025300040

I try and all works fine !! Thanks Mark

ISOMsg message = new ISOMsg();
message.setMTI("200");
BaseHeader db = new BaseHeader("ISO025300045".getBytes());
<--------- HEADER IN MESSAGE
//db.setDestination("127.0.0.1");
//db.setSource("127.0.0.1");
message.setHeader(db);
message.set(2, "161234567890123456");
message.set(3, "140000");
message.set(4, "000000100000");


In the server.......

BASE24Channel clientSideChannel = null;
.....
private ISOServer createServer() {
ThreadPool pool = new ThreadPool(5, 30);
pool.setLogger(logger, "iso-server-pool");
clientSideChannel.setHeader("ISO025300040".getBytes());
<----------- HEADER IN THE SERVER
ISOServer server = new ISOServer(8002,
(ServerChannel) clientSideChannel, pool);
server.setName("iso-server");
server.setLogger(logger, "iso-server");
server.addISORequestListener(vs);

channelPanel = createChannelPanel();
palen2.setLayout(new BorderLayout());
palen2.add(channelPanel);
server.addObserver(channelPanel);
return server;
}

Thanks Alejandro, Mark for your support.

Mark Salter

unread,
Mar 25, 2009, 11:06:39 AM3/25/09
to jpos-...@googlegroups.com
Juan wrote:
> Sorry Mark, my header is 12 bytes, I was wrong
>
> header: ISO025300040
>
> I try and all works fine !! Thanks Mark

I'm glad it was so easy, that was rather a lucky spot though.


--
Mark

MrSamintha

unread,
Oct 9, 2015, 4:35:11 AM10/9/15
to jPOS Users, juanpi...@gmail.com
set header to iso message like as,

ISOMsg m = new ISOMsg();
GenericValidatingPackager packager  = new GenericValidatingPackager("iso/base24.xml");
m.setPackager(packager);

BaseHeader db = new BaseHeader("ISO025300040".getBytes());
m.setHeader(db); 

but in the actual request, no header data included.
please help
Reply all
Reply to author
Forward
0 new messages