Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
2,44 MB
Nội dung
Hình2.3:sơ đồ tầng Web tier Business tier: Business tier là một lớp logic dùng để thực hiện việc xử lý của hệ thống J2EE server. Hình2.4: sơ đồ tầng Business tier. Hình vẽ minh họa cho ta thấy 1 Enterprise Bean có thể nhận dữ liệu từ client, xử lý nó (nếu cần thiết) và gửi nó đến EIS tier (Enterprise Information System tier) để lưu trữ. 1 Enterprise Bean cũng có thể nhận dữ liệu từ EIS tier, xử lý dữ liệu đó (nếu cần thiết) và sau đó là gửi nó trở lại các chương trình client. Có 3 loại Enterprise Bean: session bean, entity bean, message-driven bean. Session Bean thể hiện cho một phiên dao dịch với client, với 1 client sẽ có 1 instance của session bean tương ứng, và instance này có thể lưu giữ các thông tin của client đó. Tuy nhiên, khi phiên giao dịch kết thúc (client kết thúc việc thực thi), các instance này cũng sẽ bị hủy. Ngược lại với session bean, entity bean có thể lưu giữ lâu dài các thông tin về client. Còn message-driven bean là sự kết hợp giữa sesssion bean và JMS message listener. Enterprise Information System tier (EIS tier): Lớp này thực hiện việc lưu trữ dữ liệu cho hệ thống J2EE, bao gồm cả các interface để giao tiếp với các Database khác nhau, và giữa các OS khác nhau trong việc quản lý và lưu trữ file… Kiến trúc tổng thể của một hệ thống J2EE: EJB container (Enterprise JavaBean container) quản lý việc thực thi của tất cả các enterprise bean cho một ứng dụng J2EE. Các enterprise bean và container của nó đều được chạy trên J2EE server. Web container quản lý và thực thi của tất cả các trang JSP và các servlet cho một ứng dụng J2EE. Các web component và container của nó đều được chạy trên J2EE server. Application client container quản lý và thực thi của tất cả các thành phần application client cho một ứng dụng J2EE. Các application client và container của nó đều được thực thi trên máy client. Applet container chính là web browser (có các Java Plug-in) chạy trên máy client. Hình 2.5:kiến trúc tổng thể của hệ thống J2EE. 2.2. Giới thiệu dịch vụ JNDI (Java Naming and Directory Interface) JNDI là dịch vụ đăng ký và truy tìm tên đối tượng chuẩn. Enterprise JavaBeans dựa vào JNDI để truy tìm các thành phần phân tán thông qua mạng. JNDI là một công nghệ chính yếu được yêu cầu cho mã khách kết nối đến một thành phần EJB. Cách lấy một tham chiếu tới một home object thông qua dịch vụ JNDI được trình bày ở hình 2.6 như sau: Hình 2.6: lấy một tham chiếu đến một home object (Acquiring a reference to a home object) Hệ thống JNDI Là một service trong hệ thống J2EE phục vụ cho việc đặt tên của các Object, trong đó 1 object ta có thể xem như là module, một service để thực hiện một chức năng nào đó. Với 1 object có thể có nhiều tên được tham khảo đến. Thông qua JNDI, client hoặc EJB có thể truy xuất đến object thông qua tên mà không cần quan tâm object đó nằm ở đâu trên mạng (khái niệm tương tự như việc đánh tên cho địa chỉ IP). Hình 2.7: sơ đồ client truy xuất đốI tượng thông qua tên Một hệ thống JNDI bao gồm 3 phần chính yếu sau: lookup services, service providers, và clients. Trong đó lookup services đóng vai trò trung tâm, nó là cầu nối giữa service providers và clients. Lookup services có nhiệm vụ quản lý các dịch vụ mà service providers cung cấp, service providers cung cấp các dịch vụ cho hệ thống JNDI, còn clients là người sử dụng các dịch vụ, sẽ kết hợp các dịch vụ với nhau để thực hiện một công việc nào đó. Khi một service provider “muốn” đưa ra một dịch vụ nào đó thì nó phải đăng ký dịch vụ đó với lookup services. Khi một client muốn dùng một dịch vụ nào đó của hệ thống thì nó sẽ phải “đề xuất yêu cầu” với lookup service, và các dịch vụ của hệ thống có thể phục vụ cho client khi được lookup service cho phép. Quá trình đăng ký một dịch vụ của service provider với lookup service được thực hiện như sau (quá trình discovery): đầu tiên service proveider cần thông báo cho lookup service biết ý định của mình bằng cách gửi broadcast một presence announcement packet (dùng một well-known port). Khi loopkup service nhận được một presence announcement packet (một packet có tính chất thông báo), nó sẽ mở ra và phân tích packet này và lấy các thông tin về service provider và service mà service provider muốn cung cấp. Nếu lookup services chấp nhận service này thì nó sẽ mở cầu nối TCP đến IP và port do presence announcement packet cung cấp để gửi đến đó một Object, object này được gọi là service registrar. Mục đích của service registrar object là để tạo sự dễ dàng trong việc giao tiếp giữa service providers và lookup services trong quá trình đăng ký service. Khi lookup service chấp nhận một service mới bằng cách gửi lại cho service providers một service registrar object, thì quá trình đưa một service vào lookup service được thực hiện như sau (quá trình join): service providers sẽ gọi hàm registrer() của service registrar object với thông số là một object, object này gọi là service item, nó chứa tất cả các thông tin cần thiết cho một dịch vụ cần đưa vào hệ thống JNDI. Khi quá trình đưa Service Item vào lookup service kết thúc thành công thì ta có thể coi như quá trình đưa một service mới vào hệ thống JNDI thành công. Service Item có bản chất là một container và nó chứa một số các Object khác, trong đó chính yếu nhất là một object được đặt tên là service object. Đây là object mà thông qua đó, client có thể tương tác với service. Ngoài ra, service item còn chứa một số các Object thuộc tính khác như icon, GUIs… của service. Trong service registrar object cũng còn có một method có tên là lookup() dành cho client để yêu cầu lookup service kiểm tra tính tồn tại của 1 hoặc 1 số service trong hệ thống JNDI. Và method này trả về service object cho client. Khi client gọi một method trong service object thì service object đó sẽ kết nối trực tiếp với service provider tương ứng để thực thi method (thông qua RMI) Trong J2EE, JNDI được sử dụng bởi client để nhận ConnectionFactory object. Có 2 loại kỹ thuật có thể dùng được cho JNDI lookup của ConnectionFactory Object: Dựa trên cơ sở của kỹ thuật Serialication: sử dụng java.io.Serializable. Application server/component tạo ra một instance ManagedConnectionFactory. Instance này được cấu hình bằng cách sử dụng các thông tin được lưu trong 1 file cấu hình theo cú pháp của XML (các thông tin về server name, port, gateway…). Bước kế tiếp là server/component tạo ra và thiết lập cấu hình cho một instance của ConnectionManager và truyền instance này đến method createConnectionFactory của ManagedConnectionFactory object. Khi server/component thực hiện JNDI loookup thì nó sẽ trả về 1 ConnectionFactory object để sử dụng cho Connection này. Dựa trên cơ sở của kỹ thuật Referenceable: sử dụng javax.naming.spi.ObjectFactory và javax.naming.Referenceable. Application/Component tạo ra một Reference object. Reference này chứa tất cả các thông tin mà application server/component cần để tạo và cấu hình cho một ManagedConnectionFactory tương ứng. Reference này có thể chứa cặp <reference name>/<logical name> được sử dụng để nhận các đặt tính của factory, reference cũng có thể là một chuỗi nhị phân chứa các thông số dùng để thiết lập cho ManagedConnectionFactory. Method getObjectInstance sẽ được gọi khi component thực hiện thao tác loookup của ConnectionFactory. Để loookup 1 object from naming service, ta sử dụng Context.lookup() với thông số là tên của object mà ta muốn nhận 2.3. Giới thiệu về JDBC (Java Database Connectivity) JDBC là một chuẩn mở rộng của Java cho việc truy cập dữ liệu, mà cho phép người lập trình Java mã hóa đến giao diện lập trình ứng dụng cơ sở dữ liệu quan hệ đồng nhất. Bằng cách dùng JDBC, người lập trình Java có thể trình diễn việc kết nối cơ sỡ dữ liệu, xuất các câu lệnh SQL, kết quả của việc xử lý cơ sở dữ liệu, và nhiều cách linh động liên quan khác. Clients lập trình đến JDBC API đồng nhất, cái này được thực hiện bởi trình điều khiển JDBC (JDBC Driver), một trình điều hợp mà biết cách làm thế nào giao tiếp đến cơ sở dữ liệu với cách độc quyền. JDBC tương tự như chuẩn ODBC(Open Database Connectivity), và cầu nối thông qua hai thành phần thao tác khá tốt là JDBC-ODBC. JDBC 2.0 chứa sự hỗ trợ cho sự thăm dò kết nối cơ sở dữ liệu, tăng sự độc lập cơ sở dữ liệu đối với mã ứng dụng của bạn. Hình 2.7: kết nốI cơ sở dữ liệu qua cầu nốI JDBC (Java Database Connectivity) 2.4. Giới thiệu về RMI (Remote Method Invocation) Mục đích là để tạo ra một Java distributed object model. Trong kiến trúc của RMI, có một yếu tố khá quan trọng mà ta cần phải xác định rõ ràng, đó là việc định nghĩa ra các method và việc thực thi các method đó là hoàn toàn khác nhau. RMI cho phép ta định nghĩa 1 method với mã thực thi của nó trên 1 JVM (Java Virtual Machine) và có thể gọi để thực thi method đó trên một JVM khác. Hình 2.8: gọi thực thi phương thức thông qua RMI RMI Architecture Layers: kiến trúc của RMI có thể phân vào 3 lớp sau: Stub and Skeleton layer: lớp này có nhiệm vụ giao tiếp trực tiếp với chương trình ứng dụng, tiếp nhận các lời gọi method của server từ client. Remote Reference layer: lớp này quản lý các tham khảo được thiết lập từ client đến remote object service trên server. Đây cũng là lớp dùng để thiết lập kết nối từ client đến remote object service trên server. Transport layer: thiết lập kết nối TCP/IP giữa các máy với nhau trên mạng để truyền dữ liệu khi lớp Remote Reference yêu cầu. Kiến trúc 3 lớp của RMI được thể hiện như hình vẽ sau: Hình 2.9: sơ đồ kiến trúc ba lớp của RMI Làm thế nào một client có thể tìm ra một RMI remote service? Client tìm remote service thông qua việc sử dụng naming or directory service, (1 naming or derectory service được chạy trên một well-known host và port). Trên máy host, 1 chương trình server tạo ra một remote service bằng cách: đầu tiên nó tạo ra một local object để thực thi service đó, sau đó nó export object đó đến RMI. Khi một object được export, RMI tạo ra một listening service để chờ client kết nối [...]... object, (hình 2. 12) Sau đó client có thể làm việc trực tiếp với EJB object bằng các phương thức nghiệp vụ, (hình 2. 11) PHẦN II PHÁT TRIỂN ỨNG DỤNG Trong phần này sẽ xây dựng ứng dụng E-store để mô tả những kỹ thuật, công nghệ trong việc phát triển ứng dụng theo công nghệ J2EE Ứng dụng được mô tả phân tích với use case và miền phân tích theo UML Sau đó được thiết kế theo kiến trúc MVC – Model-View-Controller... đích của phát triển ứng dụng này là: Tìm hiểu việc sử dụng UML để phân tích thiết kế ứng dụng theo hướng đối tượng Minh họa cách sử dụng Rational Rose Tìm hiểu công nghệ EJB, JSP, Servlet của đặc tả J2EE CHƯƠNG 3 PHÂN TÍCH MÔ TẢ YÊU CẦU TRƯỜNG HỢP NGƯỜI DÙNG VÀ KỊCH BẢN ỨNG DỤNG 3.1 Mô tả kịch bản của ứng dụng Ứng dụng này là một phần của hệ thống thương mại điện tử Ứng dụng này đảm trách chức... chỉ giao tiếp với các CORBA object viết bằng Java mà còn bằng bất kỳ ngôn ngữ khác 2. 5.Tổng quan về Enterprise JavaBean(là thành phần chính trong đặc tả J2EE) Enterprise JavaBean là mô hình lập trình ứng dụng đa tầng Cấu trúc EJB là cấu trúc Component để phát triển và triển khai các ứng dụng nghiệp vụ phân tán Các ứng dụng được viết với cấu trúc EJB có thể bảo mật đa người dùng, chia mức và thực hiện... phép khách hàng tìm chọn và đặt mua hàng thông qua mạng Vì khả năng và thời gian nên em chỉ tập trung vào phần ứng dụng này Kịch bản mua hàng được mô tả theo trình tự sau: 1 Khách hàng truy cập vào trang chủ Web site của ứng dụng này Nó cho phép tìm sản phẩm thông qua giao diện tìm kiếm 2 Bất cứ khi nào khách hàng cũng có thể đăng nhập vào hệ thống bằng cách cung cấp một account và password Nếu khách... javax.ejb.EJBHome interface Hình 2. 12: sơ đồ yêu cầu tạo một EJB object từ Home objects Giải thích quá trình làm việc của hình 2. 11 và 2. 12: Khi phương thức tạo được gọi trên home interface từ trình khách thì EJB home tạo một thể hiện của EJB object mà tham chiếu tới thể hiện bean có kiểu tương ứng Khi thể hiện bean được kết hợp với EJB object thì phương thức ejbCreate() tương ứng của thể hiện đó sẽ được... dùng nhập vào không hợp lệ thì xảy ra các điều sau: - Hệ thống thông báo những dữ liệu nhập vào không hiệu lực, yêu cầu nhập lại - Người dùng nhập lại thông tin và hệ thống xác nhận lại những thông tin đó - Nếu nhập vào thông tin hợp lệ thì sẽ được lưu vào hệ thống - Nếu không hợp lệ thì hệ thống yêu cầu nhập lại cho đến khi hợp lệ ● Pre – Condition (điều kiện trước): người dùng phải đăng nhập vào hệ... nhập vào hệ thống 6 Use case kết thúc Luồng sự kiện phụ 1 Người dùng nhập thông tin của account không hợp lệ Nếu hệ thống xác định thông tin mà người dùng nhập vào không hợp lệ thì xảy ra các điều sau: - Hệ thống thông báo những dữ liệu nhập vào không hiệu lực, yêu cầu nhập lại - Người dùng nhập lại thông tin và hệ thống xác nhận lại những thông tin đó - Nếu nhập vào thông tin hợp lệ thì sẽ được lưu vào... được Actor là khách hàng (customer) Khách hàng là người cần tìm món hàng và đặt mua hàng trên mạng thông qua hệ thống này 3 .2. 2 Xác định các Use case Qua quá trình khảo sát đặc tả ứng dụng có được các use case của phần ứng dụng này như sau: Tạo tài khoản (create account) Cập nhật tài khoản (update account) Đăng nhập vào và thoát khỏi hệ thống (signin and off ) Duyệt xem danh mục hàng (browse... 3.3.1 .2 Tìm các lớp miền ứng dụng( hay các lớp nghiệp vụ) Các thể hiện của các lớp này là các đối tượng có thể lưu trữ dữ liệu, xử lý các tính toán nghiệp vụ, xử lý các thông điệp Đối tượng được tìm như là thực thể tồn tại một cách tự nhiên trong miền ứng dụng Để tìm đối tượng chúng ta cần rà soát lại đặc tả yêu cầu từ mô hình use case, để nắm bắt những danh từ chứa khái niệm chủ chốt của ứng dụng Đồng... đó với số lượng vượt quá số lượng có trong kho 2 Thông tin về thẻ tín dụng, địa chỉ hoá đơn, email… người dùng nhập vào không hợp lệ ● Pre – Condition (điều kiện trước):không có ● Post –Condition (điều kiện sau): một đơn hàng được tạo cho người mua (khách hàng), đơn hàng được gửi đến hệ thống xử lý đơn hàng, hệ thống này xác nhận và thực hiện các bước tiếp theo 3.3 Phân tích miền ứng dụng Sau khi xây . một ứng dụng J2EE. Các enterprise bean và container của nó đều được chạy trên J2EE server. Web container quản lý và thực thi của tất cả các trang JSP và các servlet cho một ứng dụng J2EE. . JavaBean là mô hình lập trình ứng dụng đa tầng. Cấu trúc EJB là cấu trúc Component để phát triển và triển khai các ứng dụng nghiệp vụ phân tán. Các ứng dụng được viết với cấu trúc EJB có thể bảo. web component và container của nó đều được chạy trên J2EE server. Application client container quản lý và thực thi của tất cả các thành phần application client cho một ứng dụng J2EE. Các application