1

Diameter プロトコル、特に CCR-CCA シナリオを使用して、Java Web アプリケーションからいくつかのサーバーにいくつかのメッセージを送信する必要があります。私は jdiameter オープンソース プロジェクトを見てきましたが、単一の要求を送信して応答をログに記録するだけでよいため、私のユースケースはそれほど複雑ではありません (実際には CER-CEA の部分も必要ありません)。だから私は自分のwebappの下で実行されているSeagullを使うことができたと思った. Seagull (Windows 用) をダウンロードしました。基本的には、Seagull からの .bat ファイルを Java 環境から Diameter 環境用に実行しようとしています。

それは私が今までやってきたことです..

1)クライアントを呼び出す簡単なテスト..ここでは、ラッパーは単に作業ディレクトリを設定し、プロセスを開始します

public static void main(String[] args) {
        List<String> cmd=new ArrayList<>();
        cmd.add("cmd.exe");
        cmd.add("/c");
        cmd.add("my_start_client.bat");
        JavaProcessBuilderWrapper wrapper = new JavaProcessBuilderWrapper();
        Process p = wrapper.createProcess(RedirectErrorsTo.STDERR,
                new HashMap<>(), new File("my_working_dir"), cmd);

        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

        StringBuilder output = new StringBuilder();
        String line;
        try {
            while ((line = reader.readLine()) != null) {
                output.append(line);
            }
            System.out.println(line);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

2) Seagull からのクライアントとサーバーの .bat ファイルを変更して、CCR-CCA プロトコルを使用するようにしました。

この構成で Java メインを実行すると、

致命的: キーボード保存構成エラー エラー

私のログに。

3) したがって、ここで述べたように、クライアントの .bat ファイルをバックグラウンド モードで実行するようにさらに変更し、最後に -bg を追加しました。今、私のクライアントのバットはこのように見えます

@ECHO OFF
rem
 "Diameter Start Script Sample"
 "Local env"
 SET RUN_DIR=C:\Program Files\Seagull

 set PATH=%PATH%;%RUN_DIR%
 set LD_LIBRARY_PATH=%RUN_DIR%
 set RUN_DIR=%RUN_DIR%\diameter-env\run

 cd %RUN_DIR%
 cls
 mode 81,25
 echo "Seagull Diameter Client Sample Start"
seagull -conf ..\config\conf.client.xml -dico ..\config\base_ro_3gpp.xml -scen ..\scenario\ccr-cca.ro.client.xml -log ..\logs\ccr-cca.client.log -llevel ETM -bg

 pause

私はいくつかの問題に直面していたので、物事を簡単にするために、少なくともcmdを介して(Javaメソッドを使用せずに)動作させようとしましたが、バックグラウンドモードが混乱していると思います。 bg モードのクライアント、時々私は

致命的: 分岐エラー

しかし、ほとんどの場合、クライアントは単一のメッセージを送信し、コンソールで、ソフトウェアが接続の中止を引き起こしていることを確認し (エラー コード -1)、ログから、チャネルが閉じられていることがわかり、クライアントが返事すら来ません。(NB 今のところ、構成ファイルはそのままにしておきます)

この行動に直面した人はいますか?他の何かが接続を閉じていますか (おそらくファイアウォール)? これを機能させるには、他の構成を提供する必要がありますか?

これが機能するようになったら、Java Web アプリを (既に述べた方法と同様の方法で) 使用して直径呼び出しを行うことはできますか?

事前に感謝します。どんな助けでも大歓迎です。

4

0 に答える 0