Interstage Application Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第3部 EJB編> 第28章 Bean共通編> 28.3 トランザクションを使用したアプリケーション

28.3.2 DBMSのトランザクション機能を使用する

 DBMSのトランザクションを使用した場合の、アプリケーションの開発方法について説明します。

■ トランザクション処理の流れ

 以下に、DBMSのトランザクション機能を使用する場合の処理の流れを示します。

image

■ 記述例

 DBMSのトランザクションを使用する場合の記述例を示します。以下の例では、データベースへの接続はejbCreate()メソッドで、データベース接続の解放はejbRemove()メソッドで行っています。

package Tran03;

      import javax.ejb.*;
      import java.rmi.*;
      import java.sql.*;
      import java.util.*;

      public class SampleBean implements SessionBean
      {
          String dbURL = null;
          String driverName = null;
          String userName = null;
          String passWord = null;

          Connection con;

          // receive SessionContext
          public void setSessionContext(SessionContext ctx) throws EJBException {

             /* 環境プロパティの取得を行います                               */
             /* 取得はEnterprise Bean Environment の lookupを使用します      */
             /* この場合、deployment descriptor の環境プロパティが設定されて  */
             /* いる必要があります                                           */

             /* データソースを獲得します */
             try {
                 javax.naming.Context ic = new javax.naming.InitialContext( );
                 dbURL      = (String)ic.lookup("java:comp/env/URLName");
                 driverName = (String)ic.lookup("java:comp/env/DriverName");
                 userName   = (String)ic.lookup("java:comp/env/UserName");
                 passWord   = (String)ic.lookup("java:comp/env/PassWord");
             }
             ・・・

          }

          public void ejbCreate() throws EJBException, CreateException {

              /* DBへの接続を行います */
              Class.forName(driverName);

              con = DriverManager.getConnection(dbURL, userName, passWord);
              con.setAutoCommit(false);
          }

          public String DBAccess(String s) throws EJBException {

              /* データベースへのアクセスを行います */
              ・・・

              /* トランザクションのコミット */
              con.commit();
          }

          public void ejbRemove() throws EJBException {

              /* DBへの接続を解放します */
              con.close();
          }
          ・・・
      }

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2006