ページの先頭行へ戻る
Symfoware Server V12.1.1 運用ガイド
FUJITSU Software

7.2.4 Java関数の登録

Java関数の登録とJavaアプリケーションの格納手順について説明します。

本手順は、Java関数を作成するたびに行う必要があります。

Java関数の登録

  1. データベースに接続

    psqlコマンド、pgAdminなどを利用して、作成したコンテナに対応するデータベースにインスタンス管理者で接続します。

  2. データベースにファンクションを登録

    データベースにファンクションを登録します。

    Java関数は呼び出し元のセッションとは独立したセッションで動作します。Java関数を呼び出し元のセッションで動作させる場合は、SET文でplextjava.separate_sessionパラメータを"off"にしてから、ファンクションを登録します。

    SET plextjava.separate_session=off

    ファンクションをデータベースへ登録する際に使用するCREATE FUNCTION文について説明します。

    【構文】

    CREATE  [ OR  REPLACE ]  FUNCTION
        name  ( [ IN ] argtype [, ...] )
        [ RETURNS  rettype ]
        AS  'definition'
        LANGUAGE  lang_name
    name

    Java関数名を指定します。

    Java関数名とJavaアプリケーションのメソッド名は、一致している必要はありません。

    スキーマ名を修飾できます。事前にスキーマを作成してください。

    argtype

    Java関数の引数のデータ型を指定します。

    rettype

    Java関数の戻り値のデータ型を指定します。

    definition

    Javaアプリケーションの‘[パッケージ名].[クラス名].[メソッド名]’または‘[クラス名].[メソッド名]’を指定します。

    メソッド名にメソッドの引数を指定しても無効になります。

    lang_name

    “plextjavau”を指定します。

    スキーマ名が「javatest」、Java関数名が「java_addOne」、Javaアプリケーションの[パッケージ名].[クラス名].[メソッド名]が「org.postgresql.plextjava.example.Parameters.addOne」の場合

    db01=# CREATE FUNCTION javatest.java_addOne(INTEGER)
                       RETURNS INTEGER
                       AS 'org.postgresql.plextjava.example.Parameters.addOne'
                       LANGUAGE plextjavau;

    参照

    • データ型の詳細は“アプリケーション開発ガイド”の“Java関数のデータ型とJavaアプリケーションのデータ型の関係”を参照してください。

    • CREATE FUNCTIONコマンドの詳細は“PostgreSQL文書”の“SQLコマンド”の“CREATE FUNCTION”を参照してください。

  3. データベースに接続するユーザーの権限設定

    Javaアプリケーションからデータベースにアクセスするときに使用するユーザーに、アクセス対象となるデータベースオブジェクト(テーブル、列、ビューなど)に対する権限を付与します。権限の付与は、GRANT文を使用してください。

    テーブル「table01」にデータを追加する権限をユーザー名「user01」に付与する場合

    db01=# GRANT INSERT ON table01  to user01;
  4. Java関数の権限設定

    Java関数を呼び出すユーザーにJava関数の実行権限を付与します。権限の付与は、GRANT文を使用してください。

    注意

    Java関数の実行権限は、Java関数がアクセスする資源にアクセスすることを許可されたユーザーに対してのみ、付与してください。その他のユーザーに対してJava関数の実行権限を付与すると、資源のアクセス権限を持たないユーザーがJava関数経由で資源にアクセスすることを、不当に許可してしまいます。

    Java関数が「java_addOne」、ユーザー名が「user04」の場合

    db01=# GRANT EXECUTE ON FUNCTION javatest.java_addOne(INTEGER) to user04;
  5. データベースと切断します。

参照

CREATE FUNCTION文、GRANT文の詳細については“PostgreSQL文書”の“SQLコマンド”を参照してください。

Javaアプリケーションの格納

  1. Javaアプリケーションのコピー

    Javaアプリケーションをjar形式で、以下のディレクトリに手動でコピーします。

    [ドメインルート]/plextjava/[データベース名]