WebSphere Application Server - Express, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

Bean 管理パーシスタンス・エンティティー Bean、セッション Bean、およびサーブレットでの SQLJ (Structured Query Language in Java) の使用

JDBC アプリケーションをアプリケーション・サーバー内にデプロイ可能な SQJL アプリケーションに変換するには、 DB2 SQJL 変換プログラムを実行します。

このタスクについて

この項では、 Bean 管理パーシスタンス (BMP) のエンティティー Bean、セッション Bean、またはサーブレットから構成される JDBC アプリケーションを SQLJ アプリケーションに変換する方法について説明します。 また、WebSphere Application Server での SQLJ アプリケーションのデプロイ方法についても説明します。

正しい変換を行うには、以下のステップを正確に、正しい順序で実行してください。

プロシージャー

  1. .java ファイルのバックアップ・コピーを作成します。 例えば MyServlet.java というファイルであれば、 MyServlet.java のコピー MyServlet.java.bkup を作成します。
  2. .java ファイルの名前を、.sqlj という拡張子が付いたファイル名に変更します。 例えば、アプリケーションが MyServlet.java という名前のサーブレットであれば、 MyServlet.java から MyServlet.sqlj へと名前変更します。

    これで、次のステップで sqlj ツールを実行した際に作成される .java ファイルに 古い .java ファイルと同じ名前が付けられるようになり 、SQLJ テクノロジーへのシームレスな移行が可能になります。

  3. .sqlj ファイルを編集して、JDBC 構文を SQLJ 構文に変換する。 WebSphere Application Server で SQLJ を使用する際に、 WebSphere Application Server の接続管理を正しく機能させるには、 正しい接続コンテキストを指定しなければなりません。

    例えば、以下の JDBC 操作を変換するとします。

                             Connection con = dataSource.getConnection();
                            Statement stmt = con.createStatement();
                stmt.execute("INSERT INTO users VALUES (1, 'user1')");
                             con.commit();
    
    変換後の SQLJ は以下のようになります。
                              // At the top of the file and just below the import statements, define Connection_Context
                              #sql context Connection_context;
                  .
                  .
                              Connection con = dataSource.getConnection();
                  .
                  .
                              Connection_context ctx1 = new Connection_context(con);
                  .
                  .
                              #sql [ctx1] {INSERT INTO users VALUES (1, 'user1')};
                  .
                  . 
                              con.commit();
                              ctx1.close();
    
  4. DB2 SQLJ 変換プログラムを実行します。 このツールは、 後で処理を行う際に使用する .ser プロファイルのほかに、 .sqlj ファイルの .java 版を作成します。 SQLJ 変換プログラム・ツールについて詳しくは、DB2 の資料を参照してください。
  5. EJB jar をパッケージして、通常の方法でこれをデプロイします。 デプロイメント後、直列化プロファイルは、それぞれの EJB .jar ファイルごとに 1 つ存在します。 (このプロファイルは EJB .jar ファイルの中にあります。直列化プロファイルのファイル名の 1 つの例として、MyBMPBeanProfile.ser があります。)
  6. db2sqljcustomize ツールを実行して、各 EJB .jar ファイルに対応する .ser ファイルをカスタマイズします。 直列化プロファイルに対して DB2 SQLJ カスタマイザーを実行する場合、 実行時に使用されるデータベースに静的 SQL を作成してください。 このカスタマイズ・フェーズでは静的 SQL を含むデータベース・パッケージを、それぞれの分離レベルごとに 1 つずつ、 計 4 つ作成します。
    オプションで、SQLJ カスタマイザー・ツールの使用により、アプリケーションのデータ・ソース接続のコンテキストのキャッシングが可能になり、アプリケーションのパフォーマンス向上につながります。
    • DB2 V8.1 修正パッケージ 6 では、新規キャッシング・オプションとして、db2sqljcustomize ツールと併用の db2optimize を提供しています。アプリケーションがデフォルト・コンテキストではなく、明示接続コンテキストを使用する場合に、このオプションを実行することができます。
    • 以下のサンプル・コードは、実行するオプションの正しい構文を表します。
      sqlj -db2optimize SQLJTransactionTest.sqlj
      db2sqljcustomize -url jdbc:db2://localhost:50000/jtest -user dbuser1 -password dbpwd1
      SQLJTransactionTest_SJProfile0.ser
    • トランザクション境界を介して接続をキャッシュするアプリケーションまたは BMP Bean のコンテキスト・キャッシングを使用可能にする場合は、共有可能な接続を使用することはできません。 db2optimize オプションを呼び出す場合、取得/使用/クローズ・パターンの接続方法を使用する必要があります。 使用しない場合は、オブジェクトが閉じたという例外が発生します。以下のコードは、コンテキスト・キャッシングの間違った接続方法を示す例です。
       utx.begin(); 
           cons =ds.getConnection( 
           request.getParameter("db.user"), 
           request.getParameter("db.password"));         
               cmctx1 = new CM_context(cons);                       
               #sql [cmctx1] {DELETE FROM cmtest WHERE id=1};     
       utx.commit(); 
             //The next statement verifies the result: 
               #sql [cmctx1] cursor1 = {SELECT id, name FROM cmtest WHERE id=1}; 
      この場合、 Select ステートメントによって、オブジェクトが閉じたという例外を示します。 例外が発生しないように、トランザクションをコミットする前に、接続を閉じます。 それから、新規接続および新規コンテキストを取得し、「Select」ステートメントを実行します。
  7. データベースを構成します。
  8. EJB jar を .ser ファイルで更新する。
  9. EJB JAR およびサーブレットを、 .ser ファイルとともに .ear ファイルにパッケージします。
  10. アプリケーションを通常の方法でインストールします。



関連概念
組み込み SQLJ (Structured Query Language in Java) サポート
データ・アクセスに関する例外
関連タスク
Bean へのアクセス・インテント・ポリシーの適用
データ・アクセス・アプリケーションの開発
関連資料
Data Access Bean のタイプ
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 11:31:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/tdat_sqljbmp.html