技术开发 频道

如何构建 EJB 3.0 应用程序

     添加拦截器

  您需要修改该客户端以调用该新功能:

  本文中提供了您所需要的代码,但是这些代码被注释掉了。取消下面以粗体显示的 OrderTask 声明的注释。

1 public class EJBClientServlet extends javax.servlet.http.HttpServlet implements
2 javax.servlet.Servlet {
3     /* (non-Java-doc)
4      * @see javax.servlet.http.HttpServlet#HttpServlet()
5      */
6     
7     @EJB
8     private CustomerTask customerTask = null;
9     
10     @EJB
11     private OrderTask orderTask = null;
12     
13     public EJBClientServlet() {
14         super();
15     }  
16     
17     @Override
18     public void init() throws ServletException {
19         super.init();
20     }

  取消以下粗体代码的注释。注意,您可以通过 LineItems 访问订单和遍历功能。由于您设置了强获取规则,所以将填写 LineItems。

1 private void displayCustomerAndOrder(int customerId, PrintWriter out) throws
2 CustomerDoesNotExist {
3       Customer customer = customerTask.findCustomer(customerId);
4       out.println("<br>Customer ID => " + customer.getCustomerId());
5       out.println("<br>Customer Name => " + customer.getName());
6           
7       Order order = orderTask.getCurrentOrder(customerId);
8       if(order != null)
9       {
10           out.println("<br>order id => " + order.getOrderId());
11           out.println("<br>status => " + order.getStatus());
12           out.println("<br>Total => " + order.getTotal());
13           Collection<Lineitem> lineItems = order.getLineitemCollection();
14           for(Lineitem lineItem: lineItems)
15           {
16               out.println("<br>****");
17               out.println("<br>Line Item Id => " + lineItem.getLiId());
18               out.println("<br>Quantity => " + lineItem.getQuantity());
19               out.println("<br>Total => " + lineItem.getAmount());
20           }
21
22       }
23       else
24       {
25           out.println("<br>Customer has no open order...");
26       }
27
28 }

  如前所述,将该项目添加到服务器中(图 75)。

  图 75. 再次添加项目

  运行 Servlet(图 76)。

  图 76. 在服务器上运行

  浏览器应显示该客户、当前的订单和所有的行项目(图 77)。

  图 77. 检查结果

  最后,检查该控制台以查看该拦截器的打印语句(图 78)。您会注意到,findCustomer 任务被调用了两次,一次是从客户端,另一次是从订单任务,而 getCurrentOrder 任务被调用了一次。

  图 78. 检查拦截器结果

  结束语

  EJB 3.0 是简化企业中的应用程序开发的主要发展方向。本文向您介绍了如何使用简化的编程模型、新的 Java Persistence API 和拦截器为 WebSphere Application Server V6.1 构建 EJB 3.0 应用程序。通过使用 EJB 3.0 Feature Pack for WebSphere Application Server,您可受益于简化的开发体验、新的持久性模型和一些新功能(如拦截器),同时仍可以将其部署到强健的 WebSphere 平台。

0
相关文章