Thực hiện gọi các SessionBean

Một phần của tài liệu Phát triển ứng dụng phần mềm trên máy chủ dựa trên công nghệ Java (Trang 32)

Phần này sẽ xem xét các ứng dụng khách và việc gọi các phương thức của Session Bean từ các ứng dụng khách này. Các ứng dụng khách có thê tôn tại dưới một trong các dạng sau:

- 32 -

• Ung dụng trên máy trạm thực hiện trao đổi với ở xa Session Bean thông qua mạng.

• Java Applet thực hiện trong một trình duyệt Web trao đổi với Session Bean ở xa thông qua mạng.

• Trên một máy chủ Web thực hiện kết nối với Session Bean ở xa thông qua mạng, người sử dụng dùng trình duyệt Web, kết nối qua mạng đến các thành phần trên bộ chứa Web như Java Server Pages hay Java Servlet. Các thành phân này sẽ thực hiện kết nối với Session Bean.

• Các thành phần EJB khác thực hiện trao đổi để giải quyết các vấn đề lớn hơn.

Tuy ở dạna nào thì thông thường các ứng dụng khác đều thực hiện các công việc

1. Tìm kiếm đối tượng giao diện tại chỗ.

2. Sử dụng đối tượng giao diện tại chỗ để tạo đối tượng Session Bean. 3. Gọi các phương thức của đối tượng Session Bean.

4. Hủy bỏ đối tượng Session Bean. [2]

2.4.4. ĩ Tim kiếm đổi tượng giao diện tại chỗ

Một trong các m ạt tiêu của J2EE là cho phép các ứng dụng có thế “viết một lần, chạy bất cứ đâu”. Vì vậy, mọi ứng dụng Java triển khai ở mức xí nghiệp phải không phụ thuộc vào mô hình đa mức cụ thể nào cả. Việc lự a chọn các thức phân tán các EJB, Servlet, JSP, ... trên nhiều mức khác nhau không làm ảnh hưởng tới việc phát triển các thành phần này. Tính năng này được gọi tính không phụ thuộc vị trí - vị trí vật của các thành phần; khi triển khai không ảnh hưởng tới việc phát triển các thành phần này.

Đe đạt được tính không phụ thuộc vị trí, J2EE sử dụng dịch vụ thư mục và định danh. Dịch vụ thư mục và định danh thực hiện việc lưu trừ các thông tin về các tài

nguyên trong hệ thống cũng như thực hiện các cách thức tìm kiếm các tài nguyên này. Một sô dịch vụ thư mục và định danh truyền thốne có thể kể đến là dịch Netscape Directory Server, Microsoft Active Directory hay IBM Lotus Notes.

Theo cách thức truyền thống, các công ty sử dụng các thư mục để lưu trữ các thông tin như tên người sử dụng, mật khẩu, vị trí của máy tính, máy in, ... Các sản phẩm J2EE sử dụng hệ thống thư mục để lưu trữ thông tin về vị trí của các tài nguyên được sử dụng bởi các ứng dụng khi được triển khai. Các tài nguyên đó có thô kê đến như các giao diện tại chỗ, các thuộc tính môi trường của EJB, trình kết nôi với cơ sở dữ liệu và các tài nguyên khác. Việc sử dụng dịch vụ thư mục cho phép phát triển các ứng dụng mà không phụ thuộc vào một máy tính cụ thể hay một vị trí nào đó. Tính năng này tạo ra khả năng không phụ thuộc vào vị trí của EJB, giúp có thể phát triển các ứng dụng có tính khả chuyển cao. Ví dụ, khi phải thực hiện di chuyển một tài nguyên nào đó tới một vị trí mới thì không cần phải phát triển lại ứng dụng mà thư mục của hệ thống sẽ được cập nhập lại đế phản ánh thay đổi này. Khả năng này giúp làm giảm bớt gánh nặng bảo trì các hệ thống đa mức theo thời gian. Và điều này đặc biệt cần thiết khi sử dụng các thành phần được cung cấp sẵn trên thị trường, bởi thường không thề có được chương trình nguồn của các thành phần này để tiến hành các sửa đổi.

Hệ thống thư mục và định danh được sử dụng trong J2EE là JNDI. JNDI cung cấp cho ứng dụng một giao diện chuẩn cho việc lưu trữ các thông tin về vị trí của người sử dụng, máy tính, mạng, các đối tượng trong hệ thống và các dịch vụ. Trong J2EE, JNDI được sử dụng để định vị các tài nguyên trong môi trường đa mức, trong đó, có thể kể đến như các đối tượng giao diện tại chồ, các thuộc tính môi trường, các tài nguyên của cơ sở dữ liệu, ...

Việc tìm kiếm các tài nguyên trong J2EE được tiến hành theo hai bước:

1. Kết gắn mỗi tài nguyên với một bí danh trong mô tả triển khai. Các sản phâm J2EE sẽ thực hiện việc kết gắn bí danh này với tài nguyên được chỉ định.

- 3 4 -

2. Các ứng dụng khách sử dụng bí danh với JNDI để tìm tài nguyên được triển khai.

Trong các ứng dụng J2EE, tại thời điểm triển khai, các thành phần EJB được kết gan với một bí danh trong mô tả triển khai của thành phần này. Ví dụ, thành phần MyBean được xác định với bí danh MyHome trong mô tả triển khai. Khi đó, bộ chứa EJB sẽ tự động kết gắn bí danh này với giao diện tại chỗ của thành phần EJB. Trong ví dụ trên, MyHome sẽ được kết gắn với đối tượng giao diện tại chồ của thành phần MyBean. Các ứng dụng khách, trên bất cứ máy nào, sẽ sử dụng bí danh này để tìm kiếm đối tượng giao diện tại chỗ. Để thực hiện việc tim kiếm, ứng dụng khách sử dụng giao diện lập trình JNDI. JNDI thông qua mạng thực hiện trao đối với một số dịch vụ thư mục. Khi đối tượng giao diện tại chồ được tìm thấy thì tham chiếu tới đối tượng này sẽ được chuyển cho ứng dụng khách.

Cụ thể hơn ứng dụng khách cần phải thực hiện:

• Tạo lập môi trường: Xác định dịch vụ thư mục sẽ sử dụng, chỉ ra vị trí của dịch vụ thư mục trên mạng, xác định tên và mật khấu truy nhập dịch vụ thư mục.

• Tạo ngữ cảnh khởi tạo: Ngữ cảnh khởi tạo là điểm khởi đầu cục bộ cho kết nối đến cấu trúc thư mục. Phải thực hiện việc chuyển ngừ cảnh khởi tạo tới các thuộc tính môi trường vừa khởi tạo.

• Lấy đối tượng giao diện tại chỗ: Để lấy được đối tượng giao diện tại chỗ, ứng dụng khách phải thực hiện lo o k u p O của JNDI trên thư mục ở xa. Ket quả trả lại là đối tượng RMI remote object và phải chuyển nó thành giao diện tại chỗ. [2]

Ví dụ về việc thực hiện các bước trên:

/* Lấy các thuộc tính hệ thống cho việc khới tạo JNDI */ Properties props = System. getProperties();

/* Tạo ngO cảnh khởi tạo */

Context ctx = new InitialContext (props);

M y H o m e h o m e = (M y H o m e ) ctx. lookup (“M y H o m e ”);

2.4.4.2 Tạo đối tượng EJB

Sau khi đã có được tham chiếu tới đối tượng giao diện tại chỗ, có thể sử dụng đối tượng này để tạo các đối tượne EJB. Đe tạo đối tượng EJB, sử dụng một trong

các phươne thức c r e a t e ( ) của đối tượng giao diện tại chồ. Ví dụ:

M y R e m o te ln te ría c e e jb O b je c t = h om e. createQ ;

Phải chú ý rằng, trong một số trường hợp, khi phương thức createQ của đối

tượne giao diện tại chỗ được thực hiện, chưa chắc phương thức ejbCreate() của đối

tượng EJB được thực hiện do bộ chứa EJB có thể sử dụng một đối tượng EJB có s ẵ n .[2]

2.4.4.3 Gọi các phương thức của đối tượng EJB

Sau khi tạo lập được đổi tượng EJB, có thể gọi các phương thức của nó. Khi ứng dụng khách thực hiện việc gọi phương thức của đối tượng EJB, thì đối tượng này phải lựa chọn một biến thể EJB tương ứng để thực hiện yêu cầu này. Khi đó, đối tượng EJB có thể sử dụne một biến thể EJB có sẵn hoặc tạo ra một biến thể mới. Sau khi phương thức được gọi hoàn thành việc thực hiện của mình, đối tượns EJB sẽ thực hiện việc đem kết quả trả lại cho ứng dụng khách. [2]

Ví dụ:

e jb O b je c t. ad d();

2.4.4.4 Hủy bỏ đối tượng

Sau khi sử dụng xong đối tượng EJB, có thể tiến hành hủy bỏ thông qua việc

thực hiện phương thức r e m o v e Q của đổi tượng giao diện tại chỗ hoặc của đối tượng

EJB. [2] Ví dụ:

- 3 6 -

Phan trên xem xét các Session Bean dùng để thực hiện các tiến trình nghiệp vụ. Phần này sẽ xem xét một loại EJB khác là Entity Bean. Khác với Session Bean, Entity Bean là các thành phần có thể lưu trữ bền vững trên các thiết bị lưu trữ. Điều đó có nghTa là có thể mô hình hóa các dừ liệu của ứng dụng thông qua việc sử dụng các Entity Bean. [2]

Trong phần này sẽ xem xét các vấn đề sau: • Các khái niệm cơ bản về lưu trữ bền vừng.

• Định nghĩa của khái niệm Entity Bean theo quan điểm của người phát triển ứne dụne.

• Các tính chất của Entity Bean.

• So sánh giữa Entity Bean và Session Bean.

• Phát triển các Entity Bean.

2.5.1 Các khái niệm cơ bản về lưu trữ bền vững

2.5.1.1 Lưu trữ các đối tượng Java

Khi làm việc với các đối tượng Java, nhiều trường hợp phải thực hiện việc lấy trạng thái của các đổi tượng này và lưu trữ trạng thái của chúng. Công việc này được gọi là lưu trữ đối tượng. Việc lưu trừ đối tượng thực hiện việc chuyển các đối tượng thành một dòng dừ liệu. Dòng dừ liệu này có thể được chuyển qua mạng hoặc lưu trừ trên các thiết bị lưu trữ.

Khi cần làm việc với đối tượng đã được lưu trữ, thì phải thực hiện tạo dựng lại đối tượng này từ các dừ liệu đã được lưu trữ. Sau đó, có thể gọi đến các phương thức của đối tượng này. Điều này tạo ra một hạn chế rất lớn đối với việc lưu trữ các đổi tượng là khả năng hỏi đáp. Cách duy nhất có thể thực hiện việc hỏi đáp là chuyên toàn bộ các đối tượng này vào trong bộ nhớ và thực hiện việc tìm kiếm trên

đó. Điều này làm giảm tốc độ thực hiện của các ứng dụng có khối lượng dừ liệu lớn tới mức không thể chấp nhận được. Chính vì vậy, đối với các ứng dụng mức xí nghiệp cần phải có một cơ chế khác để thực hiện việc lưu trữ trạng thái của các thành phần EJB. [2]

2.5.1.2 Sử (lụng CSDL quan hệ

Một trong các cách lưu trừ khác cho các đối tượng Java là sử dụne các cơ sở dừ liệu quan hệ truyền thống. Ví dụ như sử dụng cơ sở dữ liệu trên Oracle hay MS SQL Server. Trong trường hợp này, thay vì thực hiện việc lưu trữ từna, đối tượng Java một, có thể thực hiện việc phân rã mỗi đối tượng thành nhiều phần con và thực

hiện việc lưu trữ các thành phần này riêng rẽ. Ví dụ, với đối tượng Tài khoản (ngân

hàng), có thề lưu trữ số hiệu tài khoản trên một dòng trong CSDL và số dư của tài khoản trên một dòng khác. Khi thực hiện việc lưu trữ đối tượng này, sẽ sử dụng JDBC hoặc SQL/J để thực hiện ánh xạ từ dữ liệu của đối tượng lên một CSDL. Cũng lưu cả tên của lớp đối tượng Java trên đó để biết được dữ liệu này do đối tượng thuộc lớp nào tạo ra. Việc biết được đối tượng thuộc lớp nào cho phép có thế tạo lại đối tượng này khi cần.

Việc ánh xạ các đối tượng lên một CSDL quan hệ cho phép có thể thực hiện việc tìm kiếm một cách có hiệu quả bằng cách thực hiện tìm kiếm trên CSDL quan hệ và sẽ được kết quả là một bảng các dừ liệu thỏa mãn điều kiện tìm kiếm. Sau đó, có thể khởi tạo các đối tượng cần tìm dựa trên bảng kết quả này. [2]

2.5.1.3 Cơ sở dữ liệu h ướng đối tượng

Một cách khác nữa để lưu trừ các đối tượng là sử dụng các CSDL hướng đối tượng. Các CSDL hướng đối tượng cho phép lưu trữ trực tiếp các đối tượng mà không cần phải thực hiện ánh xạ chuyển đổi như đổi với CSDL quan hệ. Việc không cần thực hiện ánh xạ chuyển đổi giúp cho ứng dụng trở lên đơn giản hơn.

- 38 -

Đe thực hiện việc tìm kiếm, các CSDL hướng đối tượng thường hỗ trợ ngôn ngừ hỏi đáp hướng đối tượng OQL (Object Query Language). OQL là giao diện bậc cao cho phép thực hiện hỏi đáp các đối tượng trên các thuộc tính của nó.

Ngoài việc hồ trợ hỏi đáp trên các đối tượna, các CSDL hướng đối tượng còn hồ trợ các mối quan hệ giữa các đối tượng. Ví dụ, có thể định nghĩa quan hệ giữa đối

tượng Tài khoản (ngân hàng) và đối tượng Khách hàng. Khi đó, có thể tham chiếu

từ đối tượng Tải khoản (ngân hàng) sang đối tượng Khách hàng và ngược lại. Việc

thực hiện tham chiếu này có hiệu quả cao hơn nhiều so với việc thực hiện phép kết nối trong CSDL quan hệ.

Các CSDL hướng đối tượng có khả năng hồ trợ các đổi tượng rất phức tạp mà CSDL quan hệ khó có thể hồ trợ được. Tuy nhiên, một hạn chế lớn của CSDL hướng đổi tượng là tính phổ biến của nó. Hiện nay, việc ứng dụng CSDL hướng đối tượng trong thực tế còn rất hạn chế. Điều này dẫn đến các công cụ hồ trợ như công cụ quản lý, theo dõi khả năng thực hiện, tối ưu, ...cho các CSDL hướng đối tượng còn rất bị hạn chế.

Tóm lại, việc lưu trữ bền vững có thể thực hiện theo một trong 3 cơ chế là lưu trừ đối tượng, sử dụng CSDL quan hệ và sử dụng CSDL hướng đối tượng. Trong nội dune của luận văn này, sẽ đề cập đến chủ yếu việc lưu trừ sử dụng CSDL quan hệ do cơ chế lưu trừ đối tượng còn có rất nhiều hạn chế và CSDL hướng đối tượng có nhiều điểm mạnh nhưng còn ít được phổ biến. [2]

Phần sau sẽ xem xét kỹ hơn về các Entity Bean.

2.5.2 Khái niệm Entity Bean

Trong các ứng dụng mức xí nghiệp sử dụng mô hình đa mức, có hai loại thành phần thường được sử dụng là:

Các thành phần thực hiện logic của ứng dụng: các thành phần này cung cấp các phương thức thực hiện các công việc xử lý thông thường. Ví dụ như:

• Thực hiện thanh toán trên thẻ tín dụng.

• Tính toán ma trận ngược.

Như vậy, có thể thấy các thành phần này thực hiện các hành động/hoạt động của hệ thống. Các thành phần này rất phù hợp với việc xử lý các tiến trình nghiệp vụ. Các thành phần Session Bean rất phù họp cho mục đích này. Các Session Bean thể hiện các hoạt độnẹ của người sử dụng cũng như các tiến trình xử lý trong mỗi phiên giao dịch.

Các thành phần dữ liệu bền vững: là các thành phần có khả năng lưu trữ dữ liệu trên các thiết bị lưu trữ. Các thành phần này sử dụng các cơ chế lưu trừ bền vững mà đã đề cập ở trên như lưu trữ đối tượng, sử dụng CSDL quan hệ, sử dụng CSDL hướng đối tượng. Các thành phần này thực hiện việc biểu diễn dữ liệu muốn lưu trữ. Ví dụ như:

• Các thông tin về Tài khoản ngân hàng như số tài khoản, số dư của tài khoản. • Các thông tin về Nhân sự như tên, phòng ban và mức lương của nhân viên. • Các thông tin Quản lý khách hàng như tên, địa chỉ, số điện thoại.

Các thành phần này biểu diễn các đổi tượng như con người, địa điểm, đồ vật, ... Các thành phần này phù hợp cho việc biểu diễn dừ liệu của ứng dụng.

Một câu hỏi được đặt ra là tại sao lại cần phải biểu diễn các dữ liệu dưới dạng các thành phần mà không làm việc trực tiếp với các dừ liệu. Ví dụ như làm việc trực tiếp với các bản ghi trong CSDL. Lý do của việc sử dụng các thành phần dữ liệu bên vừng bởi chúng giúp cho ứng dụng có thể được thực hiện đơn giản hơn, dễ quản lý hơn. Có thể thực hiện việc nhóm một lượng lớn dữ liệu dưới dạng một đối tượng thống nhất và thực hiện việc gán với các dữ liệu này các phương thức xử lý dữ liệu cần thiết. Hơn thế nữa, việc sử dụng các thành phần dữ liệu bền vững còn cho phép có thể sử dụng được các dịch vụ hệ thống cung cấp bởi các máy chủ ứng dụng như việc quản lý giao dịch, truy nhập qua mạng và bảo mật.

- 4 0 -

Entity Bean chính là các thành phần dừ liệu bền vững. Các Entity Bean có khả năng thực hiện việc lưu trữ dừ liệu của mình ra các thiết bị lưu trữ. Các Entity Bean thực hiện việc lưu trừ dữ liệu của mình dưới dạng các trường như các trường số tài khoản, số dư tài khoản, ... Và chúng có những phương thức gán với dữ liệu như

Một phần của tài liệu Phát triển ứng dụng phần mềm trên máy chủ dựa trên công nghệ Java (Trang 32)

Tải bản đầy đủ (PDF)

(97 trang)