1

jpos クライアントから次の 0800 リクエストを送信しています。

   private void sendLonOnRequest() {
        ISOMsg logOnMessage = null;
        try {
          Object sessionId = sp.rd(cfg.get(READ_KEY), cfg.getLong(TIME_OUT));
          if (sessionId != null) {
            logOnMessage = new ISOMsg();
            logOnMessage.setMTI("0800");
            logOnMessage.set(7, ISODate.getDateTime(new Date()));
            logOnMessage.set(11, getSystemAuditNumber());
            logOnMessage.set(70, "001");
            logOnMessage.set(125, "EFT");
            ISOMsg response = mux.request(logOnMessage, 30000);
            if (response != null) {
                sp.out(ECHO, new Object(), echoInterval);
                handleSuccess(logOnMessage);
            } else {
                log.info("############ RESPONSE NULL");
                handleFailure(logOnMessage, null);
            }
          }
        } catch (ISOException e) {
            handleFailure(logOnMessage, e);
        }
    }

システム監査番号は次のように生成されます。

public String getSystemAuditNumber() {
    int stan = new Random().nextInt(900000);
    return ISOUtil.zeropad(stan, 6);
}

リクエストの例は次のとおりです。

<log realm="channel/xxx.xxx.xx.xxx:port" at="Thu Aug 10 14:12:32 IST 2017.175" lifespan="78ms">
  <send>
    <isomsg direction="outgoing">
      <!-- org.jpos.iso.packager.GenericPackager[D:/location/to/packager/iso87ascii.xml] -->
      <field id="0" value="0800"/>
      <field id="7" value="0810141232"/>
      <field id="11" value="022887"/>
      <field id="70" value="001"/>
      <field id="125" value="EFT"/>
    </isomsg>
  </send>
</log>

しかし、jpos サーバーから応答がなく (応答が null)、クライアントがタイムアウトします。サーバーのログを表示したり、デバッグしたりする方法がありません。誰かがこれについて私を助けてくれますか。

4

1 に答える 1

0

サーバーからログを取得するオプションがない場合、最適なオプションはWiresharkなどのネットワーク スニファーを使用することです。

これは、何が起こっているか (TCP パケット レベル) を理解するのに役立ちます。

于 2017-09-06T08:31:49.753 に答える