Session Bean
3.1 Giới thiệu
- EJB là các thành phần phía máy chủ được lưu trữ trên các máy chủ ứng dụng hỗ trợ Java. Chúng được phát triển như một phần của các ứng dụng doanh nghiệp để hỗ trợ cung cấp giải pháp cho các yêu cầu phức tạp của doanh nghiệp. Thông thường, EJB’s được đặt ở lớp giữa của ứng dụng và được truy cập bởi các loại máy khách khác nhau như Servlet hoặc dịch vụ Web.
- Nền tảng Java EE hỗ trợ các loại thành phần EJB khác nhau dựa trên chức năng và sự tích hợp với các thành phần khác trong ứng dụng. Enterprise JavaBeans được phân loại thành nhiều loại phát triển bean khác nhau. Chúng là session bean và bean hướng thông điệp.
- Các session besan đại diện cho các quy trình nghiệp vụ được sử dụng để xử lý các lôgic nghiệp vụ cho ứng dụng. Một logic nghiệp vụ có thể thực hiện phép cộng trên hai số, kết nối với cơ sở dữ liệu, thực hiện giao dịch trên tài khoản ngân hàng hoặc gọi các session bean khác hoặc bean theo hướng tin nhắn.
3.1.1 Session Bean
- Các session bean là các thành phần Java có thể sử dụng lại đóng gói logic nghiệp vụ của một ứng dụng doanh nghiệp. Chúng thực thi ở phía máy chủ trong vùng chứa EJB. Chúng được triển khai trên các máy chủ ứng dụng hỗ trợ Java và cung cấp các dịch vụ cho khách hàng của họ có thể truy cập chúng theo chương trình.
- Các đối tượng của session bean có tính chất đàm thoại. Một cuộc hội thoại là một tương tác giữa bean và khách hàng và nó bao gồm một số lệnh gọi phương thức giữa chúng. Ví dụ, Cookie có thể được sử dụng để duy trì dữ liệu máy khách trong các ứng dụng Web. Tương tự như vậy, Session bean có thể giữ trạng thái của máy khách trong quá trình gọi phương thức.
- Có thể có nhiều loại client khác nhau đối với một Session bean. Những client này có thể truy cập session từ xa hoặc cục bộ.
+ Remore client - Nó có thể là một ứng dụng Java độc lập, một dịch vụ Web hoặc các Session bean khác đang thực thi như một phần của ứng dụng doanh nghiệp trong JVM khác nhau.
+ Local client - Nó có thể là các thành phần nằm trong cùng một ứng dụng doanh nghiệp. Nó có thể là một Session khác hoặc một Servlet thành phần Web.
- Các thành phần của session bean thực hiện interface javax.ejb.SessionBean Chúng không liên tục qua các lỗi hệ thống.
Các quan điểm khác nhau về session bean
- Trong hình ảnh, kiến trúc sư ứng dụng xem các Session bean như việc triển khai logic nghiệp vụ, các Session bean ở đây được truy cập bởi nhiều máy khách. Kiến trúc sư thiết kế logic kinh doanh theo yêu cầu của khách hàng. Quan điểm của nhà phát triển của Session bean là triển khai các lớp Java. Các lớp Java này thực hiện chức năng ứng dụng.
- Quan điểm ứng dụng máy khách của Session bean là phần mở rộng của máy chủ ứng dụng. máy khách truy cập các dịch vụ được cung cấp bởi máy chủ ứng dụng thông qua các bean. máy khách truy cập Phiên thông qua giao diện kinh doanh do các nhà phát triển cung cấp.
-Quan điểm ứng dụng máy khách của Session bean là phần mở rộng của máy chủ ứng dụng. Máy khách truy cập các dịch vụ được cung cấp bởi máy chủ ứng dụng thông qua các bean. Máy khách truy cập Phiên thông qua giao diện kinh doanh do các nhà phát triển cung cấp.
3.1.2 các loại session bean
- Sự khác biệt chính giữa Session bean và JavaBeans là thời gian tồn tại của Session bean. Một phiên bản của Session bean thực hiện một nhiệm vụ thay mặt cho máy khách. Nói cách khác, nó đại diện cho máy khách ở phía máy chủ và hoạt động như một phần mở rộng của máy khách trên máy chủ. Một phiên bản của Session bean còn tồn tại miễn là máy khách có mặt. Do đó, thời gian tồn tại của một Session bean tương đương với thời gian tồn tại của một ứng dụng khách. nó duy trì trạng thái hội thoại cho khách hàng. Hội thoại có thể được định nghĩa là khoảng thời gian giữa máy khách truy cập vào một phiên bản Session bean và máy khách gọi phương thức từ xa trên phiên bản đó.
- Sau đây là hai khía cạnh chính của thời gian tồn tại của Session bean:
+ Nhiều máy khách không thể chia sẻ các phiên bản của Session bean. Thời lượng của một session giảm tùy theo khoảng thời gian mà cá thể bean đã được sử dụng.
+ Vòng đời thể hiện của Session bean được kiểm soát bởi container và thể hiện của Session bean bị vùng chứa loại bỏ khi hết thời gian chờ xảy ra hoặc bean bị phá hủy rõ ràng.
- Trạng thái của các phiên bản của Session bean không thể được lưu trong cơ sở dữ liệu hoặc hệ thống tệp. Do đó, Session bean không liên tục, nhưng chúng có thể thực hiện các hoạt động cơ sở dữ liệu.
- Dựa trên thời gian tồn tại của Session bean, có ba biến thể của Session bean:
+ Stateless Session Bean - Như tên gợi ý, stateless session bean không duy trì trạng thái máy khách trên máy chủ trong quá trình hội thoại. Điều này có nghĩa là nó không lưu trữ giá trị của các biến cá thể được liên kết với cuộc hội thoại của khách hàng. Bất cứ khi nào một phương thức của stateless session bean được gọi, nó sẽ sử dụng các biến thể hiện của bean, nhưng giá trị của các biến này chỉ được giữ lại trong thời gian gọi phương thức. Sau khi phương thức được hoàn thành, các giá trị không được giữ lại, tức là chúng sẽ bị vùng cha xóa.
+ Một số tình huống không yêu cầu phải duy trì đập của máy khách và phù hợp cho việc phát triển phiên không trạng thái (Stateless Session bean), chúng như sau:
* SalaryCalculator
* MoneyConverter
* CardVerification
+ Stateful Session bean - Stateful session bean duy trì trạng thái của các máy khách trên máy chủ. Điều này có nghĩa là chúng lưu trữ thông tin thu được từ máy khách cụ thể giữa các lần gọi phương thức. Nói cách khác, các stateful bean session có trách nhiệm duy trì trạng thái máy khách qua các cuộc hội thoại phương thức khác nhau.
+ Một số trường hợp cần thiết phải lưu trữ thông tin của khách hàng để duy trì danh tính của nó và phù hợp với stateful bean session, chúng như sau:
* Shopping Cart
* Online banking
* Product order processing system
+ Singleton Session bean - Singleton session bean tương tự như hạt Stateless Session. Tuy nhiên, chúng được khởi tạo một lần cho toàn bộ ứng dụng. Chúng được truy cập đồng thời. Bởi nhiều máy khách và chúng tương tự như các Stateless Session Bean.
+ Phiên bản duy nhất của singleton session bean được chia sẻ bởi tất cả các máy khách. Một số trường hợp trong đó Singleton Session bean có thể được sử dụng để thực hiện các tác vụ khởi tạo và dọn dẹp của ứng dụng khi nó tắt.
3.1.3 Đặc điểm của session bean
- Một Session bean thực thi logic nghiệp vụ trên máy chủ, ẩn sự phức tạp khỏi máy khách truy cập nó. Bất kể loại session bean nào được phát triển trong ứng dụng doanh nghiệp, chúng đều có các đặc điểm sau:
+ Session bean là đối tượng tồn tại trong thời gian ngắn. Điều này có nghĩa là Session beankhông thể tồn tại khi máy chủ ứng dụng gặp sự cố.
+ Một session bean được liên kết với một máy khách và không thể được chia sẻ bởi nhiều máy khách.
+ Session bean được quản lý bởi container. Điều này có nghĩa là quá trình thực thi của Session bean được kiểm soát bởi container.
+ Các session bean được thực thi bởi mã máy khách và đại diện cho trạng thái giao tiếp giữa máy khách và bean.
+ Các session bean được khởi tạo và quản lý bởi EJB container.
+ Session bean hỗ trợ giao tiếp đồng bộ và không đồng bộ. Điều này có nghĩa là chúng có thể được gọi đồng bộ hoặc không đồng bộ bởi các máy khách.
+ Các session bean là các bean không bền, có nghĩa là chúng không thể được sử dụng để biểu diễn dữ liệu trong cơ sở dữ liệu.
+ Session bean có thể thực hiện các ranh giới giao dịch và cơ chế bảo mật.
- Session bean được sử dụng trong ứng dụng khi bất kỳ điều kiện nào sau đây đều hoạt động tốt:
+ Khi ứng dụng phải giữ lại trạng thái qua nhiều lần gọi phương thức.
+ Khi có yêu cầu giao tiếp giữa máy khách và các thành phần khác của ứng dụng.
3.2.1 Phương thức gọi lại cho Stateless Session Bean
- Các phương thức gọi lại là các phương thức được container sử dụng để quản lý vòng đời của một Session bean. Các phương thức này có tiền tố là chú thích gọi lại.
- Các stateless session bean có hai loại phương thức gọi lại, phương thức PostConstruct và PreDestroy. Các phương thức này có tiền tố là các chú thích @PostConStruct và @PreDestroy tương ứng.
- Các phương thức PostConstruct triển khai chức năng hoặc nhiệm vụ sẽ thực thi ngay sau khi Session bean được khởi tạo, chẳng hạn như khởi tạo các biến, v.v.
- Các phương thức PreDestroy triển khai chức năng hoặc nhiệm vụ sẽ thực thi trước khi Session bean bị xóa khỏi container, chẳng hạn như giải phóng tất cả các tài nguyên được giữ bởi Session bean, v.v.
- Các phương thức này không trả về bất kỳ giá trị nào; do đó kiểu trả về là void.
3.2.2 Vòng đời của Stateless Session Bean
- Stateless session bean được duy trì dưới dạng. Một nhóm bean trong container. Bất cứ khi nào nhận được yêu cầu của khách hàng, container sẽ chỉ định được từ pool để phục vụ yêu cầu. Sau khi phiên hoàn tất, bean sẽ được trả về nhóm đậu được duy trì bởi thùng chứa.
1. lnstantiated - Trong giai đoạn này, Session bean được khởi tạo và thêm vào bean pool.
2. Remove- Trong giai đoạn này, cá thể của bean trong bị phá hủy và bị loại bỏ khỏi container.
Vòng đời của Stateless session bean
- Máy chủ ứng dụng ban đầu không có bất kỳ session bean nào trong container. Sau đó, một bean được cho là ở trạng thái 'Không tồn tại'. Bất cứ khi nào có yêu cầu của khách hàng đối với session, container sẽ khởi tạo bean Phiên. Tuy nhiên, container cũng có thể khởi tạo các session bean ngay cả khi không có yêu cầu của khách hàng nào đối với session, việc khởi tạo như vậy xảy ra trong quá trình khởi động ứng dụng.
- Container tạo ra một thể hiện của Session bean thông qua phương thức newInstance (). Sau khi khởi tạo, các phụ thuộc bean được khai báo thông qua các chú thích và bộ mô tả triển khai được đưa vào bean.
- Gọi một phương thức gọi lại cấu trúc bài đăng là tùy chọn. Chức năng của một phương thức gọi lại cấu trúc đăng là thực hiện các hoạt động khởi tạo bổ sung sau khi stateless session bean được khởi tạo. Các phương thức này được gọi bởi vùng chứa không phải ứng dụng khách. Khi một khách hàng gọi một đã được, khách hàng nhận được từ nhóm và trả về nhóm session bean.
- Sau khi khởi tạo, tất cả các Session bean được đặt trong nhóm Method-Ready. Các session bean trong nhóm này sẵn sàng nhận các yêu cầu từ khách hàng và phản hồi tương ứng.
- Khi một container phải xóa Session bean container, nó có thể phải thực hiện các phương thức gọi lại hủy trước. Các phương thức này chịu trách nhiệm thực hiện các tác vụ dọn dẹp cho bean, chẳng hạn như chuyển trạng thái của máy khách cho một session khác, dealIocating tất cả các tài nguyên được sử dụng bởi bean, v.v. Tùy chọn có một phương thức hủy trước cho Session bean.
3.2.3 Chú thích trong Stateless Session Beans
- Chú thích là siêu dữ liệu được container sử dụng trong quá trình triển khai ứng dụng. Họ cung cấp các chỉ thị liên quan đến cấu hình ứng dụng.
- Một Stateless Session Beans có thể được tạo bằng cách chú thích lớp Java cụ thể với chú thích @Stateless
- Các interface của Session bean có thể được chú thích bằng chú thích @Local và @Remote. Interface cục bộ được chú thích bằng @Local và interface từ xa được chú thích bằng @Remote.
- Một stateless session bean có thể có các phương thức gọi lại được liên kết với các sự kiện vòng đời của chúng. Các phương thức gọi lại có thể được chú thích bằng chú thích @PostConstruct, @ PreDestroy.
3.3 Phát triển Beans phiên không trạng thái
Khi một nhà phát triển dự định tạo một bean Phiên không trạng thái, họ phải tạo các thành phần sau:
⦁ Bean class
⦁ Business interface
Lớp Bean đề cập đến việc triển khai lớp Java của logic nghiệp vụ được mong đợi từ bean. Nó có một tập hợp các biến cá thể và các phương thức được xác định để hoàn thành nhiệm vụ mong đợi
Giao diện nghiệp vụ đề cập đến tập hợp các phương thức được hiển thị cho máy khách mà thông qua đó máy khách có thể truy cập vào Session bean. Việc tạo giao diện nghiệp vụ là không bắt buộc đối với việc tạo các Session bean; chúng cũng có thể được truy cập thông qua chế độ xem không giao diện
Một số quy tắc cần tuân thủ khi phát triển bean phiên không trạng thái:
⦁ Cần có ít nhất một giao diện nghiệp vụ cho Session bean
⦁ Lớp bean phiên không thể được khai báo là cuối cùng hoặc trừu tượng vì vùng chứa cần thao tác với lớp
⦁ Lớp session bean nên triển khai một hàm tạo không đối số vì hàm tạo này được gọi khi một thể hiện của Session bean được tạo
⦁ Lớp bean phiên có thể là một lớp con của một Session bean khác hoặc một lớp POJO
⦁ Các phương thức gọi lại nghiệp vụ và vòng đời được định nghĩa trong lớp Session bean hoặc lớp cha
⦁ Tên phương thức nghiệp vụ hiện diện trong giao diện nghiệp vụ và trong lớp bean phiên không được bắt đầu bằng ejb.
⦁ Các phương thức nghiệp vụ phải được khai báo là công khai và không thể được khai báo là cuối cùng hoặc tĩnh
Để tạo bean phiên không trạng thái trong NetBeans IDE, hãy thực hiện các bước sau:
⦁ Mở NetBeans IDE.
⦁ Select File → New Project mới để tạo một ứng dụng doanh nghiệp. Chọn Dự án Mới từ menu Tệp, nó sẽ dẫn bạn đến màn hình hiển thị trong hình
Hình 3.4: Tạo ứng dụng doanh nghiệp
⦁ Chọn các tùy chọn thích hợp như trong hình 3.4 để tạo một ứng dụng doanh nghiệp.
Chọn Java EE → Enterprise Application trong màn hình này
Màn hình sau sẽ nhắc nhà phát triển về tên ứng dụng doanh nghiệp, hãy chọn tên thích hợp và nhấp vào Tiếp theo. Nó sẽ dẫn đến màn hình như trong hình 3.5.
Hình 3.5: Chọn Máy chủ Ứng dụng
Trong màn hình hiển thị trong hình 3.5, nhà phát triển phải chọn máy chủ ứng dụng mà ứng dụng sẽ được triển khai. Nếu có nhiều phiên bản Java EE, thì nhà phát triển phải chọn phiên bản mà nhà phát triển dự định sử dụng cho ứng dụng
Ngoài ra, hãy chọn mô-đun của ứng dụng sẽ được tạo. Theo mặc định, IDE tạo một mô-đun EJB và mô-đun Web. Ở đây chỉ tập trung vào mô-đun EJB.
⦁ Sau khi dự án được tạo, nó sẽ xuất hiện trong cửa sổ dự án như trong hình 3.6.
Hình 3.6: Ứng dụng Doanh nghiệp trong NetBeans IDE
Hình 3.6 cho thấy ứng dụng doanh nghiệp Module3 'và mô-đun EJB tương ứng của nó. Bây giờ Tạo một bean phiên không trạng thái trong mô-đun EJB cho ứng dụng.
⦁ Tạo phiên bean ngay bây giờ. Chọn mô-đun EJB và chọn Tệp Mới từ menu Tệp. Nó dẫn đến màn hình hiển thị trong hình 3.7.
Chọn Enterprise JavaBeans → Session Bean trong màn hình hiện tại và nhấp vào Tiếp theo. Điều này sẽ dẫn đến màn hình hiển thị trong hình 3.8
⦁ Lựa chọn các tùy chọn của Phiên không trạng thái đang sử dụng trình hướng dẫn được hiển thị trong hình 3.8.
Hình 3.8: Lựa chọn các tùy chọn để tạo bean phiên không trạng thái
Trong hình 3.8, chọn các tùy chọn cho bean Phiên không trạng thái. Đầu tiên, hãy cung cấp tên của hạt đậu và gói chứa hạt đậu đó. Một thực tiễn tốt là lưu trữ các hạt đậu trong các thư mục khác nhau tùy theo chức năng của chúng
Chọn loại Session bean đang được tạo. Ở đây, một bean phiên không trạng thái được tạo với giao diện từ xa để truy cập nó. Khi giao diện từ xa được chọn, ứng dụng sẽ nhắc về một dự án phù hợp để lưu trữ giao diện từ xa. Do đó, trước tiên hãy tạo một giao diện từ xa.
3.3.1 Tạo giao diện từ xa Giao diện từ xa
Giao diện từ xa là tập hợp các phương thức mà qua đó Session bean có thể được truy cập từ xa. Sau đây là các bước cần làm để tạo giao diện từ xa:
⦁ Để tạo giao diện từ xa, hãy tạo một dự án Thư viện Lớp Java mới trong IDE NetBeans bằng cách nhấp vào Tệp Dự án Mới Java Thư viện Lớp Java Java từ hộp thoại Dự án Mới như thể hiện trong hình 3.9.
Hình 3.9: Tạo giao diện từ xa
Bây giờ hoàn tất quá trình tạo bean bằng cách chọn các tùy chọn như trong hình 3.10.
Hình 3.10: Chọn giao diện từ xa cho Session Bean
⦁ Khi tạo session bean với giao diện từ xa, các thư mục được tạo như trong hình 3.11 trong NetBeans IDE.
Hình 3.11: Cấu trúc thư mục của mô-đun.3
3.3.2 Tạo phương thức kinh doanh
Sau đây là các bước cần thực hiện để tạo các phương thức kinh doanh trong session bean
⦁ Bấm đúp vào tệp bean, AdditionBean.java sẽ mở trong trình chỉnh sửa mã và thêm mã triển khai bean vào đó. Trong trình chỉnh sửa, nhấp chuột phải vào khu vực nơi doanh nghiệp
ods được xác định và nó sẽ bật ra một menu như trong hình 3.12
Hình 3.12: Chèn mã vào Session Bean
⦁ Chọn tùy chọn Chèn mã trong menu. Nó sẽ dẫn đến một menu khác như trong hình 3.13
Hình 3.13: Thêm phương thức kinh doanh
⦁ Chọn tùy chọn Thêm Phương thức Kinh doanh từ menu. Nó sẽ dẫn đến một màn hình hiển thị trong hình 3.14.
Hình 3.14: Tạo phương thức kinh doanh
Chọn các đặc điểm của phương thức bean, Theo định nghĩa trong hình 3.14, một phương thức nghiệp vụ có tên là 'add' đang được tạo có kiểu trả về là 'int'. Có hai tham số đầu vào của phương thức, a và b kiểu 'int'. Xác định các đặc điểm này và bấm OK
Thao tác này sẽ tạo mã trong các dasses AdditionBean và AdditionBeanRemote như thể hiện trong hình 3.15 và 3.16 tương ứng.
Hình 3.15: Gói AdditionBean Class Beans
Hình 3.16: Giao diện AdditionBeanRemote
⦁ Sửa đổi mã mặc định được tạo bởi IDE trong phần bổ sung Bean để thực hiện thao tác cộng hai biến int. Đoạn mã 1 hiển thị mã sau khi sửa đổi.
Code Snippet 1 hiển thị gói chứa bean hiện tại. Chú thích Stateless ngụ ý rằng nó là một bean không trạng thái để nó có thể được triển khai một cách thích hợp. Việc triển khai một bean không trạng thái được nhập từ gói javax.eb.Statalesa. Bean thực hiện giao diện từ xa AdditionBeanRemote.
⦁ Tạo một ứng dụng khách cho một phiên giao dịch
⦁ Tạo một ứng dụng khách có thể truy cập bean phiên. Để tạo một ứng dụng khách, hãy tạo một dự án mới với các tùy chọn như trong hình 3.17.
Hình 3.17: Tạo ứng dụng khách
⦁ Chọn Module3client làm tên cho ứng dụng khách và các tùy chọn khác như trong hình 3.18
Hình 3.18: Cấu hình ứng dụng khách
⦁ Tạo ứng dụng, máy khách sẽ dẫn đến lớp chính như hình 3.19. Gọi hạt đậu doanh nghiệp từ máy khách, nhấp chuột phải vào mã máy khách và chọn tùy chọn.
Hình 3.19: Gọi Enterprise Bean từ Ứng dụng khách
⦁ Khi chọn tùy chọn Cal Enterprise Bean, trình hướng dẫn hiển thị trong hình 3.20 sẽ xuất hiện, liệt kê tất cả các bean doanh nghiệp có sẵn.
Hình 3.20: Chọn Enterprise Bean được truy cập
⦁ Tiết kiệm mã của ứng dụng khách như được hiển thị trong Code Snippet 2.
Trong Code Snippet 2, giao diện từ xa được nhập vào mô-đun khách thông qua nhập Đậu. Addition Bean truy cập vào addBaan được sử dụng để gọi phương thức.
Khi triển khai và chạy ứng dụng khách, kết quả như trong hình 3.21.
Hình 3.21: Đầu ra khi chạy ứng dụng khách
⦁ Định cấu hình và triển khai phiên bean
Một Session bean có thể được cấu hình thông qua bộ mô tả triển khai và chú thích. ejb-jar.xml là bộ mô tả triển khai cho ứng dụng doanh nghiệp. Đây là một tệp XML khai báo chỉ định cấu hình yêu cầu của ứng dụng.
Thông tin triển khai xác định cách vùng chứa EJB quản lý bean khi được triển khai, thông tin này bao gồm loại phiên mà Session bean sẽ thiết lập, loại giao dịch được hỗ trợ, v.v
Code Snippet 3 hiển thị một bộ mô tả triển khai chung
Trong Đoạn mã 3, cấu hình của AdditionBean được xác định. Lớp thực hiện EJB là Beans. Bổ sungBean.
Phần tử <ejb-class> đại diện cho tên lớp Java mà thông qua đó Session bean được triển khai. Phần tử <session-type> xác định kiểu bean đang được triển khai, trong trường hợp này, nó là một bean phiên không trạng thái. Phần tử loại giao dịch> xác định phương pháp quản lý giao dịch có thể áp dụng. Trong trường hợp này, việc quản lý giao dịch được xác định thông qua vùng chứa.
Loại phiên là không trạng thái và giao dịch được quản lý bởi vùng chứa. Tuy nhiên, mã bộ mô tả triển khai này là mã một phần.
Không có nhận xét nào:
Đăng nhận xét