您可以使用代表原始 Access Bean 設計的 Java™ Bean Wrapper 或 Copy Helper Access Bean,來建立用戶端應用程式。
這個程序一共有兩個主要步驟:
下列程式碼範例有助於說明這兩個步驟:
EmployeeAccessBean aEmployee = new EmployeeAccessBean()aEmployee.setInit_employeeNo ("100"); aEmployee.setName ("IBM"); aEmployee.setAddress ("1150 Eglinton Ave, Toronto");
如果用戶端程式在呼叫 commitCopyHelper() 之前,在 Access Bean 中設定了 Copy Helper 屬性,且執行了 get 作業,Access Bean 就會傳回快取記憶體內的資料,而不是傳回 Enterprise Bean 中的資料。一般而言,如果屬性常駐在快取記憶體內,存取 Bea 就會從快取記憶體中取得它。 不過,如果您在還沒有設定或擷取的 Copy Helper 欄位上執行 get 作業,就會從 Enterprise Bean 重新整理快取記憶體。
如果您要呼叫傳回列舉表的搜尋器,且您從交易範圍外的用戶端程式來呼叫它,就只會傳回列舉中的前五個結果。 如果要傳回所有結果,您要確定 finder 方法是在交易內呼叫的。如果要執行這個動作,您可以從方法有儲存器管理交易屬性的 Session Bean 方法來呼叫 finder 方法,您也可以在用戶端中建立使用者交易。例如:
// 取得起始環境定義 java.util.Properties p = new java.util.Properties(); p.put(Context.PROVIDER_URL, "IIOP:///"); p.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"); InitialContext initContext = new InitialContext(p); // 查閱交易 userTran = (UserTransaction)initContext.lookup("jta/usertransaction"); userTran.begin(); // 呼叫搜尋器 // 假設已找到 employeeHome,且已有定義 findAll() 的方法 Enumeration enum = employeeHome.findAll(); while (enum.hasMoreElements()) { // 處理列舉 } userTran.commit();