記事
Megumi Kakechi · 2020年10月13日 4m read

Java から InterSystems IRIS のクラスメソッドを呼び出す方法

これはInterSystems FAQ サイトの記事です。

InterSystems IRIS Native API for Java のメソッドに、IRIS クラスメソッドを呼び出す classMethod***() があります。
ObjectScript メソッドおよび関数の呼び出し

こちらを使用することで、InterSystems IRIS Native API for Java から InterSystems IRIS のクラスメソッドを呼び出すことが可能です。
以下、使用方法について簡単なサンプルをご紹介します。

*SampleNativeAPI .java

import java.sql.DriverManager;
import com.intersystems.jdbc.IRISConnection;
import com.intersystems.jdbc.IRIS;
import com.intersystems.jdbc.IRISIterator;

public class SampleNativeAPI {
    protected static int superserverPort = 51773; // YOUR PORT HERE
    protected static String namespace = "USER";
    protected static String username = "_SYSTEM";
    protected static String password = "SYS";

    public static void main(String[] args) {
        try {
            // open connection to InterSystems IRIS instance using connection string
            String url = "jdbc:IRIS://localhost:"+superserverPort+"/"+namespace;
            IRISConnection conn = (IRISConnection) DriverManager.getConnection(url,username,password);

            // create IRIS Native object
            IRIS iris = IRIS.createIRIS(conn);

            System.out.println("[1. Setting and getting a global]");

            // setting and getting a global
            // ObjectScript equivalent: set ^testglobal("1") = 8888
            iris.set(8888,"^testglobal","1");

            // ObjectScript equivalent: set globalValue = $get(^testglobal("1"))
            Integer globalValue = iris.getInteger("^testglobal","1");
            System.out.println("The value of ^testglobal(1) is " + globalValue);
            System.out.println();

            System.out.println("[2. Iterating over a global]");

            // modify global to iterate over
            // ObjectScript equivalent: set ^testglobal("1") = 8888
            // ObjectScript equivalent: set ^testglobal("2") = 9999
            iris.set(8888,"^testglobal","1");
            iris.set(9999,"^testglobal","2");
            
            // iterate over all nodes forwards
            IRISIterator subscriptIter = iris.getIRISIterator("^testglobal");
            System.out.println("walk forwards");
            while (subscriptIter.hasNext()) {
                String subscript = subscriptIter.next();
                System.out.println("subscript="+subscript+", value="+subscriptIter.getValue());
            }
            System.out.println();           
            
            System.out.println("[3. Calling a class method]");

            // calling a class method
            // ObjectScript equivalent: set returnValue = ##class(%Library.Utility).Date(5)
            String returnValue = iris.classMethodString("%Library.Utility","Date",5);
            System.out.println(returnValue);
            System.out.println();

            // close connection and IRIS object
            iris.close();
            conn.close();

        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }

}


InterSystems IRIS Native API for Java の使用方法については、以下のドキュメントをご覧ください。
InterSystems IRIS Native API for Java の使用法

また、Java側から InterSystems IRIS のストアドプロシージャをJDBC経由で呼び出す方法もあります。
詳細は、【FAQ】 Javaから配列のような複数項目のデータを渡すにはどうすれば良いですか をご覧ください。

 

10
0 0 0 37
Log in or sign up to continue