PDA

View Full Version : Thế nào là EJB ?



quangvu
22-11-2002, 15:22
Xin lỗi ,
Qua vài thảo luận trong Box ,mình phát hiện có hơi nhiều bạn không biết gì hay biết hơi ít về EJB .
Kì thực ,EJB khá đơn giản nếu bạn không cố hiểu theo kiểu "Sách bảo sao,tôi nghe vậy".
Do đó ,mình Post bài này lên "phát pháo" cho cuộc tranh luận về EJB này .
*** Chú ý : những gì các bạn đưa ra có thể là cảm nhận của các bạn (đều này quan trọng) và không bắt buộc phải đúng vì đây là cuộc thảo luận mà.
*** "Học thầy không tài học bạn" ,hy vọng có nhiều đều bổ ích cho các bạn.

conlagia
22-11-2002, 17:18
Bây giờ, làm sao mà set, read properties cho tất cả EJBs trong một app? Tui đã nghĩ đến một cái gì đó tương tự như jndi-definitions.xml (không chắc lắm!!!)

cám ơn lắm lắm!

conlagia
22-11-2002, 17:27
EJB là một đối tượng server-side trong một client-server application, nó thực thi trong một cái gọi là "container". Nó còn có một cách gọi khác là application server .

Không biết hiểu thế có đúng không nhỉ?

Diamond
23-11-2002, 21:43
:D
EJB là các đối tượng hoạt động trong trình chứa EJB của máy chủ J2EE. Đây là điểm khác biệt giữa J2SE (không có EJB) và J2EE. Nó cung cấp các dịch vụ như hỗ trợ xử lý giao dịch (transaction), phân tán,...nhằm giúp các nhà phát triển viết các ứng dụng qui mô Enterprise hiệu quả hơn, mang tính scalable hơn và phân tán. EJB được chia làm hai loại chính là Entity Bean, và Session Bean (còn có Message Driven nữa nhưng mình chưa dùng bao giờ). Không giống như JavaBean, có giao diện đồ hoạ với người dùng visual JavaBean, EJB được thiết kế cho qui mô xí nghiệp, cung cấp các dịch vụ tính toán, xử lý phức tạp, phân tán cho các ứng dụng client.

Entity Bean được thiết kế nhằm mô hình hoá dữ liệu trong CSDL thành các đối tượng phân tán, có thể triệu gọi từ xa theo cơ chế RMI-IIOP. Nó ánh xạ 1-1 với dữ liệu trong database. Entity có thể tự quản lý việc truy xuất dữ liệu hay giao cho trình chứa quản lý.

Session Bean có hai loại chính là Stateless và Statefull. Các Bean này không thể hiện dữ liệu, mặc dầu có thể truy xuất dữ liệu. Theo đề nghị của Sun, các ứng dụng có dùng EJB nên truy xuất Entity Bean thông qua Session Bean.

Một số máy chủ có trình chứa EJB hiện nay là J2EE SDK, BEA WebLogic, JRun, JBoss...Nếu chỉ dùng Tomcat bạn chỉ có thể dùng JavaBean chứ không thể dùng EJB. JBoss và J2EE SDK đều tích hợp Tomcat cho phép chạy các JSP, servlet bên cạnh trình chứa EJB.

Để gọi một JavaBean, bạn cần cung cấp đầy đủ tên lớp cài đặt. Còn để gọi EJB, bạn phải thông qua dịch vụ JNDI, bằng cách cung cấp một JNDI name mà người tạo EJB đã đặt khi triển khai nó.

lol

hellsing1986
05-05-2009, 11:27
Bạn Diamond hơi nhầm về EJB rùi
Mình có vài kiến thức về EJB như sau

EJB viết tắt của Enterprise JavaBeans ( tui không dịch )
Nó có đặc điểm cơ bản sau
+ nằm trong lòng các container chính là các application server phía server side ( điển hình là JBOSS và GlassFish )
+ chỉ giao tiếp với các chương trình viết bằng java ( có giao tiếp với webservice viết bằng Java ) miễn là thông qua JNDI các chương trình đó tìm được đúng Bean cần dùng

Về các loại Bean trong EJB
Bean thực ra tương đương với remote component trong .NET nó có 3 loại chính ( có thể chia ra làm 5 loại )

+ Stateless Session Beans : ( loại thứ nhất của Session Bean )nôm na là nó chứa các nghiệp vụ logic mà public ra bên ngoài cho phép các hệ thống khác có thể truy nhập.
+ Stateful Session Beans : ( loại thứ haicủa Session Bean ) giống với loại trên nhưng 2 loại bean này khác nhau đúng 1 điểm : nếu giữa các người dùng sử dụng đến thuộc tính của Session Beans thì với Stateful Session Beans, lần sử dụng sau vẫn lưu giá trị của lần trước đối với người dùng đó còn Stateless Session Bean thì không phân biệt

Nôm na là : nều bạn muốn xài biến Session như viết web asp thì nó chính là Stateful Session Beans, còn nếu bạn muốn biến global thì nó sẽ là Session Beans.

+ Bean Managed Persistent Entity Bean ( BMP )
+ Container Managed Persistent Entity Bean ( CMP )

Hai loại trên dùng để ánh xạ 1 bản ghi trong csdl ở đâu đó mà Application có thể giao tiếp, hoặc đơn giản chỉ là 1 csdl bằng text do bạn tự quy định. CSDL ở đây có thể là tất cả những ghi có thể lưu trữ thông tin
Hai loại này khác nhau đúng chữ "Bean" và "Container". Nó cũng nói lên đặc điểm khác nhau điển hình của chúng. đó là : BMP việc giao tiếp csdl bạn phải tự quan lý ( tự code ), CMP việc giao tiếp csdl là tự động bạn chỉ cần khai báo cấu hình cho bean này ánh xạ đến csdl
Vì vậy CMP giới hạn hơn BMP vì nó chỉ có thể giao tiếp với các hệ quản trị csdl, còn BMP do các bạn viết code nên nó có thể lưu cả trên file txt, xml, excel ... miễn lưu được dữ liệu.
Và SUN cũng khuyên chúng ta cho các client sử dụng BMP và CMP thông qua các loại Session Bean
+ Message driven Bean : loại Bean này Sun đưa vào trong hệ thống EJB theo tôi thì nó là con nuôi của Beans :). Vì khi triển khai code Bean thì loại này chẳng giống gì 4 loại Bean trên. Tuy nhiên nó rất quan trọng. Các hệ thống ngân hàng giao tiếp thanh toàn tài khoản với nhau chỉ dùng message cho nên đây là đất võ của Message driven Bean.
Có 2 loại Bean trong Message driven Bean và các loại Bean này năm trong MOM (Message Oriented Middleware)
Hai loại đó là Queue và Topic. Ứng với mỗi loại Bean này MOM có 2 loại hàng đợi phù hợp cho nó.
Quese thì chỉ cho 1 client gửi 1 message tới 1 người ( ví dụ chat yahoo )
Topic thì chỉ cho 1 client gửi 1 message tới nhiều người ( ví dụ chat room trong yahoo )
miễn là người nhận có đăng ký với hàng đợi message.
----------------------------------------------------
cụ thể hoạt động của mỗi loại Bean thì rắc rối nhưng 4 loại trên thì cùng nguyên tắc, JMS có nguyên tắc khác.

tungyamaha
23-12-2009, 20:20
theo t thì EJB được hiểu như một kiến trúc lập trình phân tầng trong nền java.Các đối tượng EJB không dùng để thể hiện giao diện mà nó thực hiện những chức năng tính toán xử lý,kết nối cở sở dữ liệu đưa ra kết quả và giải pháp thiết thực cho doanh nghiệp.(còn mô hình ứng dụng phân tầng EJB như thế nào thì ... nói sao nhỉ? Trình chủ kết nối với dịch vụ web. Dịch vụ web sẽ thay mặt trình khách triệu gọi các ứng dụng web như: CGI, Servlet hoặc trang web điều khiển Jsp. Các thành phần điều khiển web này(web component) sẽ triệu gọi các đối tượng object trong môi trường EJB. Các đối tượng object trong môi trường EJB sẽ thực thi những yêu cầu như: xử lý các tính toán phức tạp, triệu gọi những đối tượng phân tán khác, truy xuất cơ sở dữ liệu ....Các đối tượng (gọi tắt là các đối tượng EJB) hoạt động dưới sự điều khiển( hay bên trong) một trình chứa (container). Nhiệm vụ của trình chứa là bảo vệ và thực hiện các tác vụ kiểm soát đối tượng EJB (khởi tạo, cấp tài nguyên, hủy đối tượng...))
- Các đối tượng của EJB gồm : Session Bean và Entity Bean.
- Trong Session Bean thì nó chia ra làm hai loại là :Stateless Bean và stateful bean( Bean thao tác phi trang thái và Bean thao tác lưu vết trạng thái)
- Entity Bean : cũng chia làm hai loại (Bean thực thể tự quản lý (Bean Managed)và Bean thực thể quản lý bởi trình chứa(container Managed))
- Bean thực thể tự quản lý (Bean Managed) Là các thành phần bean có khả năng tự truy vấn dữ liệu để lấy về dữ liệu mà nó thể hiện. ví dụ trong phương thức khởi dựng bean thực thể có thể dùng các câu lệnh SQL như select, insert(thông qua JDBC) để tự tìm hoặc thêm mới dữ liệu mà nó thể
hiện và các bảng trong cơ sở dữ liệu.
- Bean thực thể quản lý bởi trình chứa(container Managed)
Thành phần Bean có thể không cần phải sử dụng lệnh SQL để tự tìm kiếm hay tạo mới dữ liệu mà nó thể hiện. thay vào đó đối tượng bean chỉ cần khai báo các tên trường(fiel) hay cột dữ liệu tương ứng với các bảng table trong hệ cơ sơ dữ liệu. trình triếu container sẽ tự động thực hiện công việc truy vấn dữ liệu giúp thành phần bean. Đối tượng Bean thể hiện dữ liệu theo kiểu thể hiện dữ liệu theo kiểu này được gọi là bean thực thể quản lý bởi trình chứa.
............ ohayooooo còn nhiều cái để nói lém.....

freshgraduate09
25-12-2009, 16:11
thay vì gõ nhiều vậy, các bạn nên tìm 1 cái hình mô hình EJB, có các dòng comment chi tiết, vậy là đủ cho thiên hạ hiểu rồi, để thời gian làm chuyện khác có ích hơn. Không chỉ java mà các lĩnh vực khác cũng thế, hãy thể hiện qua mô hình hơn là text text text...

U.F.O
27-03-2010, 16:11
Cái JNDI gọi ra kiểu j nhỉ >"<

ntdung89dn
28-03-2010, 08:30
Tạo ra 1 Property, gán propeties đó vào Content rồi dùng lookup

beghiengame
15-06-2011, 20:49
Linh hồn của JAVA mà lại ngắn gọn quá .
Hình như biến thể của CMP là CMR thì phải:D

[=========> Bổ sung bài viết <=========]


Cái JNDI gọi ra kiểu j nhỉ >"<

Tùy theo bạn dùng nó trong trường hợp nào!

dauhalan88
30-06-2011, 10:36
em không biết về cái này nhiều lắm nhưng mà cũng hiểu được định nghĩa của noa thông qua sự chia sẻ của các bạn thank các bạn nha

Linkin_Park
25-07-2011, 23:50
nói chung mấy bác giải thích rất dễ hiểu, tiếp thu kiểu này nhanh hơn là đọc sách vở :D .

dauhalan88
12-08-2011, 12:03
không thể nói ngắn gọn mà người khác có thể hiểu được đâu bạn ơi phải có một bài poss thật dài về nói thì mới được

minhdang91
12-08-2011, 17:03
lần đầu tiên em nghe luông nên không hiểu là cái gì cả

hip2412
19-08-2011, 13:29
Mình cũng đang quan tâm đến vấn đề này.....

honhattan
09-02-2012, 16:16
Theo mình biết thì kiến trúc EJB chỉ dùng cho những ứng dụng lớn thôi, còn các ứng dụng nhỏ và vừa thì không nên dùng vì nó thực sự rất cồng kềnh.