WebSphere Studio Application Developer Version 5 Programming Guide part 45 doc

10 123 0
WebSphere Studio Application Developer Version 5 Programming Guide part 45 doc

Đang tải... (xem toàn văn)

Thông tin tài liệu

414 WebSphere Studio Application Developer Version 5 Programming Guide Figure 12-37 Object-relational mapping editor The Outline view of the mapping editor summarizes our mapping activities (Figure 12-38). Chapter 12. Developing EJB applications 415 Figure 12-38 Outline view of the mapping editor Save the mapping (Ctrl-s) and close the editor. Implementing the session facade The last EJB that we have to build is the facade: the BankEJB stateless session bean (Figure 12-39). Figure 12-39 Business model facade m:m 1:m TransRecord Customer Account Facade Business Model BankEJB 416 WebSphere Studio Application Developer Version 5 Programming Guide Creating the session bean In the J2EE Hierarchy view, select New -> Enterprise Bean from the ItsoProGuideEJB context menu. Check the project name and click Next to advance to the wizard’s first page (Figure 12-40). Figure 12-40 Creating a new session bean (page 1) Select the Session bean option and type BankEJB in the Bean name field. Type itso.ejb.model.facade in the Default package field and click Next to continue (Figure 12-41):  Make sure that you have the correct selections Stateless and Container .  Note that this time around, Application Developer suggests that you create a remote client view instead of a local client view. This is because the environment knows that session beans are normally used to implement the model’s facade and, as such, need remote interfaces as opposed to local ones.  The next wizard’s page is just like the one shown in Figure 12-14 on page 394 and need not be altered as well.  You may as well click Finish to complete the creation of your session bean. Chapter 12. Developing EJB applications 417 Figure 12-41 Creating a new session bean (page 2) If you open the J2EE Hierarchy view, you will be able to see the newly created session bean (Figure 12-42). Figure 12-42 J2EE Hierarchy view of session bean 418 WebSphere Studio Application Developer Version 5 Programming Guide Note that for session beans, just three types are generated by the wizard: the remote home interface, the remote component interface, and the bean class. There is no need to have a key class because session beans are not persistent. Creating an EJB reference An EJB reference is a logical (alternative) name used to locate the home interface of an enterprise bean used by an application. Using a logical name instead of the complete JNDI name allows applications to use hard coded strings to reference other beans and still be easy to maintain. The link between the logical name and the real bean is defined in the EJB deployment descriptor and does not involve changing the code. At deployment, the EJB reference is bound to the enterprise bean's home in the target operational environment. The container makes the application's EJB references available in a JNDI naming context. In Application Developer, EJB references are edited using the EJB deployment descriptor editor (Figure 12-43). Figure 12-43 EJB references As you can see, some references have already been defined for you. Application Developer automatically does that when you create relationships among entity beans. We now have to add references to the BankEJB facade, so that it can access the entity beans without having to use the complete JNDI name. logical name Chapter 12. Developing EJB applications 419 Select the BankEJB bean and click Add . A dialog that lets you select the kind of reference to add is displayed (Figure 12-44). Figure 12-44 Reference types EJBs may reference other EJBs either through a remote or local interface. They may also reference resources and security roles. Since our entity beans are all local to the session bean, select EJB local reference and click Next to continue. The next dialog (Figure 12-46) lets you specify the information of the referenced local EJB:  You do not have to fill in all the fields, because Application Developer knows all the information if only you let it know which EJB you would like to reference.  Locate the Link field, but instead of typing the information, click Browse to open the Link Selection dialog.  Select the Customer bean from the drop-down combo box and click OK .  Click Finish to create the reference. 420 WebSphere Studio Application Developer Version 5 Programming Guide Figure 12-45 Adding an EJB local reference Repeat the same process for the Account and the TransRecord bean. When you are done, the References page of the EJB deployment descriptor should look like Figure 12-46. Figure 12-46 BankEJB bean references Save your changes and close the editor. Chapter 12. Developing EJB applications 421 Editing the session bean To be compatible with our existing control and presentation layers, the improved model layer must expose the very same set of operations that were made public by the previous JavaBean implementation. These operations are as follows:  public BigDecimal deposit(String accountID, BigDecimal amount) throws AccountDoesNotExistException, CreateException  public BigDecimal withdraw(String accountID, BigDecimal amount) throws InsufficientFundsException, AccountDoesNotExistException, CreateException  public BigDecimal transfer(String accountID1, String accountID2, BigDecimal amount) throws InsufficientFundsException, AccountDoesNotExistException, CreateException  public Customer getCustomer(String customerID) throws CustomerDoesNotExistException  public Account getAccount(String accountID) throws AccountDoesNotExistException  public Account[] getAccounts(String customerID) throws CustomerDoesNotExistException  public TransRecord[] getTransactions(String accountID) throws AccountDoesNotExistException Caching the initial context and the EJB homes Open the BankEJBBean class with a Java editor. To implement the methods listed above, we will make use of some private helper methods and properties. Declare the following properties inside the class definition body: private Context context; private AccountLocalHome accountHome; private CustomerLocalHome customerHome; private TransRecordLocalHome transRecordHome; They will hold, respectively, cached references to the initial naming context and the homes of the entity beans. Errors may be reported because of missing import statements. Correct them by selecting Source -> Organize Imports . When asked to inform the complete name of the Context type, select javax.naming.Context. Note: The EJB methods can throw additional exceptions, for example, CreateException is thrown if the create of a TransRecord fails. 422 WebSphere Studio Application Developer Version 5 Programming Guide Now make Application Developer generate getter methods for the three properties. Select Source -> Generate Getter and Setter and then select only the getter methods for all three properties. Change all three methods from public to private, and then perform changes to the code as shown in Figure 12-47. Figure 12-47 BankEJB bean getter methods All three properties will be lazy-initialized when the getters are called for the first time. Add the appropriate imports to the javax.naming.InitialContext and javax.naming.NamingException types. Now enter the remaining three helper methods (Figure 12-48). private Context getContext() throws NamingException { if (context == null) context = new InitialContext(); return context; } private AccountLocalHome getAccountHome() { if (accountHome == null) accountHome = (AccountLocalHome)lookup("ejb/Account")); return accountHome; } private CustomerLocalHome getCustomerHome() { if (customerHome == null) customerHome = (CustomerLocalHome)lookup("ejb/Customer"); return customerHome; } private TransRecordLocalHome getTransRecordLocalHome() { if (transRecordHome == null) transRecordHome = (TransRecordLocalHome)lookup("ejb/TransRecord"); return transRecordHome; } Note: The get methods to retrieve the local homes of the entity beans invoke the lookup helper method with the name of the EJB reference that we defined for the session bean, for example, ejb/Account. Chapter 12. Developing EJB applications 423 Figure 12-48 Beanking bean private helper methods Adding business methods To complete the facade, we have to enter its public methods as shown in Example 12-1. Example 12-1 Business methods of BankEJB session bean public BigDecimal deposit(String accountID, BigDecimal amount) throws AccountDoesNotExistException, CreateException { AccountLocal account = getAccountLocal(accountID); account.deposit(amount); getTransRecordHome().create("C", amount, account); return account.getBalance(); } public BigDecimal withdraw(String accountID, BigDecimal amount) throws InsufficientFundsException, AccountDoesNotExistException, CreateException { AccountLocal account = getAccountLocal(accountID); private Object lookup(String referenceName) { try { return getContext().lookup("java:comp/env/" + referenceName); } catch (NamingException e) { throw new EJBException(e); } } private CustomerLocal getCustomerLocal(String customerID) throws CustomerDoesNotExistException { try { return getCustomerHome().findByPrimaryKey (new CustomerKey(Integer.valueOf(customerID).intValue())); } catch (FinderException e) { throw new CustomerDoesNotExistException(); } } private AccountLocal getAccountLocal(String accountID) throws AccountDoesNotExistException { try { return getAccountHome().findByPrimaryKey(accountID); } catch (FinderException e) { throw new AccountDoesNotExistException(); } } Notes:  The lookup method uses the context with the java:comp/env/ejbreference argument to retrieve a home object.  We do not require a getTransRecordLocal method. Transaction records are only created (using the home) or retrieved from an account through the relationship. . click OK .  Click Finish to create the reference. 420 WebSphere Studio Application Developer Version 5 Programming Guide Figure 12- 45 Adding an EJB local reference Repeat the same process for. is thrown if the create of a TransRecord fails. 422 WebSphere Studio Application Developer Version 5 Programming Guide Now make Application Developer generate getter methods for the three properties Model BankEJB 416 WebSphere Studio Application Developer Version 5 Programming Guide Creating the session bean In the J2EE Hierarchy view, select New -> Enterprise Bean from the ItsoProGuideEJB

Ngày đăng: 03/07/2014, 20:20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan