Javaクラスのモジュールを実行することはできますか?

※Cachéは、バージョン2018.1より前のバージョンではJavaゲートウェイ機能が利用できません。
 (直接Javaのクラスを呼び出すことはできません)


Javaゲートウェイを使用することで、Javaクラスのモジュールを実行することが可能です。
詳細は、以下のドキュメントをご覧ください。
Java ゲートウェイについて【IRIS】

Java ゲートウェイについて

例えば、以下のような Java を使用するサンプルをご案内します。

------ test.java ------
public class test {
  public int num = 1234;
  public static String test1() { return "abc"; }     // <-- test1 は文字列を返す
  public static int test2(test obj[]) { return obj.length; }  // <-- test2 はオブジェクトの数を返す
}
-----------------------


【テスト手順】

1.IRISまたはEnsemble でスタジオを起動し、[ツール] > [アドイン] > [Java ゲートウェイウィザード] でダイアログを起動します。
 Java ゲートウェイウィザードについては、以下のドキュメントをご覧ください。
 Java ゲートウェイウィザードについて【IRIS】

 Java ゲートウェイウィザードについて

2.[クラス名] をクリックし、Javaクラスのフルパスを入力します。

3.Java ゲートウェイサーバの [ホスト] および [ポート] を入力し、[完了] をクリックします。

4.User.test.cls が自動生成されます。

5.以下のように実行します(62973ポートで Javaゲートウェイを起動している場合※)。

  // 接続
  set gw = ##class(%Net.Remote.Gateway).%New()
  set cp=##class(%ListOfDataTypes).%New()
  do cp.Insert("c:\temp\")      // test.class の存在ディレクトリ
  do gw.%Connect("127.0.0.1",62973,,,cp)

  // 【テスト①】test1 を実行
  set cls = ##class(User.test).%New(gw)
  w cls.test1(gw),!   // 文字列 "abc" が返る

  // 【テスト②】test2 を実行
  // User.test インスタンスを含んだ %ListOfObjects作成
  set xx=##class(%ListOfObjects).%New()
  set clsA = ##class(User.test).%New(gw)
  set clsB = ##class(User.test).%New(gw)
  do xx.Insert(clsA)
  do xx.Insert(clsB)

  set cls = ##class(User.test).%New(gw)
  w cls.test2(gw,xx)  // 【テスト②】2インスタンス渡したので 2 が返る


※管理ポータルのInteroperabilityメニュー(Ensembleメニュー)によるJavaゲートウェイサービスの設定方法:
 対象プロダクションのサービスにEnsLib.JavaGateway.Serviceを追加し、「有効」に設定します。
 プロダクション構成アイテムをコンパイルして更新した場合は、一旦「無効」にしてから「有効」にすると更新が反映されます。
 詳細は以下のドキュメントをご覧ください。
 プロダクションでの Java ゲートウェイの使用方法について【IRIS】

 プロダクションでの Java ゲートウェイの使用方法について

※管理ポータル:[システム管理] > [構成] > [接続性] > [JDBC ゲートウェイ・サーバ]


 


該当する製品: Caché, Ensemble, HealthShare/Caché Based, IRIS Data Platform, HealthShare/IRIS Based, IRIS for Health
関連トピック:
添付ファイル:

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る