In my previous post
http://groups.google.com/group/jpos-users/t/602ed653d981cca0?hl=es
I used a BASE24Channel and everything worked fine, but when i change
my channel, my iso server generate this exception and is repeated for
each reconnect.
The Exception->
receive length 0 seems strange - maxPacketLength = 100000
org.jpos.iso.ISOException: receive length 0 seems strange -
maxPacketLength = 100000
sorry so long.
thanks
all the code.....
#################################################################
the log of de ISO-SERVER (simulate remote host) IP 127.0.0.1 PORT 1995
#################################################################
<log realm="iso-server" at="Mon Mar 23 15:54:24 GMT-06:00 2009.203">
<iso-server>
listening on port 1995
</iso-server>
</log>
<log realm="iso-server.session/
127.0.0.1" at="Mon Mar 23 15:55:16
GMT-06:00 2009.357">
<session-start/>
</log>
<log realm="channel-side/
127.0.0.1:1871" at="Mon Mar 23 15:55:16
GMT-06:00 2009.357">
<get-message-length/>
</log>
<log realm="channel-side/
127.0.0.1:1871" at="Mon Mar 23 15:55:19
GMT-06:00 2009.357">
<got-message-length>
1
</got-message-length>
</log>
<log realm="channel-side/
127.0.0.1:1871" at="Mon Mar 23 15:55:19
GMT-06:00 2009.357">
<receive>
<iso-exception>
receive length 0 seems strange - maxPacketLength = 100000
org.jpos.iso.ISOException: receive length 0 seems strange -
maxPacketLength = 100000
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:609)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
</iso-exception>
</receive>
</log>
<log realm="iso-server.session/
127.0.0.1" at="Mon Mar 23 15:55:19
GMT-06:00 2009.357">
<session-error>
<iso-exception>
receive length 0 seems strange - maxPacketLength = 100000
org.jpos.iso.ISOException: receive length 0 seems strange -
maxPacketLength = 100000
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:609)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:144)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
</iso-exception>
</session-error>
</log>
#################################################################
the log of my Q2 IP 127.0.0.1 PORT 8000
#################################################################
<log realm="Q2.system" at="Mon Mar 23 16:13:38 GMT-06:00 2009.142">
<info>
Q2 started, deployDir=C:\Eclipse\workspaces_34_cvs
\creditCarProcesor1.6\deploy
</info>
</log>
<log realm="Q2.system" at="Mon Mar 23 16:13:38 GMT-06:00 2009.142">
<info>
deploy:C:\Eclipse\workspaces_34_cvs\creditCarProcesor1.6\deploy
\99_sysmon.xml
</info>
</log>
<log realm="Q2.system" at="Mon Mar 23 16:13:38 GMT-06:00 2009.157">
<info>
deploy:C:\Eclipse\workspaces_34_cvs\creditCarProcesor1.6\deploy
\adaptor.xml
</info>
</log>
<log realm="Q2.system" at="Mon Mar 23 16:13:38 GMT-06:00 2009.173">
<info>
deploy:C:\Eclipse\workspaces_34_cvs\creditCarProcesor1.6\deploy
\bsh.xml
</info>
</log>
<log realm="Q2.system" at="Mon Mar 23 16:13:38 GMT-06:00 2009.267">
<info>
deploy:C:\Eclipse\workspaces_34_cvs\creditCarProcesor1.6\deploy
\multiplexor.xml
</info>
</log>
<log realm="Q2.system" at="Mon Mar 23 16:13:38 GMT-06:00 2009.282">
<info>
deploy:C:\Eclipse\workspaces_34_cvs\creditCarProcesor1.6\deploy
\server.xml
</info>
</log>
<log realm="Q2.system" at="Mon Mar 23 16:13:38 GMT-06:00 2009.298">
<info>
deploy:C:\Eclipse\workspaces_34_cvs\creditCarProcesor1.6\deploy
\space.xml
</info>
</log>
<log realm="Q2.system" at="Mon Mar 23 16:13:38 GMT-06:00 2009.314">
<info>
deploy:C:\Eclipse\workspaces_34_cvs\creditCarProcesor1.6\deploy
\ui.xml
</info>
</log>
<log realm="org.jpos.q2.qbean.SystemMonitor" at="Mon Mar 23 16:13:38
GMT-06:00 2009.314">
<info>
Starting SystemMonitor
</info>
</log>
<log realm="org.jpos.q2.qbean.SystemMonitor" at="Mon Mar 23 16:13:38
GMT-06:00 2009.314">
<info>
<release>1.6.2$Revision: 2626 $</release>
<memory>
freeMemory=3791552
totalMemory=5177344
inUseMemory=1385792
</memory>
<threads>
delay=0 ms
threads=3
Thread[Reference Handler,10,system]
Thread[Finalizer,8,system]
Thread[Signal Dispatcher,9,system]
Thread[Attach Listener,5,system]
Thread[main,5,main]
Thread[Timer-0,5,main]
Thread[SystemMonitor,5,main]
</threads>
--- name-registrar ---
mux.mux: org.jpos.q2.iso.QMUX
tx=0, rx=0, tx_expired=0, tx_pending=0, rx_expired=0,
rx_pending=0, rx_unhandled=0, rx_forwarded=0, connected=true
tspace:default: org.jpos.space.TSpace
logger.Q2: org.jpos.util.Logger
</info>
</log>
Hello BSH Script
<log realm="xml-server.server" at="Mon Mar 23 16:13:38 GMT-06:00
2009.517">
<iso-server>
listening on port 8000
</iso-server>
</log>
<log realm="channel/
127.0.0.1:1995" at="Mon Mar 23 16:13:38 GMT-06:00
2009.517">
<connect>
localhost:1995
</connect>
</log>
<log realm="channel/
127.0.0.1:1995" at="Mon Mar 23 16:13:38 GMT-06:00
2009.532">
<get-message-length/>
</log>
<log realm="channel/
127.0.0.1:1995" at="Mon Mar 23 16:13:58 GMT-06:00
2009.532">
<receive>
<peer-disconnect>Connection reset</peer-disconnect>
</receive>
</log>
<log realm="org.jpos.q2.iso.ChannelAdaptor" at="Mon Mar 23 16:13:58
GMT-06:00 2009.532">
<warn>
channel-receiver-creditCarProcesor-receive
<exception name="Connection reset">
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at java.io.DataInputStream.readFully(DataInputStream.java:178)
at org.jpos.iso.channel.BASE24TCPChannel.getMessageLength
(BASE24TCPChannel.java:106)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:588)
at org.jpos.q2.iso.ChannelAdaptor$Receiver.run(ChannelAdaptor.java:
303)
at java.lang.Thread.run(Thread.java:619)
</exception>
</warn>
</log>
<log realm="channel/
127.0.0.1:1995" at="Mon Mar 23 16:14:19 GMT-06:00
2009.547">
<connect>
localhost:1995
</connect>
</log>
<log realm="channel/
127.0.0.1:1995" at="Mon Mar 23 16:14:19 GMT-06:00
2009.547">
<get-message-length/>
</log>
<log realm="channel/
127.0.0.1:1995" at="Mon Mar 23 16:14:39 GMT-06:00
2009.562">
<receive>
<peer-disconnect>Connection reset</peer-disconnect>
</receive>
</log>
<log realm="org.jpos.q2.iso.ChannelAdaptor" at="Mon Mar 23 16:14:39
GMT-06:00 2009.562">
<warn>
channel-receiver-creditCarProcesor-receive
<exception name="Connection reset">
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at java.io.DataInputStream.readFully(DataInputStream.java:178)
at org.jpos.iso.channel.BASE24TCPChannel.getMessageLength
(BASE24TCPChannel.java:106)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:588)
at org.jpos.q2.iso.ChannelAdaptor$Receiver.run(ChannelAdaptor.java:
303)
at java.lang.Thread.run(Thread.java:619)
</exception>
</warn>
</log>
#################################################################
the code
ISOServerInit.java
this clase simulate mi credit card procesor, the channel adapter
conect this clase
#################################################################
import java.awt.BorderLayout;
import java.io.IOException;
import java.util.Observable;
import xx.com.bank.listener.CreditCardProcesorListenerbank;
import xx.com.bank.ui.Panel;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOServer;
import org.jpos.iso.ServerChannel;
import org.jpos.iso.channel.BASE24TCPChannel;
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 CreditCardProcesorListenerbank vs = new
CreditCardProcesorListenerbank();
private static Panel palen2;
BASE24TCPChannel clientSideChannel = null;
Logger logger = new Logger();
public static void main(String args[]) {
try {
ISOServerInit panel = new ISOServerInit();
palen2 = new Panel(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 BASE24TCPChannel(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");
ISOServer server = new ISOServer(1995,
(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:1995");
}
}
#################################################################
my channel adaptor adaptor.xml
#################################################################
<channel-adaptor name='co_opChannel'
class="org.jpos.q2.iso.ChannelAdaptor"
logger="Q2">
<channel name="channel.co_opChannel"
class="org.jpos.iso.channel.BASE24TCPChannel"
logger="Q2" packager="org.jpos.iso.packager.GenericPackager">
<property name="host" value="localhost" />
<property name="port" value="1995" />
<property name="packager-config" value="cfg/packager/base24.xml" />
</channel>
<in>creditCarProcesor-send</in>
<out>creditCarProcesor-receive</out>
<reconnect-delay>20000</reconnect-delay>
<keep-alive>yes</keep-alive>
</channel-adaptor>
#################################################################
my mux.xml multiplexor.xml
#################################################################
<?xml version="1.0" encoding="UTF-8"?>
<mux class="org.jpos.q2.iso.QMUX" logger="Q2" name="mux">
<in>creditCarProcesor-receive</in>
<out>creditCarProcesor-send</out>
<!--<ready>postilion1.ready postilion2.ready</ready>-->
<unhandled>mux.unhandled</unhandled>
<key>11</key>
</mux>
#################################################################
my server.xml
#################################################################
<?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.BASE24TCPChannel"
packager="org.jpos.iso.packager.GenericPackager" logger="Q2">
<property name="packager-config" value="cfg/packager/base24.xml" />
</channel>
<request-listener class="xx.com.bann¡k.listener.GatewayBankListener"
logger="Q2">
</request-listener>
</server>
#################################################################
GatewayBankListenerextends.java
#################################################################
package xx.com.bank.listener;
import java.io.IOException;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.ISORequestListener;
import org.jpos.iso.ISOSource;
import org.jpos.q2.iso.QMUX;
import org.jpos.util.Log;
import org.jpos.util.NameRegistrar;
public class GatewayBankListenerextends Log implements
ISORequestListener {
@Override
public boolean process(ISOSource source, ISOMsg m) {
ISOMsg responseISOMsg = null;
QMUX mux = null;
//m.dump(System.out,"b");
try {
mux = (QMUX) NameRegistrar.get("mux.mux");
mux.setLogger ("mux");
responseISOMsg = mux.request(m, 5000);
} catch (NameRegistrar.NotFoundException ex) {
fatal("error->" + ex);
} catch (ISOException ex) {
fatal("errror->" + ex);
}
try {
if (responseISOMsg!= null) {
source.send(responseISOMsg);
} else {
source.send(null);
throw new ISOException("null pointer");
}
} catch (IOException ex) {
fatal("error->" + ex);
} catch (ISOException ex) {
fatal("error->" + ex);
}
return true;
}
}