Thứ Tư, 28 tháng 12, 2016

EJB - 2. Sử dụng Session Bean

I. Để tạo ra một ứng dụng EJB mới, thực hiện các bước sau đây trong NetBeans IDE:

1. Chọn File => New Project. Sau đó chọn danh mục Java EE và kiểu project là Enterprise Application. Nhấn Next.

2. Đặt tên project là EJBDemo. Nhấn Next.

3. GlassFish Server 4.1 được chọn làm máy chủ. Sau đó chọn phiên bản Java EE 7. Nhấn Finish.

4. Thành công trong việc tạo một ứng dụng này.

II. Để tạo một Session Bean mà được truy cập bằng cách sử dụng chế độ Local, thực hiện các bước sau đây trong NetBeans IDE:

1. Nhấp chuột phải vào EJBDemo-ejb và chọn New => Other. Chọn danh mục Enterprise JavaBeans và loại tập tin là Session Bean. Nhấn Next.

2. Chỉ định thông tin Session Bean như sau và sau đó nhấn Finish:

3. Thêm dòng code vào giao diện SayHelloSessionBeanLocal để khai báo phương thức sayHello.
SayHelloSessionBeanLocal.java là giao diện Local của Session Bean mà NetBeans tự động tạo ra.

4. Thực hiện phương pháp sayHello trong lớp SayHelloSessionBean.
Nhận thấy rằng lớp SayHelloSessionBean thực hiện giao diện Local là SayHelloSessionBeanLocal.

5. Nhấp chuột phải vào EJBDemo và chọn Deploy.

6. Deploy thành công.

III. Để tạo một Servlet, thực hiện các bước dưới đây trong NetBeans IDE.

1. Nhấp chuột phải vào EJBDemo-war và chọn New => Other. Sau đó chọn danh mục Web và loại tập tin là Servlet. Nhấn Next.

2. Chỉ định thông tin Servlet như sau và sau đó nhấn Finish:





3. Thực hiện thay đổi cho lớp SayHelloServlet.
Nhấn Alt + Insert rồi chọn Call Enterpise Bean. Sau đó nhấn OK.
Thành công trong việc tạo.

4. Thay đổi phương thức ProcessRequest của SayHelloServlet.

IV. Để tạo một JSP, thực hiện các bước dưới đây trong NetBeans IDE.

1.Trong index.html, sửa đổi trong thẻ title của trang và thêm một thẻ form trong thẻ body.

2. Nhấn chuột phải thư mục Web Pages trong EJBDemo-war. Chọn New => JSP rồi đặt tên file là sayhello. Sau đó nhấn Finish.

3. Trong sayhello.jsp, chúng ta sẽ thực hiện sửa đổi như sau.

V. Output:

1. Nhấp chuột phải vào EJBDemo và chọn Run.

2. Chạy thành công. Nhập tên trong textbox rồi nhấn Send.
 index.html

sayhello.jsp


Chủ Nhật, 25 tháng 12, 2016

EJB - 1. Miêu tả lại về công nghệ của Java EE và EJB

A. Java EE:
"Java EE" tên đầy đủ là "Java Enterprise Edition" dịch sang tiếng việt có nghĩa là là "Java Phiên Bản Doanh Nghiệp", nó là một nền tảng dành cho việc xây dựng các ứng dụng cấp doanh nghiệp.
Java EE tập hợp nhiều công nghệ kỹ thuật và phối hợp chúng với nhau, việc này sẽ làm giảm đáng kể chi phí và độ phức tạp cho việc xây dựng, phát triển, triển khai, quản lý các tầng làm việc (managing multi-tier), cho các ứng dụng máy chủ trung tâm.

Java EE được xây dựng dưa trên nền tảng Java SE và có thêm các tập APIs (application programming interfaces) để phát triển các ứng dựng phái máy chủ một cách nhanh chóng, linh động, mạnh mẽ, khả năng mở rộng cao, đáng tinh cậy và bảo mật.

Java EE đã ra rất nhiều phiên bản và có rất nhiều thành phần mới hoặc hỗ trợ mới khác nhau theo từng phiên bản tuy nhiên bài viết này chỉ nhắm vào mục đích là khái miện cơ bản về Java EE, nên mình chỉ nói tới hai phần chủ chốt nhất trong nền tảng Java EE là:

  • Enterprise Java Beans (EJB): một thành phần kiến trúc của các ứng dụng server được quản lý, sử dụng để đóng gói các business logic của các ứng dụng. Kỹ thuật EJB cho phép nhanh chóng tạo ra các ứng dụng có các tính chất như là đơn giản hóa việc phân phối, dễ dàng tương tác, an toàn và linh hoạt dựa trên công nghệ Java.
  • Java Persistence API (JPA): một framework cho pháp nhà phát triển quản lý dữ liệu bằng cách sử dụng ánh xạ đối tượng quan hệ (Object Relational Mapping - ORM) trong các dứng dụng được xây dựng trên nền tảng Java

Nói tóm lại bạn có thể hiểu đơn giản Java EE là một nền tảng cung cấp nhiều công nghệ, kỹ thuật, dịch vụ giúp ta có thể nhanh chóng tạo ra các ứng dụng ở cấp doanh nghiệp, còn bạn muốn biết nó hỗ trợ như thế nào thì phải đi chi tiết vào thực tế mới có thể hiểu rõ được.

Một điều nữa khi nói tới ứng dụng doanh nghiệp thì sẽ liên quan tới services và client chính vì thế Java EE thiên về hướng Server-Client.


B. EJB:
EJB (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 business logic và hỗ trợ mạnh việc thực hiện các giao tác và bảo mật.


Session Bean: Nếu đối tượng Bean chỉ thực hiện các hành vi xử lý, tính toán đơn thuần thì chúng được phân loại thành Bean thao tác. Nó chỉ có nhiệm vụ phục vụ hành khách, nơi triệu gọi đối tượng. Trong một phiên kết nối, những thao tác nhất thời không đòi hỏi việc thể hiện dữ liệu thường bao gồm: tính toán, phân tích, thống kê... Bean thao tác được chia làm 2 loại:
  • Stateless: Là các thành phần Bean không lưu lại trạng thái của giao dịch trước đó để sử dụng cho lần giao dịch sau. Bean thao tác phi trạng thái là đối tượng Bean đơn giản, dễ dùng, dễ thiết kế và quản lý nhất trong tất cả các đối tượng ejb.
  • Stateful: Bean thao tác lưu vết trạng thái là các thành phần Bean cần lưu lại vị trí của giao dịch trước đó để sử dụng cho các lần giao dịch sau. Các Bean này thường phục vụ cho các thao tác đòi hỏi phải qua nhiều bước triệu gọi trước khi trả về kết quả cuối cùng.
Entity Bean: Đối tượng thường mô tả một thực thể nào đó trong đời thực. Nó cung cấp một đối tượng xem xét dữ liệu trong cơ sở dữ liệu. Thông thường Bean đại diện cho một hàng trong tập hợp các bảng của cơ sở dữ liệu quan hệ. Một Bean thực thể thường phục vụ nhiều hơn một Client. Không giống như Bean thao tác, Bean thực thể thì tồn tại lâu hơn. Chúng duy trì một trạng thái tồn tại miễn là dữ liệu còn trong cơ sở dữ liệu, hay nói đúng hơn miễn là còn Client riêng biệt cần đến nó. Việc quản lý dữ liệu được chia ra làm 2 loại:
  • Bean Managed: Có khả năng thực thi các câu truy vấn cơ sở 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ào các bảng trong cơ sở dữ liệu.
  • Container Managed: Có thể không cần phải sử dụng lệnh SQL để tự tìm kiếm hạy tạo mới dữ liệu mà nó thể hiện. Thay vào đó đối tượng Bean sẽ tự khai báo trong trường hay cột dữ liệu tương ứng với các bảng trong hệ quản trị cơ sở dữ liệu. Trình chứa sẽ tự động thực hiện công việc truy vấn dữ liệu.
Message-Driven Bean: Là một chuẩn mới. Mục đích là phục vụ cho nhu cầu về các dịch vụ không đồng bộ của các thành phần. Bởi vì Session và Entity chỉ phục vụ cho các dịch vụ đồng bộ. Do đó cách sử dụng Message Driven Bean có phần giống với Session Stateless Bean, chỉ khác ở cách gọi Bean.

Tóm lại đây là mô hình phân tầng và lập trình đối ợng rất hiệu quả cho các ứng dụng mạng Java. Chúng ta xây dựng đối tượng (được gọi là các thành phần Bean) hoạt động bên trong trình chứa. Trình chứa đóng vai trò điều khiển và làm trung gian trong giao tiếp giữa Bean và trình khách. Ngày nay công nghệ lập trình đã chuyển hướng rất nhanh sang mô hình lập trình mạng đa tầng. Hiểu vEJB sẽ giúp chúng ta dễ dàng sâu hơn. Cũng như lĩnh vực lập trình phân tán triệu gọi đối ợng từ xa, lập trình trong mô hình phân tầng EJB rất mới mvà khá phức tạp đối với hầu hết các lập trình viên.

Thứ Hai, 19 tháng 12, 2016

INTXML - DOM2

 - DOM Level 2 (DOM 2) được phát triển từ DOM Level 1 (DOM 1). Nó được xây dựng dựa trên các giao diện DOM 1
 - DOM 2 mô hình có 6 chi tiết kỹ thuật khác nhau:


 + Core: Mở rộng các chức năng của DOM1 Core. Nó cũng chứa các giao diện chuyên dụng dành riêng cho XML. Phương thức này bao gồm getElementById, nhiều phương thức liên quan đến namespace.
 + Views: Cho phép các chương trình và các kịch bản để truy cập tự động cập nhật nội dung của một tài liệu. Các giao diện được giới thiệu AbstractView DocumentView.
 + Events: Đưa ra một hệ thống sự kiện chung cho các chương trình và kịch bản. Phương pháp đặc biệt ở đây bao gồm addEventListener handleEvent. Một số giao diện khiến dễ dàng hơn khi giải quyết với các sự kiện như: EventTarget, EventListener, DocumentEvent, MouseEvent, MutationEvent, vv Tuy nhiên, nó không bao gồm một giao diện cho các sự kiện bàn phím, mà sẽ được xử lý trong các phiên bản sau này của DOM.
 + Style: Cho phép các chương trình và các kịch bản để truy cập tự động cập nhật nội dung của style sheets. có giao diện cho Style Sheets, Cascading Style Sheets, CSSRule, CSSStyleDeclaration, getComputedStyle (hỗ trợ trong Mozilla), CSS2Properties, và tất cả các quy tắc phương tiện truyền thông.
 + Traversal/Range: Cho phép các chương trình và các kịch bản để tự động đi qua và xác định một loạt các nội dung trong tài liệu. Các DOM2 Traversal cung cấp các giao diện như NodeIterator và TreeWalker để dễ dàng đi qua các nội dung của một tài liệu. Các DOM2 Range cho phép việc tạo ra, chèn, sửa đổi, và xóa một loạt các nội dung trong Document, DocumentFragment, hoặc Attr. Nó có thể được mô tả như là lựa chọn tất cả các nội dung giữa một cặp điểm ranh giới.
 + HTML: Cho phép các chương trình và các kịch bản để truy cập tự độngcập nhật nội dung, cấu trúc của tài liệu HTML. Nó mở rộng các giao diện được định nghĩa trong DOM1 HTML, sử dụng các khả năng DOM2 Core. Nó cũng giới thiệu về contentDocument property, một cách hữu ích để truy cập tài liệu chứa trong một khung.

=> Tóm lại DOM 2 trang bị các công cụ thực sự mạnh mẽ trong việc truy xuất, đọc và làm việc với tài liệu XML.

Thứ Bảy, 10 tháng 12, 2016

INTXML - DOM vs. SAX

I. XML là gì? Viết tắt của từ eXtensible Markup Language, hay còn gọi là ngôn ngữ đánh dấu mở rộng do W3C đề nghị với mục đích tạo ra các ngôn ngữ đánh dấu khác. Đây là một tập hợp con đơn giản có thể mô tả nhiều loại dữ liệu khác nhau nên rất hữu ích trong việc chia sẻ dữ liệu giữa các hệ thống.

II. Parser:
1. Khái niệm: Là 1 gói phần mềm, 1 thư viện hay 1 công cụ dùng để trước hết phân tích dữ liệu trong file XML và sau đó chuyển đổi dữ liệu này thành dạng dữ liệu mà các phần mềm khác có thể sử dụng được.
2. Các kỹ thuật phân tích:
- Phân tích dựa trên sự kiện (Event-based): Theo kỹ thuật này dữ liệu trong XML sẽ được đọc tuần tự từ trên xuống. Mỗi lần đọc 1 phần của dữ liệu sẽ được đưa vào phân tích ví dụ như 1 element. Simple API for XML (SAX) được xây dựng trên kỹ thuật này.
- Phân tích dựa trên đối tượng (Object-based): Theo kỹ thuật này dữ liệu trong XML sẽ được đọc và phân tích trên bộ nhớ. Document Object Model (DOM) được xây dựng theo kỹ thuật này.

III. Phân biệt: 
1. DOM:
- Document Object Model là một phương pháp tiếp cận dữ liệu từ XML, trong đó tất cả các thành phần của XML như thẻ, thuộc tính, text… đều được xem như là các đối tượng. Dựa vào các đối tượng này mà chúng ta có thể trích xuất thông tin, thay đổi thông tin hay truy vấn thông tin dựa vào các hàm mà đối tượng cung cấp. 
- W3C DOM là tiêu chuẩn mà W3School giới thiệu. Tiêu chuẩn này không phụ thuộc vào hệ điều hành hay ngôn ngữ lập trình. W3C DOM được chia làm 3 phần: Core DOM, XML DOM, HTML DOM.
- Tất cả các thành phần trong XML đều được xem như là 1 “node”. Trong đó root là document node, các thẻ là element node, thuộc tính là attribute node, text là text node, ghi chú là comment node… 
- Khi parser đọc XML thành đối tượng DOM trên bộ nhớ chúng ta sẽ có 1 cấu trúc cây với các đối tượng là các node và trên cấu trúc này chúng ta sẽ thấy mối quan hệ phân tầng giữa các node. Trên cùng là thẻ root (document node) từ node này chúng ta có thẻ rẻ nhánh đến các tầng thấp hơn của cấu trúc cây cho đến khi chúng ta chạm tới text node là tầng thấp nhất của cấu trúc này. - Mối quan hệ giữa các node được mô tả bằng thuật ngữ “parent” và “child” (cha và con). Thuật ngữ “leaf node” dùng để chỉ các node không có child node.
- Do DOM là tiêu chuẩn của W3School không phụ thuộc vào ngôn ngữ lập trình do đó tất cả các ngôn ngữ lập trình đều có thể dùng tiêu chuẩn này để đọc dữ liệu từ XML. 
- Ưu điểm:
+ Dễ dàng sử dụng.
+ Dễ dàng quét các phần tử trong XML.
+ Có thể truy xuất ngẫu nhiên.
- Nhược điểm:
+ Việc phân tích chỉ làm 1 lần.
+ Tốn nhiều bộ nhớ hơn.

2. SAX:
- Simple API for XML (SAX) là một phương pháp phân tích dữ liệu XML dựa vào sự kiện trong quá trình đọc file XML từ trên xuống dưới. Như vậy để dùng phương pháp này các ngôn ngữ lập trình cần định nghĩa ra các sự kiện và các hàm tương ứng với từng sự kiện. Khi đó người lập trình sẽ viết class dựa trên các hàm mà ngôn ngữ lập trình cung cấp và dùng class này để phân tích dữ liệu XML. Trong quá trình phân tích, khi gặp sự kiện nào parser sẽ gọi các đoạn code trong hàm tương ứng sự kiện để thực thi. Ví dụ như trong Java, khi parser gặp sự kiện mở thẻ, parser sẽ gọi lại các đoạn code trong hàm “startElement” để thi hành.
- Một điểm cần lưu ý rằng SAX không ghi nhớ XML như một cấu trúc cây trên bộ nhớ. SAX chỉ xây dựng cấu trúc của nhiệm vụ đang thi hành trên bộ nhớ do đó SAX sẽ thực hiện nhanh hơn và tốn ít tài nguyên hơn.
- Ưu điểm: Tốn ít bộ nhớ hơn.
- Nhược điểm:
+ Không có công cụ để quét các phần tử trong XML.
+ Không thể truy xuất ngẫu nhiên.
+ Không hỗ trợ namespace, không thể thêm sửa xóa XML.

=> Tóm lại SAX Parser bao giờ cũng nhanh hơn DOM Parser vì nó chỉ tải một phần nhỏ của tập tin XML và không đòi hỏi nhiều bộ nh.