Java ルーチン・クラスの更新

Java™ ルーチンのロジックを変更する場合は、ルーチンのソース・コードを更新し、コードをコンパイル (変換) してから、データベース・サーバーにデプロイされている Java クラスまたは JAR ファイルのバージョンを更新する必要があります。

このタスクについて

データベース・マネージャーが新しいバージョンの Java ルーチンを使用するようにするには、Java クラスの新しいバージョンをメモリーにロードする組み込みプロシージャーを実行する必要があります。

プロシージャー

Java ルーチン・クラスを更新するには:

  1. 新しい Java クラスまたは JAR ファイルをデータベース・サーバーにデプロイします。
  2. fenced ルーチンに対して以下の組み込みプロシージャーを実行する。
      CALL SQLJ.REFRESH_CLASSES()
    CALL SQLJ.REFRESH_CLASSES() ステートメントは、次回のコミットまたはロールバック操作時に新しいクラスをメモリーにロードするようにデータベース・マネージャーに強制します。

    CALL SQLJ.REFRESH_CLASSES() ステートメントは、unfenced ルーチンに影響を与えません。 unfenced ルーチンの場合、新しいバージョンの Java ルーチン・クラスをロードして使用するには、データベース・マネージャーを明示的に停止して再始動する必要があります。

    注: パーティション・データベース・システムでは、新規クラスをロードするには、すべてのデータベース・パーティションで sqlj.refresh_classes() コマンドを発行する必要があります。 これを行うには、db2_all コマンドを使用します。 このコマンドを機能させるには、まずデータベースに接続し、call コマンドを ¥" で囲む必要があります。 そうしない場合、構文エラーが表示されます。 以下に例を示します。
    db2_all "db2 connect to sample; db2 \"call sqlj.refresh_classes();\"" 

結果

上記のステップを実行しない場合、Java ルーチン・クラスを更新した後も、データベース・マネージャーは引き続き前のバージョンのクラスを使用します。