Java JPO无法从服务器接收ISOMsg
我一步一步地设置了JPOSJAR服务器。我通过以下代码创建服务器:Java JPO无法从服务器接收ISOMsg,java,jpos,Java,Jpos,我一步一步地设置了JPOSJAR服务器。我通过以下代码创建服务器: public class jPOSServer implements ISORequestListener { public static void main(String[] args) { try { Logger logger = new Logger(); logger.addListener(new SimpleLogListener(Syste
public class jPOSServer implements ISORequestListener {
public static void main(String[] args) {
try {
Logger logger = new Logger();
logger.addListener(new SimpleLogListener(System.out));
XMLChannel serverChannel = new XMLChannel("localhost", 9000, new XMLPackager());
((LogSource) serverChannel).setLogger(logger, "server-channel-logger");
ISOServer isoServer = new ISOServer(9000, serverChannel, null);
isoServer.setLogger(logger, "server-logger");
isoServer.addISORequestListener(new jPOSServer());
new Thread(isoServer).start();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public boolean process(ISOSource isoSource, ISOMsg isoMsg) {
ISOMsg m = isoMsg;
try {
m.setMTI("0830");
m.set(11, "000002");
m.set(41, "00000002");
isoSource.send(m);
return true;
} catch (ISOException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}
登录JAR服务器的位置如下:
<log realm="org.jpos.transaction.TransactionManager" at="2019-04-24T15:25:04.787" lifespan="24ms">
<abort>
txnmgr-1:idle:1
<context>
TIMESTAMP: Wed Apr 24 15:25:04 IRDT 2019
SOURCE: org.jpos.iso.channel.XMLChannel@7217f905
REQUEST:
<isomsg direction="incoming">
<!-- org.jpos.iso.packager.XMLPackager -->
<field id="0" value="0800"/>
<field id="11" value="000001"/>
<field id="41" value="00000001"/>
<field id="70" value="301"/>
</isomsg>
RESULT:
<result>
<fail>
[MISCONFIGURED_ENDPOINT] o.j.t.p.QueryHost.prepare:60 'DESTINATION' not present in Context
</fail>
</result>
LOGEVT:
<info>
RESPONSE not present
</info>
</context>
prepare: o.j.t.p.QueryHost ABORTED READONLY NO_JOIN
prepareForAbort: o.j.t.p.SendResponse
abort: o.j.t.p.SendResponse
in-transit=0, head=2, tail=2, paused=0, outstanding=0, active-sessions=2/128, tps=0, peak=0, avg=0.00, elapsed=22ms
<profiler>
prepare: o.j.t.p.QueryHost [20.5/20.5]
prepareForAbort: o.j.t.p.SendResponse [0.8/21.3]
abort: o.j.t.p.SendResponse [0.8/22.1]
end [28.3/50.5]
</profiler>
</abort>
</log>
<log realm="xml-server-8000/127.0.0.1:61804" at="2019-04-24T15:25:07.721" lifespan="3002ms">
<receive>
<io-timeout/>
</receive>
</log>
<log realm="xml-server-8000.server.session/127.0.0.1:61804" at="2019-04-24T15:25:07.725">
<session-end/>
</log>
<log realm="org.jpos.q2.iso.ChannelAdaptor" at="2019-04-24T15:29:57.225" lifespan="1ms">
<warn>
channel-receiver-jpos-receive
Read timeout / EOF - reconnecting
</warn>
</log>
txnmgr-1:怠速:1
时间戳:2019年4月24日星期三15:25:04 IRDT
资料来源:org.jpos.iso.channel。XMLChannel@7217f905
请求:
结果:
[配置错误的\u端点]o.j.t.p.QueryHost.prepare:上下文中不存在60个“目标”
LOGEVT:
没有答复
准备:o.j.t.p.QueryHost中止只读无连接
准备港口:o.j.t.p.SendResponse
中止:o.j.t.p.SendResponse
在途=0,头部=2,尾部=2,暂停=0,未完成=0,活动会话=2/128,tps=0,峰值=0,平均值=0.00,经过时间=22毫秒
准备:o.j.t.p.QueryHost[20.5/20.5]
预备港:o.j.t.p.SendResponse[0.8/21.3]
中止:o.j.t.p.SendResponse[0.8/22.1]
完[28.3/50.5]
信道接收器jpos接收
读取超时/EOF-重新连接
我通过telnet localhost 8000将数据发送到端口8000上的JAR服务器,JAR服务器将数据传递到端口9000上的服务器。JAR服务器接收数据和日志数据,向服务器发送数据,服务器接收数据。但是发生了读取超时
错误。我调试了JAR文件,发现bug是在b=this.streamReceive()时触发的代码>在BaseChannel.java:777上。
我怎样才能解决这个问题?谢谢。您认为b=this.streamReceive()中的bug是什么意思?你的问题似乎是:
<result>
<fail>
[MISCONFIGURED_ENDPOINT] o.j.t.p.QueryHost.prepare:60 'DESTINATION' not present in Context
</fail>
</result>
[配置错误的\u端点]o.j.t.p.QueryHost.prepare:上下文中不存在60个“目标”
这意味着QueryHost参与者不知道将消息发送到哪里,这就是为什么您没有响应的原因,您需要将目标mux添加到上下文中,并相应地添加到“destination”键下。我不知道您是如何创建上下文的,如果它正在使用IncomingListener,那么您将丢失此条目
更改jPOS自动应答器,无论您的mux名称是什么。感谢您的重播。我将``添加到50_xml_server.xml
中,但仍然出现错误。我只通过添加:m.setMTI(“830”)代码>到过程()
方法。因此,首先将数据从客户端发送到端口800(JAR服务器),然后更改消息的MIT
,并转发到端口9000。但问题是我不明白为什么我必须在过程
方法中更改MIT
,然后一切都会好起来!这是因为mux只接受响应响应0830
是对0820
的响应,但0820
不是。您还可以使用m.setResponseMTI()