SCBCD

SCBCD即Sun 認證的商務組件開發人員 (Sun Certified Business Component Developer)。該認證面向負責設計、開發、測試、部署和集成EJB套用的Enterprise JavaBeans (EJB)技術商務組件開發人員。參加認證之前,考生必須是Sun認證程式設計師(SCJP)(任何版本)。

考試目標,EJB 3.0概述,一般EJB 3.0企業Bean知識,EJB 3.0會話Bean組件約定和生命周期,EJB 3.0訊息驅動Bean組件約定,事務,概述,容器管理的事務,事務屬性基礎,事務屬性的限制,角色和職責,

考試目標



EJB 3.0概述

*了解Enterprise JavaBeans技術EJB規範3.0版的使用、優點和特點。
*了解所有EJB 3.0容器必須為開發人員提供的API。
*區分正確和錯誤的語句或EJB開發語句限定樣例。
*將七種EJB角色對應到角色責任的相應描述。
*描述企業Bean的打包和部署要求。
*描述標註和部署描述符的作用及使用,包括兩種機制如何互動、如何處理重載以及這些機制在類、方法和欄位級別上的功能。

一般EJB 3.0企業Bean知識

*識別與所有3.0企業Bean實例生命周期有關的正確或錯誤語句或示例,包括@PostConstruct和@PreDestroy回調方法的使用。
*識別與攔截器有關的正確和錯誤語句或示例,包括實現攔截器類、攔截器實例的生命周期、@AroundInvoke方法、調用順序、異常處理、生命周期回調方法、默認和方法級攔截器以及在部署描述符中指定攔截器。
*識別有關企業Bean如何使用JNDI或依賴性注入來聲明對外部資源依賴性的正確或錯誤語句或示例,包括使用JNDI的一般規則、標註和/或部署描述符、EJB引用、連線工廠、資源環境條目和持久上下文及持久單元引用。
*識別與定時器服務相關的正確和錯誤語句或示例,包括Bean提供者的視圖和責任、TimerService、定時器和TimerHandle接口,以及@Timeout回調方法。
*識別與容器提供給3.0會話Bean和3.0訊息驅動Bean的EJB上下文對象有關的正確和錯誤語句或示例,包括安全性、事務、定時器和上下文可以提供的查找服務。
*識別與EJB 3.0 / EJB 2.x互操作性有關的正確和錯誤語句或示例,包括如何調整EJB 3.0 Bean以便與那些為EJB2.x API編寫的客戶端結合使用,以及如何從為EJB 3.0 API編寫的Bean訪問為EJB 2.x API編寫的Bean。

EJB 3.0會話Bean組件約定和生命周期

*識別用於比較有狀態和無狀態會話Bean的作用及使用的正確和錯誤語句或示例。
*識別與會話Bean的遠程和本地業務接口有關的正確和錯誤語句或示例。
*編寫有狀態和無狀態會話Bean的類代碼。
*識別與有狀態會話Bean生命周期有關的正確和錯誤語句或示例,包括@PrePassivate和@PostActivate生命周期回調方法以及@Remove方法。
*給定一個有狀態或無狀態會話Bean類的方法列表,確定下列每種方法可以執行哪些操作:SessionContext接口方法、UserTransaction方法、訪問java:comp/env環境命名上下文、資源管理訪問和其它企業Bean訪問。
*識別有關將會話Bean實施成為Web服務端點的正確和錯誤語句或示例,包括編寫Web服務端點接口的規則以及@WebService及@WebMethod標註的使用。
*識別與會話Bean的客戶端視圖有關的正確和錯誤語句或示例,包括會話對象生命周期的客戶端視圖、獲得及使用會話對象以及會話對象標識。

EJB 3.0訊息驅動Bean組件約定

*開發用於實現訊息驅動Bean類的代碼。
*識別與JMS訊息驅動Bean必須實現的接口和方法以及所需元數據有關的正確和錯誤語句或示例。
*描述JMS訊息驅動Bean的使用和行為,包括並發訊息處理、訊息重新交付和訊息確認。
*識別與訊息驅動Bean的客戶端視圖有關的正確和錯誤語句或示例。

事務

概述

事務性系統確保一個工作單元要么全部完成,要么全部回滾。EJB ?>體系結構支持分散式事務,但不支持嵌套事務。在嵌套事務中,當一個事務目前處於活動狀態的時候,仍然可以啟動新的事務。
在 EJB 開發中,Bean Provider 可以選擇使用企業 bean 代碼中的程式式事務劃分(BMT 劃分),或者由 EJB 容器自動執行的聲明性事務劃分(CMT 劃分)。
會話 bean 或者 MDB 可以使用 BMT 或者 CMT,但不能同時使用它們。實體 bean 只能使用 CMT。

容器管理的事務

對於 CMT bean,EJB 容器負責管理事務邊界,當用戶在企業 bean 上調用某一方法,新的方法可以在調用者的事務中運行、啟動新的事務或者在不使用事務的情況下運行。這種情況下,EJB 容器採取的動作由方法定義的事務屬性決定。

事務屬性基礎

無論是實體 bean 還是會話 bean,業務方法中都必須給出事務屬性。但是不能對會話 bean 的 home 接口方法規定事務屬性,因為這些方法被認為不屬於客戶機事務。但是這一規則不適用於實體 bean,因為它們的 home 接口方法(如 create()和 remove())都涉及到資料庫操作,因而都是事務性的。對於 MDB,只能對 bean 的 onMessage()方法規定事務屬性,因為沒有客戶機視圖。
6 種可能的事務屬性是:Required、RequiresNew、NotSupported、Supports、Mandatory和 Never。我們來看看這些屬性對方法的事務性行為的影響:
Required: 如果 EJB 客戶機沒有關聯的事務,那么容器會自動為該 bean 方法開始一個新的事務,否則使用已有的客戶機事務。
RequiresNew:容器總是在調用 bean 方法之前創建新的事務。
NotSupported:調用客戶機的事務性上下文不能推廣到企業 bean。相反,客戶機事務被掛起,bean 方法將在未定義的事務上下文中運行。
Supports:如果客戶機與一個事務上下文關聯,那么 bean 是在同一個事務上下文中運行,否則 bean 方法將在未指定的事務上下文中運行。
Mandatory:如果調用 bean 方法的遠程客戶機沒有有意義的事務上下文,容器拋出 TransactionRequiredException異常。如果調用 bean 方法的本地客戶機沒有有意義的事務上下文,容器拋出 TransactionRequiredLocalException異常。否則在客戶機的事務上下文中運行。
Never:如果調用 bean 方法的遠程客戶機擁有有意義的事務上下文,那么容器將拋出 java.rmi.RemoteException異常。如果調用 bean 方法的本地客戶機擁有有意義的事務上下文,那么容器將拋出 javax.ejb.EJBException異常。否則,bean 方法在未指定的事務上下文中運行。

事務屬性的限制

對於 MDB,只能使用 Required和 NotSupported事務屬性,因為它們沒有調用客戶機,所以不能套用其他屬性。
如果企業 bean 實現了 SessionSynchronization接口,只允許使用 Required、RequiresNew或 Mandatory事務屬性,以確保該方法參與到事務中。對於使用 EJB 2.0 CMP 的可移植實體 bean,同樣必須使用 Required、 RequiresNew或者 Mandatory事務屬性。
CMT bean 可以對 EJBContext使用 setRollbackOnly()方法標記事務回滾,使用 getRollbackOnly()方法測試是否將事務標記為回滾。為了確保這些操作正常工作,調用它們的方法應該是事務性的,因此必須是 Required、RequiresNew或者 Mandatory。

角色和職責

Bean Provider 必須使用 <transaction-type>元素聲明 bean 是使用 CMT 劃分,還是使用 BMT 劃分。Application Assembler 使用 <container-transaction>元素定義事務屬性。Deployer 負責確保為 CMT 劃分的企業 bean 方法分配事務屬性。
在下面的例子中,CustomerEJB所有的方法都被賦予 Required的事務屬性,只有 addBonus()方法的事務屬性是 Mandatory:
<enterprise-beans> <session> <ejb-name>CustomerEJB</ejb-name> ... <transaction-type>Container</transaction-type> </session> </enterprise-beans> <assembly-descriptor> <container-transaction> <method> <ejb-name>CustomerEJB</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> <container-transaction> <method> <ejb-name>CustomerEJB</ejb-name> <method-name>addBonus</method-name> </method> <trans-attribute>Mandatory</trans-attribute> </container-transaction> </assembly-descriptor>
MDB 不能拋出應用程式異常,因為它沒有客戶機視圖而且是異步運行的。
如果方法被重載,可以使用 <method-params>和 <method-param>元素確定適當的方法。
比如,如果希望為 addBonus(int)方法規定不同的事務屬性,可以像下面這樣指定該方法元素:
<method> <ejb-name>CustomerEJB</ejb-name> <method-name>addBonus</method-name> <method-params> <method-param> int </method-param> </method-params> </method>

相關詞條

熱門詞條

聯絡我們