2017-06-05 6 views
1

jOSを使用してISOServerにISO8583メッセージを送信する必要があります。メッセージを送信して応答を受け取るクライアント・シミュレーターからQServerと通信することができました。今、私はそのサーバーにそれらのメッセージを送信するJavaプロジェクト(クライアント)を実装する必要があります。ISOMsgをISOServerに送信

ポート10000でリッスンするQServerと、プロジェクトのメインクラスにISOMsgオブジェクトがあります。 このメッセージをサーバー(localhost:10000)に送信するにはどうすればよいですか?

ありがとうございます。

答えて

2

メインクラスをまったく使用するのではなく、クライアントシミュレーターを使用して、クライアントシミュレーター展開記述子を、あなたが書いたQBeanを使用するもので置き換えます。programmers guideの7.4-7.6。 MUXを作成するためにコードを変更するだけで(ClientSimulatorコードをベースとして使用することができます)、それを使用してクライアント・シミュレータが要求するようにする必要があります。

ここでは、開始面で要求を送信し、応答を出力するサンプルQBeanがあります。

package stack.examples; 

import org.jpos.iso.ISOMsg; 
import org.jpos.iso.MUX; 
import org.jpos.iso.packager.ISO87APackager; 
import org.jpos.q2.QBeanSupport; 
import org.jpos.q2.iso.QMUX; 
public class SendMessageQBean extends QBeanSupport{ 

    @Override 
    protected void startService() throws Exception { 
     super.startService(); 
     ISOMsg request = new ISOMsg(); 

     request.setMTI("0200"); 

     request.set(2, "16"); 

     request.set(2, "5421287475388412"); 

     request.set(3, "000000"); 

     request.set(4, "400.0"); 

     request.set(7, "0716070815"); 

     request.set(11, "844515"); 

     MUX mux = QMUX.getMUX(cfg.get("dest-mux", "clientsimulator-mux")); 
     log.info("sending request", request); 
     ISOMsg response = mux.request(request, cfg.getInt("timeout", 5000)); 

     log.info("received response", response); 
    } 

} 

これが正しい方向に向いていますか?

また、ここで基本概念を理解するためのメインを書く場合は、ミニマムコード(マルチプレクサ、ロガーなどはありません)があります。

package stack.examples; 

import java.io.IOException; 

import org.jpos.iso.ISOChannel; 
import org.jpos.iso.ISOException; 
import org.jpos.iso.ISOMsg; 
import org.jpos.iso.ISOPackager; 
import org.jpos.iso.channel.XMLChannel; 
import org.jpos.iso.packager.XMLPackager; 

public class JposClient { 

    public static void main(String[] args) throws ISOException, IOException { 
     ISOPackager packager = new XMLPackager(); 
     ISOChannel channel = new XMLChannel("localhost", 10000,packager); 
     channel.connect(); 
     ISOMsg request = new ISOMsg(); 

     request.setMTI("0200"); 

     request.set(2, "16"); 

     request.set(2, "5421287475388412"); 

     request.set(3, "000000"); 

     request.set(4, "400.0"); 

     request.set(7, "0716070815"); 

     request.set(11, "844515"); 

     channel.send(request); 

     ISOMsg response = channel.receive(); 

     response.dump(System.out, "response:"); 

    } 

} 
+0

ご回答ありがとうございます。クライアントシミュレーターはecho_sファイルを要求として受け取ります。echo_sの代わりにQBeanを使用するように指定するにはどうすればよいですか? –

+0

こんにちは、あなた自身のQBeanを書く必要があります。私が書いたのは、準備が整ったサンプルコードです。次に、クライアントシミュレータのxml記述子を、書き込んだクラスを指す記述子で置き換えます。 私が言及している概念を理解するために、私の記事で参照されているプログラマーガイドを読む必要があります。ここでは簡単な答え/ショートカットはありません。質問から、isoメッセージを送信するためのJavaコードを記述したいと思っていました。これは、isoメッセージを作成してサーバーに送信するQBeanの例を書いたからです。あなたがメインを書くことについて話していたので、私はそれを推測しました。 –

+0

HI @DavideTamburrino私は、答えを –

関連する問題