Xây dựng ứng dụng Shopping Cart sử dụng EJB3.1 của JavaEE6 trên server Jboss 7 và WildFly 8, 9, 10
Mục đích: Chủ đề của bài này đề cập đến việc ứng dụng Shopping Cart áp dụng EJB3.1 của JavaEE6 deploy trên JBoss 7 và WildFly 8. 9. 10. Qua nội dung bài này, chúng ta sẽ thấy sự khác biệt khi truy cập JNDI name của Stateful trong JavaEE6 với JavaEE5, và JBoss 7 và WildFly so với JBoss phiên bản trước kia
Yêu cầu
- Nắm vững về EJB3 từ session đến entity (tham khảo tại địa chỉ và các nội dung cơ bản có liên quan đến EJB
- Nắm vững về ngôn ngữ lập trình Java, lập trình thao tác hướng đối tượng
- Nắm vững các khái niệm về MVC và cách áp dụng mô hình này để xây dựng ứng dụng với JavaEE 5
- Nắm vững các khái niệm về MVC2, cách xây dựng ứng dụng mô hình này trên JavaEE6, cách thức chia module và các mô hình business của các chức năng web cơ bản. Đồng thời, đã cài đặt thành công toàn bộ chức năng cơ bản trên mô hình MVC2 + JavaEE6
- Nắm vững các thành phần xây dựng ứng dụng web từ Servlet đến JSP
- Nắm vững khái niệm về DataSource
- Nắm vững khái niệm về POJO hay JavaBeans và các luật cài đặt cho nó
- Nắm vững cách cài đặt và sử dụng stateless session bean và entity bean EJB3.1 của JavaEE6 trên JBoss7 và WildFly
Một số vấn đề về JNDI name của Stateful trong JavaEE6
-
Cú pháp cho tên JNDI được cung cấp cho client để tìm kiếm EJB đối stateful: có sự đổi khác hoàn toàn và cách thức được thể hiện so với stateless session bean, cụ thể như sau
-
- ejb:myapp/myejbjar/distinctname/beanName!interfaceName?stateful
- ejb: từ khóa
- myapp: tên gói ear được đóng gói – bỏ đi phần .ear. Nếu deploy gói ejb – gói jar thì tên này để trống
- myejbjar: tên gói jar được đóng gói cho ejb – bỏ đi phần .jar
- distinctname: cho phép đặt tên không trùng, có hay không có điều được. Nếu không có để chuỗi rỗng
- beanName: tên của bean class
- interfaceName:tên của remote hay local interface
- ?stateful: đây là key word để phân biệt với stateless
-
-
Yêu cầu
- Nắm vững các kiến thức đã nêu trên cùng với các nội dung về JavaEE 6, MVC2, JPA, 2 tiers và 3 tiers, EJB 2.x và EJB 3
- Tools sử dụng ở đây là Netbeans 8.1, 7.4
- JDK 8 update 66 hay JDK 7 update 51 – khuyến cáo sử dụng JDK 7 là ổn định nhất
- Server: JBoss AS 7.1.1 Final, WildFly 8.2.0 Final, WildFly 9.0.2 Final, WildFly 10.0.0 Final
- DBMS: SQL Server 2005, 2008, 2012, 2014
- Thư viện hỗ trợ: JSTL 1.1, 1.2.1, 1.2.2; Driver kết nối database SQLServer (sqljdbc4.jar)
- Cấu hình server JBoss 7 chạy thành công trên netbeans
- Đã hoàn thành thành công bài tại địa chỉ
-
Các bước thực hiện
- Tạo CartSessionBean là loại Stateful và bổ sung Remote
-
- Bổ sung thuộc tính và các business methods cho CartSessionBean như sau
-
- Các thành phần remote và local được phát sinh như sau
-
- Bổ sung giao diện ở web
-
- Thực hiện chức năng Add Item trên AddItemServlet
-
- Cập nhật ProcessServlet để kết nối chức năng Add và View
-
- Tạo view để trình bày kết quả của View Cart và chuẩn bị cho phép remove Item ra khỏi Cart
-
- Cập nhật chức năng Remove với RemoveItemServlet
-
- Thực hiện clean and Build và Deploy ứng dụng. Thực hiện chạy thử. Ở đây, chúng tôi sẽ chạy thử trên wildfly 10.0.0 Final
-
-
- Chức năng Add To Cart
-
-
-
- Click View Your Cart
-
-
-
- Add More Items và click chọn Remove Selected Items
-
-
-
- Click chọn xóa hết
-
-
- Chúng ta đã hoàn thành xong chức năng Shopping Cart sử dụng Stateful của EJB3.1 của JavaEE 6
- Chúng ta sẽ kiểm tra thử trong trường hợp chúng ta sử dụng JNDI name như stateless như các EJB version các đã gọi
-
-
Clean and Build, Deploy và kiểm tra lại
- Mọi việc deploy bình thường, không có gì phát sinh lỗi cả
- Thực hiện chức năng Add To Cart, chúng ta sẽ nhận được trang trắng trên browser
-
Clean and Build, Deploy và kiểm tra lại
-
-
- Ở Server, chúng ta nhận được lỗi như sau
-
Chúc mừng các quí vị đã việc cài đặt ứng dụng Shopping Cart áp dụng EJB3.1 của JavaEE6 sử dụng với JBoss 7 và Wildfly từ 8 đến 10.
Nguồn: Techtalk