1

IseriesV5r4で実行されているRPGからJavaプログラムを呼び出すことを検討しています。リモートプログラムは、Websphereで実行されるWebサービスクライアント(郵便番号ルックアップを実行)です。

理想的にはRPGから直接呼びたいですか?それは可能ですか?または、iSeriesで実行するJavaプログラムを作成し、RMIなどを使用してリモートJavaプログラムを呼び出す必要がありますか。

外部のWebサービスを直接呼び出すことには熱心ではありません。これは、他の世界から直接iSeriesへのパスを開くことを意味するためです。

私はRPGプログラマーではありません。ただ、私たちの人たちを正しい方向に向けるための何か、またはJavaプログラムをRPGの人々にとってより使いやすいものにするために必要なものを探しています。

ありがとう、スコット

4

2 に答える 2

9

プログラムはリモートサーバー上で実行されているため、RPGから直接呼び出すことはできません。これがWebサービスであるとすると、iSeriesで実行するJavaプログラムを作成し、RPG内からそのJavaプログラムを呼び出します。今日では、RPGはJavaと直接インターフェースできます。クラスを宣言し、メソッド呼び出しのプロトタイプを作成するには、いくつかのD仕様を作成する必要があります。次の例では、パッケージ'tools'にServiceCallerというJavaクラスが存在すると仮定します。これには、3つの文字フィールドを受け入れて整数を返すgetServiceReplyという単一のメソッドがあります。

*Javaクラスをローカルで定義します。                                       
DServiceCaller SO CLASS(* JAVA:'tools.ServiceCaller')

 *クラスコンストラクタ。パラメータはありません。                                   
DnewServiceCaller PR O EXTPROC(* JAVA:                   
D'tools.ServiceCaller':          
D *コンストラクター)                  
D CLASS(* JAVA:'tools.ServiceCaller')

 *GetServiceReply。
 * public int getServiceReply(byte [] parm1、byte [] parm2、byte [] parm3)
DgetServiceReply PR 10I 0 EXTPROC(* JAVA:
D'tools.ServiceCaller':
D'getServiceReply')
D Parm1 400A CONST
D Parm2 400A CONST
D Parm3 400A CONST

RPGの計算仕様は、次の自由形式の例のようになります。

/自由
  ServiceCaller = newServiceCaller();
  iReply = getServiceReply(ServiceCaller:'Parm1':'Parm2':'Parm3');
/ end-free

Javaコード内のgetServiceReplyメソッド内で、これらのバイト配列を次のような文字列に変換します。

sParm1 = new String(parm1);
sParm2 = new String(parm2);
sParm3 = new String(parm3);

確かに、これは過度に単純化された例であり、アプリケーションのニーズはわずかに異なります。Webサービスが応答しない場合に備えて、エラー処理コードを追加することをお勧めします。クラスでゲッターとセッターを使用することもできます。それはすべて、アプリケーションのニーズとリモートWebサービスの要件によって異なります。

RPGタイプからJavaタイプへの注意事項:

RPGタイプJavaタイプ
10I 0 int
 3I0バイト
 5I0ショート
20I0長い
  Nブール
  バイト[]

特に野心的な場合は、RPG内からネイティブJavaHTTPクラスを呼び出すことができます。しかし、RPGと通信するために特別に作成された中間として機能するカスタムJavaプログラムの方が、より簡単な方法であることがわかりました。RPGはJavaと通信できますが、JavaがJavaと通信するほどきれいではありません。

RPGからJavaを呼び出すための追加情報は、ILE RPGプログラマー・ガイドにあります。V5R4バージョンはここで見つけることができます:http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/books/sc092507.pdf

于 2009-08-17T13:50:59.707 に答える
3

は Web サービスであるため、Scott Klement の HTTP API を使用する別の解決策があります。彼の Web サイトhttp://www.scottklement.com/httpapi/で入手できます。

私にとっての大きな利点の 1 つは、これが完全に RPG であり、少し遅くなる Java を使用していないことです。私は Web サービスが Java でどのように機能するかについてあまり詳しくありませんが、すべての XML を作成する必要はなく、自動的に作成されるようです。HTTP API を使用すると、自分で行う必要があります。

また、Scott Klement の Web サイトには他にも便利な機能がいくつかあります。便利なツールがいくつかある別のサイトはhttp://www.think400.dk/downloads.htmです。

于 2009-08-19T14:07:02.953 に答える