オブジェクトを永続にしたいことを Java に伝える
ユーザーにパラメーターとして渡されたか、または Java™
メソッドあるいはコンストラクターを呼び出すことによって作成されたか、いずれかの Java
オブジェクトに対して、ユーザーが参照を行なう場合で、かつそのオブジェクトをユーザーのネイティブ・メソッドが戻った後も使用したい場合は、Java
に対してそのオブジェクトを永続または「グローバル」にしたいということを伝える必要があります。これは、RPG
ラッパー・プロシージャー getNewGlobalRef を呼び出し、結果をグローバル変数に保管することによって行ないます。
EVAL globalString = getNewGlobalRef (JNIENV_P : string);
図 1 に、getNewGlobalRef のサンプル・ソース・コードを示します。
図 1. getNewGlobalRef のソース・コード
/*------------------------------------------------------*/
/* getNewGlobalRef */
/*------------------------------------------------------*/
P getNewGlobalRef...
P B EXPORT
D getNewGlobalRef...
D PI O CLASS(*JAVA
D : 'java.lang.Object')
D env * VALUE
D localRef O CLASS(*JAVA
D : 'java.lang.Object')
D VALUE
/free
jniEnv_P = env;
return NewGlobalRef (env : localRef);
/end-free
P getNewGlobalRef...
P E
注: このラッパーを呼び出すには、JNI 環境ポインター (下記の JNI 環境ポインターの入手で説明)
が必要です。