org.opengion.hayabusa.taglib

## クラス TransactionTag

- java.lang.Object
- - javax.servlet.jsp.tagext.TagSupport
  - - javax.servlet.jsp.tagext.BodyTagSupport
    - - org.opengion.hayabusa.taglib.CommonTagSupport
      - - org.opengion.hayabusa.taglib.TransactionTag

- すべての実装されたインタフェース:
    Serializable, BodyTag, IterationTag, JspTag, Tag, TryCatchFinally

      public class TransactionTag
      extends CommonTagSupport

       コネクションを共有して、トランザクションを実現します。

       通常のタグでは、コネクションプールより、その時々のコネクションを取り出して利用するため、
       タグごとに異なるコネクションで処理されます。
       また、commit や rollback などもそれぞれのタグで行われるため、連続処理時にエラーが
       発生しても、中途半端な状態になります。
       ここでは、各 DBID 単位にコネクションを共有し、このタグの間は、同じオブジェクトを
       commit や、rollback せずに使いまわすようにします。
       これにより、複数タグ間のトランザクションや、異なる DBID 間のトランザクションを
       実現します。

       このタグは、doEndTag() メソッドが正常に呼び出されることで、トランザクションが成立します。
       つまり、途中で、JSP出力が、SKIP_PAGE された場合は、commit もされません。
       これは、データベースエラー以外のエラーでも、トランザクション処理されることを意味します。

  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：<og:transaction > ... </og:transaction >
         ●body：あり(EVAL_BODY_INCLUDE:BODYをインクルードし、{@XXXX} は解析しません)

         ●Tag定義：
           <og:transaction
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           >   ... Body ...
           </og:transaction>

         ●使用例
             <og:transaction >
                 <og:query command="NEW" dbid="SERVER1" >
                     insert into XX01 (aa,bb,cc) values ('AA','BB','CC') />
                 </og:query >
                 <og:query command="NEW" dbid="SERVER2" >
                     update YY02 set aa='AA',bb='BB',cc='CC' where uniq='00001' />
                 </og:query >
             </og:transaction >

  変更履歴:

    5.1.9.0 (2010/08/01) 新規作成

  機能分類
    ＤＢ登録
  バージョン
    5.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK6.0,

- - ### フィールドのサマリー

    - ### クラスから継承されたフィールド org.opengion.hayabusa.taglib.CommonTagSupport

      `BR, BUFFER_MIDDLE, CR`

    - ### クラスから継承されたフィールド javax.servlet.jsp.tagext.BodyTagSupport

      `bodyContent`

    - ### クラスから継承されたフィールド javax.servlet.jsp.tagext.TagSupport

      `id, pageContext`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.BodyTag

      `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.IterationTag

      `EVAL_BODY_AGAIN`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.Tag

      `EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

  - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `TransactionTag()` デフォルトコンストラクター

  - ### メソッドのサマリー

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `void` | `doCatch(Throwable th)` タグの処理中(セッターメソッドを除く)の例外を全て受け取ります。
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `int` | `doStartTag()` Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
    `protected Transaction` | `getTranObj()` Transactionオブジェクトを返します。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `String` | `toString()` このオブジェクトの文字列表現を返します。

    - ### クラスから継承されたメソッド org.opengion.hayabusa.taglib.CommonTagSupport

      `add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doAfterBody, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsg, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, getTagName, getTransaction, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, makeUrl, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseIf, setCaseKey, setCaseNN, setCaseNull, setCaseVal, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setNoTransitionRequest, setObject, setObject, setParameterNames, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useTag, useXssCheck`

    - ### クラスから継承されたメソッド javax.servlet.jsp.tagext.BodyTagSupport

      `doInitBody, getBodyContent, getPreviousOut, release, setBodyContent`

    - ### クラスから継承されたメソッド javax.servlet.jsp.tagext.TagSupport

      `findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue`

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### インタフェースから継承されたメソッド javax.servlet.jsp.tagext.Tag

      `getParent, setPageContext, setParent`

- - ### コンストラクタの詳細

    - #### TransactionTag

          public TransactionTag()

      デフォルトコンストラクター
      変更履歴:

        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### doStartTag

          public int doStartTag()

      Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
      定義:
        `doStartTag` インタフェース内 `Tag`
      オーバーライド:
        `doStartTag` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示( EVAL_BODY_INCLUDE )

    - #### doEndTag

          public int doEndTag()

      Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 TransactionTag の doEndTag() では、途中で、SKIP_PAGE されると、呼ばれません。 これは、データベース以外のタグで、エラー等が発生したことになります。 最後の、endCommit() が呼ばれない限り、トランザクションは commit されずに、 rollback されます。
      定義:
        `doEndTag` インタフェース内 `Tag`
      オーバーライド:
        `doEndTag` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示
      変更履歴:

        6.3.6.1 (2015/08/28) AutoCloseable の close() メソッドに対応。正常時は、commit()。
        6.4.3.3 (2016/03/04) 一般的なタグで、SKIP_PAGE された場合、rollback するようにします。

    - #### doCatch

          public void doCatch(Throwable th)
                       throws Throwable

      タグの処理中(セッターメソッドを除く)の例外を全て受け取ります。 タグの中のボディ部の評価中、または Tag.doStartTag(), Tag.doEndTag(), IterationTag.doAfterBody(), BodyTag.doInitBody() のいずれもの メソッドの中で、Throwableが投げられたときに呼び出されます。 このメソッドはセッターメソッドの中でThrowableが起きた場合は呼び出されません。
      定義:
        `doCatch` インタフェース内 `TryCatchFinally`
      オーバーライド:
        `doCatch` クラス内 `CommonTagSupport`
      パラメータ:
        `th` - このタグを通過してきたThrowableな例外
      例外:
        `Throwable`
      変更履歴:

        6.3.6.1 (2015/08/28) AutoCloseable の close() メソッドに対応。異常時は、rollback()。

    - #### release2

          protected void release2()

      タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
      オーバーライド:
        `release2` クラス内 `CommonTagSupport`
      変更履歴:

        6.3.6.1 (2015/08/28) AutoCloseable の close() メソッドに対応。終了時は、finish()。

    - #### getTranObj

          protected Transaction getTranObj()

      Transactionオブジェクトを返します。
      戻り値:
        Transactionオブジェクト
      変更履歴:

        6.3.6.1 (2015/08/28) Transactionオブジェクトの取得方法変更。

    - #### toString

          public String toString()

      このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
      オーバーライド:
        `toString` クラス内 `CommonTagSupport`
      戻り値:
        このクラスの文字列表現
      このメソッドは、nullを返しません

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.