Đề tài Enterprice Java Bean (EJB)

53 2.6K 1
Đề tài Enterprice Java Bean (EJB)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đề tài Enterprice Java Bean (EJB)

Đại Học Quốc Gia Thành Phố Hồ Chí Minh Trường Đại Học Công Nghệ Thông Tin  BÁO CÁO GIỮA KỲ MÔN XỬ LÝ PHÂN BỐ Đề Tài: Enterprice Java Bean (EJB) - Giảng viên :  Th.s Nguyễn Trác Thức - Sinh viên thực hiện :  Hoàng Văn Hà 09520074  Mai Văn Khải 09520133  Hồ Đức Lợi 09520162  Trần Trung Đức 09520067 TP.HCM, ngày 23 tháng 12 năm 2012 Lời Nói Đầu Enterprise Java Bean là các thành phần công nghệ phía máy chủ dùng để đóng gói lớp logic nghiệp vụ (business logic) và hổ trợ mạnh việc thực hiện các giao tác và bảo mật. Enterprise Java Bean cũng có một tích hợp một ngăn xếp cho messaging, scheduling, remote access, web service endpoints (SOAP and REST), dependency injection, component life cycle, vv. Ngoài ra, Enterprise Java Beans còn kết hợp với các công nghệ khác của Java SE và Java EE như JDBC, JavaMail, JPA, Java Transaction API (JTA), Java Messaging Service (JMS), Java Authentication and Authorization Service (JAAS), Java Naming and Directory Interface (JNDI), and Remote Method Invocation (RMI). Ngày nay Enterprise Java Beans là một cách đơn giản cho các việc phát triển các mô hình lập trình Java phía máy chủ, giảm độ phức tạp trong khi mang lại khả năng tái sử dụng và khả năng mở rộng tới các ứng dụng thương mại quan trọng. Tất cả những điều đạt được này đều xuất phát từ một lớp java nguyên thủy(Plain old Java Object-POJO) sẽ được triển khai vào một thùng chứa (container). Chính vì vậy, nhóm chúng em sẽ tìm hiểu và trình bày về Enterprise Java Bean. Do trong quá trình tìm hiểu ít tài liệu và gấp rút về thời gian nên có thể còn nhiều sai sót. Mong nhận được góp ý của thầy và các bạn. 3 | T r a n g Mục Lục Bảng phân chia công việc nhóm 5 I. Message Driven Bean 6 1.1. Một số khái niệm liên quan 6 1.1.1. Message 6 1.1.2. Đồng bộ và bất đồng bộ 6 1.1.3. Hệ thống EMS – Enterprise Message System 7 1.1.4. Hệ thống JMS - Java Message Service (Producer) 7 1.2. Message Driven Bean (Consumer) 11 1.2.1. Giới thiệu 11 1.2.2. Chu kỳ của Message Driven Bean 12 1.2.3. Consumer cho Topic Destination 13 1.2.4. Consumer cho Queue Destination 14 1.2.5. Producer cho Topic Destination 14 1.2.6. Producer cho Queue Destination 16 II. JAVA PERSISTENCE API 17 2.1. JDBC và ORM 17 2.1.1. JDBC là gì? 17 2.1.2. ORM là gì? 17 2.2. JPA là gì? 18 2.3. Entity 19 2.3.2. Entity 19 2.4. Persistence Context 24 2.5. Entity Manager 25 2.5.1. Thao tác với Entity 25 2.5.2. Persistence Unit 27 2.6. Java Persistence Query Language 27 2.6.1. JPQL là gì 27 2.6.2. Cấu trúc truy vấn JPQL 28 2.6.3. Các kiểu query 30 III. Transaction trong EJB 34 3.1. Transactions 34 3.2. Container – managed transaction 34 3.2.1. Khái niệm 34 3.2.2. Transaction attribute 36 3.2.3. Thiết lập transaction attribute 38 3.3. Bean – managed transaction 40 3.3.1. Khái niệm 40 4 | T r a n g 3.3.2. Các method hỗ trợ 41 3.3.3. Thiết lập transaction timeout với bean – managed transaction 41 3.4. Xử lý exception 42 3.4.1. Trường hợp EJB với bean – managed transaction 42 3.4.2. Trường hợp EJB với container – managed transaction 42 IV. EJB Security 43 4.1. Các khái niệm cơ bản 44 4.1.1. Tổng quan 44 4.1.2. Các cơ chế áp dụng trong Security 44 4.2. Mô hình J2EE Security 45 4.3. JAAS Framework 46 4.4. Security trên EJB 50 V. Tài liệu tham khảo 53 5 | T r a n g Bảng phân chia công việc nhóm stt Họ Tên thành viên Mã số sinh viên Công Việc 1 Hoàng Văn Hà 09520074 Tìm hiểu về JPA, Entity, JPQL 2 Hồ Đức Lợi 09520162 Tìm hiểu về EJB Security 3 Mai Văn Khải 09520133 Tìm hiểu về Message Driven Bean 4 Trần Trung Đức 09520067 Tìm hiểu về Transaction Processing Mỗi thành viên tự chuẩn bị cho slide và phần demo của mình! 6 | T r a n g I. Message Driven Bean 1.1. Một số khái niệm liên quan 1.1.1. Message Khi một client gọi phương thức trên máy ở xa thì bản chất nó đã tạo ra một request và thread/process của nó sẽ bị block lại để chờ response trở về và có thể làm trì hoãn quá trình xử lý, điểu này làm cho hiệu suất của chương trình bị giảm và độ tin cậy không cao. Thay vì thế người ta đưa ra cơ chế giao tiếp bằng cách chuyển thông tin qua định dạng dùng chung qua đối tượng trung gian và không cần mong kết quả trả về. Cơ chế này đòi hỏi phải có đối tượng trung gian để nhận và chuyển message độc lập với việc xử lý. Cơ chế này còn cho phép khả năng truyền message đến nhiều hơn một đối tượng nhận cùng một lúc (broadcast). Cơ chế này có hạn chế đó là làm quá tải đối tượng trung gian. - Đối tượng theo định dạng giao tiếp dùng chung đó là message. - Đối tượng trung gian đó là MOM – Message Oriented Middleware hay MQ – Message Queue Hỗ trợ cơ chế tương tự như DB với việc nhận và gửi message, đảm bảo toàn vẹn dữ liệu, transaction và cân bằng cho việc gửi nhận dữ liệu Nơi lưu trữ dữ liệu và tương tác với MOM có tên gọi là Destination 1.1.2. Đồng bộ và bất đồng bộ - Đồng bộ (synchronous): giao tiếp đồng bộ sảy ra khi cả hai bên liên lạc trực tiếp với nhau. Người nhận thông điệp xử lý và sau đó phải ngay lập tức gửi thông điệp phản hồi lại cho người gửi để người gửi tiếp tục thực hiện công việc 7 | T r a n g - Bất đồng bộ (asynchronous) sảy ra khi cả hai bên giao tiếp không liên hệ trực tiếp với nhau. Người nhận xử lý thông điệp bất cứ khi nào nó nhận được và không cần gửi thông tin phản hồi về lại cho người gửi. 1.1.3. Hệ thống EMS – Enterprise Message System EMS cung cấp cơ chế gửi nhận message đồng bộ và bất đồng bộ. Người gửi gửi message đến middleware, middleware tự chuyển message đến người nhận. Hệ thống EMS có thể nhìn tương đương cuộc sống thực tế chính là hệ thống gửi nhận SMS của chúng ta theo cách nhìn đó là điện thoại gửi tin nhắn cho nhau thông qua tổng đài, và máy chúng ta nhận tin nhắn tự động là do tổng đài đưa tin nhắn đến máy. Bên cạnh đó, người nhận tin nhắn không cần bật điện thoại tại thời điểm gửi. Hệ thống EMS cũng giống tương tự hệ thống khác đó là email, cho phép lưu trữ message và sau đó người dùng sử dụng account với quyền xác thực truy cập vào mail server để lấy thông tin về message theo nghĩa chúng ta không gửi mail cho nhau mà gửi thông qua object trung gian 1.1.4. Hệ thống JMS - Java Message Service (Producer) Java Message Service (JMS) là một API cho phép truy cập vào hệ thống nhắn tin bất đồng bộ. JMS cung cấp 2 môi trường lập trình là điểm-điểm (Point-to-Point) và Xuất bản và đăng ký (publish-and-subscribe). 8 | T r a n g - Mô hình Point-to-Point messaging dùng cho việc chuyển giao các thông điệp theo kiểu 1-1, tức là mỗi client chỉ được gửi một thông điệp đến một server. Nó được xây dựng dựa trên khái niệm message queue (hàng đợi thông điệp). Mỗi thông điệp được gửi tới một hàng đợi được chỉ định; clients nhận các thông điệp từ hàng đợi được thiết lập để giữ các thông điệp này. Hình sau chỉ cho chúng ta vài tình huống trong cơ chế truyền thông điệp Point-to-Point. Như chúng ta thấy trong hình trên, một hàng có thể có nhiều người gửi thông điệp và có nhiều người nhận nhưng chỉ 1 người nhận được nhận một thông điệp trong hàng đợi. Tuy nhiên, trong Point-to-Point model, client có thể chọn thông điệp mà nó cho phép viếng thăm nhưng không lấy giá trị (peek). - Mô hình Pub/Sub messaging dùng cho việc phát tán các thông điệp (one-to-many broadcast). Nó được xây dựng trên khái niệm về chủ đề các thông điệp (message 9 | T r a n g topic). Mỗi thông điệp được đăng (publish) lên 1 chủ đề (topic) sẽ được phát tán cho tất cả các clients mà có đăng ký (subscibe) chủ đề này. Đối tượng Topic được đóng gói trong 1 tên được chỉ định bởi nhà cung cấp dịch vụ. Điều này tương tự như khái niệm newsgroups, user đăng ký chủ đề mà mình yêu thích, mỗi user sẽ nhận được 1 bản copy của thông điệp đăng lên newsgroup mà mình đăng ký. Hình sau chỉ cho chúng ta một số tình huống của cơ chế truyền thông điệp Pub/Sub. Trong mô hình Pub/Sub, một JMS client có thể là 1 durable subscriber để có thể ngắt kết nối và sau này kết nối lại để lấy các thông điệp mà mình đã đăng ký. JMS API cung cấp tất cả mọi chức năng hỗ trợ tạo, thêm, xóa, gửi và nhận message.  Đích đến (Destination) Message được gửi đến các điểm đến logic chứ không phải các điểm đến vật lý, producer và consumer không biết nhau. Producer gửi message đến một đích đến logic, nơi mà consumer đã đăng ký. Các máy chủ thông điệp chịu trách nhiệm cho việc định tuyến các tin nhắn được gửi đến một địa điểm cụ thể cho consumer đăng 10 | T r a n g ký. Có hai loại đích đến đó là Topic và Queue tương ứng với 2 mô hình (Đã trình bày ở trên)  Cấu hình cho Destination - Topic Destination  Tạo một file xml trong thư mục deploy của JBOSS (…\server\default\deploy). Tên file nên kết thúc với -service.xml  Nội dung của file lưu giữ têm của topic destination. Ví dụ : file: deploy\myTopic-service.xml <server> <mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.mq.destination:service=Topic,name=myTopic"> <attribute name="JNDIName">myTopic</attribute> <depends optional-attribute-name="DestinationManager"> jboss.mq:service=DestinationManager </depends> </mbean> </server> - Queue Destination Tạo một file xml trong thư mục deploy của JBOSS (…\server\default\deploy). Tên file nên kết thúc với -service.xml Nội dung của file lưu giữ têm của topic destination. Ví dụ : file: deploy\myQueue-service.xml <server> <mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=myQueue"> <attribute name="JNDIName">myQueue</attribute> <depends optional-attribute-name="DestinationManager"> jboss.mq:service=DestinationManager </depends> </mbean> </server> [...]... Topic Destination file: hellomsg/MyTopicMessageBean .java package hellomsg ; import javax.jms.* ; import javax.ejb.* ; @MessageDriven(activationConfig={ @ActivationConfigProperty( propertyName="destination", propertyValue="myTopic") , @ActivationConfigProperty( propertyName="destinationType", propertyValue="javax.jms.Topic") }) public class MyTopicMessageBean implements MessageListener{ public void onMessage(Message... Queue Destination file: hellomsg/MyQueueMessageBean .java package hellomsg ; import javax.jms.* ; import javax.ejb.* ; @MessageDriven(activationConfig={ @ActivationConfigProperty( propertyName="destination", propertyValue="myQueue") , @ActivationConfigProperty( propertyName="destinationType", propertyValue="javax.jms.Queue") }) public class MyQueueMessageBean implements MessageListener{ public void onMessage(Message... entity sẽ tương ứng với một class Java (đối tượng kiểu POJO - plain old java object) Lớp này đại diện cho một bảng (table) trong CSDL còn thể hiện của class (instance) tương ứng cho một dòng (record) của bảng POJO là khái niệm trong Java dùng để chỉ những đối tượng Java không kế thừa và cài đặt từ một số lớp đặc biệt Do đó, phần lớn các đối tượng Java bình thường đều là POJO Ví dụ về lớp không phải... ejb-jar.xml: Container Annotation: import javax.ejb.Stateless; import javax.ejb.TransactionManagement; import javax.ejb.TransactionManagementType; 35 | T r a n g hoặc @Stateless @TransactionManagement(TransactionManagementType.CONTAINER) public class EmployeeDetailBean implements EmployeeDetailLocal... JDBC 2.2 JPA là gì? Java Persistence API (JPA) là một đặc tả Java dùng cho việc truy xuất, lưu trữ/truy vấn và quản lý dữ liệu giữa các đối tượng Java/ class với CSDL quan hệ JPA được định nghĩa là một phần của đặc tả EJB 3.0 như là thay thế cho đặc tả EJB 2CMP Entity Bean JPA đang được cân nhắc trở thành chuẩn trong cách tiếp cận Object to Relation Mapping (ORM) trong ngành công nghiệp Java JPA chỉ là... được gửi bởi client sẽ được xem như là tham số đầu vào của hàm Hàm ejbRemove() và hàm setMessageDrivenBeanContex(…) được sử dụng bởi contener để thông báo bean transaction trong các bean trạng thái với contener 1.2.2 Chu kỳ của Message Driven Bean MDBs có chu kỳ sống tương tự như stateless session beans MDBs hoặc là ở trong trạng thái “Không tồn tại” hoặc ở trong trạng thái “pooled” Điều này cho phép... JAVA PERSISTENCE API 2.1 JDBC và ORM Trong phần này chúng ta sẽ so sánh sự giống và khác nhau giữa công nghệ JDBC và công nghệ ORM Cả 2 công nghệ này đều dùng để lưu trữ CSDL vào kho lưu trữ lâu dài để dùng về sau 2.1.1 JDBC là gì? JDBC là từ viết tắt cho Java Database Connectindentification variableity, là một tập các Java API dùng cho việc truy xuất vào các cơ sở dữ liệu quan hệ từ chương trình Java. .. với mỗi lời gọi method của bean Đối với một bean tham gia vào Container – managed transaction, các transaction attribute được thiết lập trong deployment descriptor hoặc annotation của bean Có thể thiết lập một transaction attribute cho toàn bộ bean hoặc cho từng method Một transaction attribute phải được xác định đối với các method trong remote interface của một session bean và đối với các method trong... trường dữ liệu trong CSDL còn JPQL làm việc với các class và object Java Do đó JPQL có thể truy vấn để lấy về một danh sách các object entity hơn là trả về dữ liệu các trường của bảng như trong SQL Điều này làm trong JPQL trở nên thân thiện và dễ dùng hơn trong Java Như SQL, JPQL cũng có 6 mệnh đề chính: Trong đó SELECT và FROM là 2 mệnh đề bắt buộc còn GROUP BY, HAVING và ORDER BY là tùy chọn Cấu trúc... ta có thể lưu trữ và lấy được Ví dụ trong ứng dụng ngân hàng, khách hàng và tài khoản được xem như là các entity Tên khách hàng, địa chỉ khách hàng là những thông tin logic được nhóm lại với nhau đại diện cho entity Khách hàng Tương tự, số tài khoản, số tiền trong tài khoản … là những thông tin logic được nhóm lại dưới entity Tài khoản 2.3.2 Entity Trong đặc tả JPA, một Entity được xem là một persistent . ra, Enterprise Java Beans còn kết hợp với các công nghệ khác của Java SE và Java EE như JDBC, JavaMail, JPA, Java Transaction API (JTA), Java Messaging. Thông Tin  BÁO CÁO GIỮA KỲ MÔN XỬ LÝ PHÂN BỐ Đề Tài: Enterprice Java Bean (EJB) - Giảng viên :  Th.s Nguyễn Trác Thức - Sinh viên

Ngày đăng: 09/03/2014, 17:29

Tài liệu cùng người dùng

Tài liệu liên quan