並非所有的儲存器交易設定,都適用於所有的 Enterprise Bean。有的方法並不適用於特定的交易設定和 Bean。這些規則已經根據 EJB 1.1 和 EJB 2.x 規格,在「新增儲存器交易」精靈中加以實作。
如果要將儲存器交易新增至 Enterprise Bean 中,請執行下列動作:
- 在 J2EE 視景的「專案瀏覽器」視圖中,用滑鼠右鍵按一下 EJB 專案的部署描述子,再選取來開啟部署描述子編輯器。
- 在編輯器的組合頁面中,按一下「儲存器交易」區段中的新增。
- 從找到的 Bean 清單中,從找到的 Bean 清單中選取一或多個 Enterprise Bean。
- 從以下選項選取儲存器交易類型:
- 不支援 - 引導儲存器在沒有交易環境定義的情況下呼叫 Bean 方法。如果用戶端從交易環境定義內呼叫 Bean 方法,在呼叫 Enterprise Bean 實例的方法之前,儲存器會暫停交易和現行執行緒之間的關聯。
之後,在方法呼叫傳回時,儲存器會回復暫停的關聯。
暫停的交易環境定義不會傳給這個 Bean 方法所用的任何 Enterprise Bean 物件或資源。
- 支援 - 如果用戶端在交易內呼叫 Bean 方法,就引導儲存器在交易環境定義內呼叫 Bean 方法。如果用戶端在沒有交易環境定義的情況下呼叫 Bean 方法,儲存器也會在沒有交易環境定義的情況下呼叫 Bean 方法。
交易環境定義會傳給這個 Bean 方法所用的任何 Enterprise Bean 物件或資源。
- 必要 - 引導儲存器在交易環境定義內呼叫 Bean 方法。如果用戶端從交易環境定義內呼叫 Bean 方法,儲存器就會在用戶端交易環境定義內呼叫 Bean 方法。
如果用戶端在交易環境定義之外呼叫 Bean 方法,儲存器會建立新的交易環境定義,並從這個交易環境定義內呼叫 Bean 方法。
交易環境定義會傳給這個 Bean 方法所用的任何 Enterprise Bean 物件或資源。
- 需要新值 - 引導儲存器一律在新交易環境定義內呼叫 Bean 方法,不論是在交易環境定義內或外呼叫方法都是如此。交易環境定義會傳給這個 Bean 方法所用的任何 Enterprise Bean 物件或資源。
- 強制 - 引導儲存器一律在用戶端相關聯的交易環境定義內呼叫 Bean 方法。如果用戶端試圖在沒有交易環境定義的情況下呼叫 Bean 方法,儲存器會擲出 javax.jts.TransactiononRequiredException 異常狀況給用戶端。交易環境定義會傳給 Enterprise Bean 方法所存取的任何 EJB 物件或資源。存取這些 Entity Bean 的 EJB 用戶端必須在現有的交易內執行這個動作。
對其他 Enterprise Bean 而言,Enterprise Bean 或 Bean 方法必須實作「Bean 管理」這個值或使用「必要」或「需要新值」這個值。如果是非 Enterprise Bean EJB 用戶端,用戶端必須利用 javax.transaction.UserTransaction 介面來呼叫交易。
- 絕不 - 引導儲存器在沒有交易環境定義的情況下呼叫 Bean 方法。如果用戶端從交易環境定義內呼叫 Bean 方法,儲存器會擲出 java.rmi.RemoteException 異常狀況。如果用戶端從交易環境定義外呼叫 Bean 方法,儲存器的行為會如同設定了「不支援」交易屬性。
用戶端必須在沒有交易環境定義的情況下呼叫方法
- 從清單中選取一或多個方法元素。
- 按一下完成。
這時會在「儲存器交易」區段中新增和顯示這項儲存器交易,區段中會依儲存器交易類型來列出這些儲存器交易。
定義好儲存器交易之後,您可以利用部署描述子編輯器來使用它們。
- 如果要編輯儲存器交易,請從「儲存器交易」清單中選取它,再按一下編輯。
- 如果要刪除儲存器交易,請從清單中選取它,再按一下移除。
- 如果要將相同儲存器交易類型的多個儲存器交易組合在單一儲存器交易定義中,請按一下組合。