私の目的は、RPG 関数から開始された Java から Web サービスを呼び出すことです。(私は知っています、それは長い道のりですが、それは私たちが必要としているものです)
AS400 にフォルダーを作成し/JavaLib
、必要なすべての外部 Jar をコピーしました。
WebServiceCaller.Call()
Web サービスを呼び出す静的メソッドを持つ Java クラスを作成します。RPG プログラムを実行するときはいつでも、RPG がこのメソッドを呼び出すまでは問題ありません。
Java 例外が発生します。
メッセージ 。. . . : Java メソッド (CGD F) の呼び出し時に Java 例外を受け取りました。
原因 。. . . . : プログラム WAL60326/WEBSERCALR の RPG プロシージャー WEBSERCALR は
、シグネチャー「(LwebService.Input;)LwebService.Output;」でメソッド「Call」を呼び出したときに、Java 例外「java.lang.NoClassDefFoundError: javax.xml.rpc.ServiceException」を受け取りました。クラス
「webService.WebServiceCaller」で。
クラスパス変数:
/JavaLib:/home/WAL60326/WebServiceCaller
したがって、RPG と Java クラスは問題なく、CLASSPATH 変数を正しくセットアップしたと思います。他に何を確認する必要があるのか わかりません。
アップデート
したがって、必要なjarファイルjaxrpc.jar
はチェック済みです。それは私の中に存在します/JavaLib
。AS400 で Java のバージョンを確認できましたjava version "1.5.0"
。次の手順に従って、OS が V6R1 であることを確認します。
このJarファイルをロード/動作させるには、私のJavaバージョンが古くなっている可能性がありますか? その可能性さえありますか?
編集
ここに私のソースコードがあります:
Java: WebServiceCaller.Java
package webService;
import java.rmi.RemoteException;
import stocklistGetBids.GetBidsProxy;
public class WebServiceCaller {
public static Output Call(Input in) { // Input Class, is just a way to hold all the input together
Output out = null; // Output Class, holds all the output together
try {
GetBidsProxy getBidsProxy = new GetBidsProxy(); // GetBidsProxy generated by Eclipse
out = new Output(getBidsProxy.getBids(in.LogKey, in.Id));
} catch (RemoteException e) {
e.printStackTrace();
out = new Output("ERR");
}
return out;
}
}
GetBidsProxy クラスは Eclipse によって生成されることに注意してください。Java 側は、私の Windows マシンでうまく動作します。AS400マシンではありません。
RPG: WEBSERCALR.RPGLE
H DFTACTGRP(*NO)
H thread(*serialize)
D WebsercalInput DS
D ReturnCode 7A
D LogKey 20A
D ID 20A
D jString S O CLASS(*JAVA:'java.lang.String')
D jLogKey S O CLASS(*JAVA:'java.lang.String')
D jID S O CLASS(*JAVA:'java.lang.String')
D Input S O CLASS(*JAVA:'webService.Input')
D Output S O CLASS(*JAVA:'webService.Output')
D new_Input PR O EXTPROC(*JAVA:
D 'webService.Input':
D *CONSTRUCTOR)
D LogKey like(jString)
D ID like(jString)
D new_String PR O EXTPROC(*JAVA:
D 'java.lang.String':
D *CONSTRUCTOR)
D bytes 30A CONST VARYING
D Call PR like(Output)
D EXTPROC(*JAVA:
D 'webService.WebServiceCaller':
D 'Call')
D STATIC
D in like(Input)
D getReturnStat PR O EXTPROC(*JAVA:
D 'webService.Output':
D 'getReturnedStatus')
D CLASS(*JAVA:'java.lang.String')
D getBytes PR 65535A VARYING
D EXTPROC(*JAVA:
D 'java.lang.String':
D 'getBytes')
C *ENTRY PLIST
C PARM WebsercalInput
/free
jLogKey = new_String(LogKey);
jID = new_String(ID);
Input = new_Input(jLogKey:jID);
Output = Call(Input);
jString = getReturnStat(Output);
ReturnCode = getBytes(jString);
return;
/End-Free