Spring ra đời với mục đích làm đơn giản hóa, thay thếcác thành phần phức tạp và không quá cần
thiết trong J2EE, mà cụthể đó là EJB - "EJB thì có giá trịcủa nó, nhưng không phải lúc nào cũng
cần thiết và phù hợp cho tất cảcác ứng dụng".
Trong khi EJB thì cứng và cốgắng làm mọi thứ, một vài công việc tốt nhưng một sốthì không.
Spring chỉsửdụng Java Bean và thông qua một sốkỹthuật đặc biệt đểcung cấp nhiều chức năng
nhưEJB, bằng cách tích hợp với một sốkỹthuật open source khác.
Theo kiến trúc đa tầng của J2EE, Spring đảm nhận công việc ởtầng Business. Đểsửdụng Spring
theo J2EE cần kết hợp với các framework ởcác tầng liên quan là: tầng Presentation (Struts,
JSF,.), và tầng Persistence (Hibernate, JDBC,.). Thực tếSpring cũng hỗtrợcho các tầng
Presentation và Persistence, nhưng khảnăng không bằng các framework khác nhưStruts, JSF,
Hibernate,.
66 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 4064 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Một số vấn đề về công nghệ Java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TP (Request/Response, POST/GET Method)
• Servlet Configuration: Khởi tạo một số thông tin cấu hình cần thiết cho Servlet, cho ứng
dụng web
• Servlet Context: Khởi tạo một số tham số cho Servlet, cho ứng dụng web
• Thư viện hỗ trợ: javax.servlet,*; javax.servlet.http.*;
4.1.3. JSP
a. Đặc điểm
JSP ra đời nhằm cải tiến hạn chế của Servlet trong vấn đề thiết kế giao diện của ứng dụng. Bản
thân JSP là các trang HTML có nhúng mã Java để thực hiện các thao tác nghiệp vụ, kết nối
CSDL,... Khác với trang web truyền thống được WebServer gửi trực tiếp cho Client, các trang JSP
phải được thi hành thông qua Engine (JSP Container), ở đó các mã Java được tách ra, xử lý, kết
quả chuyển thành HTML trước khi trả về cho Client.
Thực tế mọi trang JSP đều được dịch sang Servlet và được thực thi trong WebServer, đây chính là
mối quan hệ mật thiết giữa Servlet và JSP như đã đề cập ở trên.
Các đặc điểm nổi bật của JSP:
• Mang đầy đủ những ưu điểm của ngôn ngữ Java
• Mang đầy đủ những ưu điểm của Servlet
Java overview
Trang 30/66
• Giúp cho quá trình phát triển, triển khai, bảo trì ứng dụng Web được dễ dàng hơn
• Đơn giản quá trình phát triển với các thẻ, thư viện: taglib, bean,...
b. Các vấn đề liên quan tới JSP
• WebServer hỗ trợ JSP (Tomcat)
• Vòng đời JSP: Init, Service, Destroy
• Giao thức HTTP (Request/Response, POST/GET Method)
• Các thẻ JSP
• Sử dụng taglib trong JSP >> độc lập design giao diện
• Các đối tượng "ngầm" trong JSP
4.1.4. Quan hệ Servlet, JSP
a. Sự khác nhau
• Phong cách viết mã: Pure Java Nhúng mã Java.
• Servlet phải dịch sang class, JSP được WebServer đảm nhận.
• JSP chỉ là một phiên bản đơn giản của Servlet, được compile ra Servlet
• JSP mềm dẻo hơn Servlet
b. Kết hợp Servlet, JSP
Client gửi yêu cầu tới WebServer, Servlet tiếp nhận, xử lý yêu cầu trả lại kết quả vào trong bean.
JSP truy xuất bean, gửi kết quả (HTML) tới Client.
4.2. JavaScript, CSS, Ajax
4.2.1. JavaScript
Hãng Netscape đã đưa ra ngôn ngữ script có tên là LiveScript để thực hiện chức năng đáp ứng
yêu cầu từ phía người dùng. Sau đó ngôn ngữ này được đổi tên thành JavaScript để tận dụng tính
đại chúng của ngôn ngữ lập trình Java. Mặc dù có những điểm tương đồng giữa Java và
JavaScript, nhưng chúng vẫn là hai ngôn ngữ riêng biệt.
JavaScript là ngôn ngữ dưới dạng script có thể gắn với các file HTML. Nó không được biên dịch
mà được trình duyệt diễn dịch. Không giống Java phải chuyển thành các mã dễ biên dịch, trình
duyệt đọc JavaScript dưới dạng mã nguồn.
Tuy không phải là ngôn ngữ hướng đối tượng do không hỗ trợ các lớp, không có tính kế thừa
nhưng JavaScript cũng được viết dựa trên các đối tượng. Và giống như Java, JavaScript độc lập
với hệ nền, nó có thể chạy trên bất cứ OS nào có trình duyệt hỗ trợ nó.
Hiện nay JavaScript được dùng chủ yếu nhúng trong các file HTML nhằm:
Java overview
Trang 31/66
• Kiểm tra dữ liệu ở phía Client. Việc kiểm tra dùng JavaScript như vậy sẽ nhanh chóng, tăng
tốc độ ứng dụng nhưng cần chú ý đến khả năng hỗ trợ JavaScript của trình duyệt
• Nâng cao tính mỹ thuật của trang web nhờ các hiệu ứng do JS tạo ra
Các vấn đề liên quan:
• Mô hình đối tượng khi sử dụng JavaScript (DOM, JDOM,...)
• Xử lý sự kiện của các đối tượng form
• Validate dữ liệu
• Popup windows
• Các hàm chuẩn: alert(), confirms(), prompts()
4.2.2. CSS
CSS (Cascading Style Sheet) hiện có thể coi là các chuẩn định kiểu cho các trang web. Về căn bản
đây là một tập khai báo về thuốc tính của các đối tượng trên một trang web. Hầu như tất cả các đối
tượng trên trang web đều có thể khai báo thuộc tính, từ các label, text đến các button, table. Thuộc
tính có thể là font, size, color,...
Việc dùng CSS sẽ giúp cải thiện tốc độ tải trang web đáng kể. Trình duyệt sẽ chỉ tải file CSS về
máy client một lần, những lần sau các trang web sử dụng file CSS này sẽ lấy ngay tại client. Việc
tập trung toàn bộ định nghĩa thuộc tính vào file CSS giúp cho đoạn mã HTML trở nên ngắn gọn, rõ
ràng đồng thời giúp giảm kích thước của trang web.
CSS có thể khai báo ngay trong file HTML nhưng thông thường CSS được khai báo trong một hay
nhiều file (.CSS) thành các class. Các đối tượng trong trang web muốn sử dụng class nào thì khai
báo trong thuộc tính class. Điều này tăng tính mềm dẻo khi dùng file CSS, ta có thể thay đổi màu
sắc, giao diện của những trang web một cách nhanh chóng thông qua việc chỉnh sửa những thuộc
tính trong file CSS.
Khai báo CSS:
Sử dụng CSS:
Java overview
Trang 32/66
Các vấn đề liên quan:
• Các thuộc tính của đối tượng Form (tham khảo tại W3C)
4.2.3. Ajax
a. Khái niệm về Ajax
Ajax là thuật ngữ công nghệ được nhắc tới nhiều trong một vài năm gần đây xung quanh các vấn
đề liên quan tới thế hệ Web2.0, chính xác là từ tháng 2 năm 2005 sau bài viết nổi tiếng của Jesse
James Garrett trên trang Adaptive Path. Nhưng thực sự Ajax không phải là một công nghệ, nó là
sự kết hợp của nhiều công nghệ với mỗi thế mạnh riêng của mình để tạo nên sức mạnh chung của
Ajax.
Đúng như tên viết tắt của mình, AJAX - " Asynchronous JavaScript and XML ", cũng có tài liệu cho
rằng "Asynchronous JavaScript+CSS+DOM+XMLHttpRequest" là sự kết hợp của các công nghệ
sau:
• Thể hiện web theo tiêu chuẩn XHTML và CSS;
• Nâng cao tính năng động và phản hồi bằng DOM (Document Object Model );
• Trao đổi và xử lý dữ liệu bằng XML và XSLT;
• Truy cập dữ liệu theo kiểu bất đồng bộ (asynchronous) bằng XMLHttpRequest;
• Và tất cả các kỹ thuật trên được liên kết lại với nhau bằng JavaScript .
Tất cả tạo thành một bộ công cụ cho phép tăng tốc độ ứng dụng web bằng cách chia nhỏ dữ liệu
trên trang web thành nhiều phần và load lại phần thông tin cần thay đổi, thay vì tải đi tải lại toàn bộ
trang web.
"Mọi thao tác của người sử dụng sẽ gửi lệnh JavaScript tới bộ xử lý AJAX, thay vì tạo ra một yêu
cầu HTTP (HTTP request) và truy vấn tới máy chủ", Jesse James Garrett đã ghi trong bài viết đầu
tiên định nghĩa về thuật ngữ này. "Nếu cần gì từ server, như tải về bổ sung mã giao diện hay nhận
dữ liệu mới, AJAX sẽ truyền yêu cầu tới máy chủ một cách không đồng bộ, thông thường sử dụng
XML, mà không làm gián đoạn sự tương tác của người dùng với ứng dụng web".
b. Mô hình hoạt động của Ajax
Với mô hình ứng dụng Web cổ điển, khi người dùng có một cần thay đổi dữ liệu trên trang Web,
yêu cầu thay đổi được gửi về server dưới dạng HTTP request (hay còn gọi postback), server sẽ xử
lý yêu cầu này và gửi trả lại trang HTML khác thay thế trang cũ. Qui trình này được mô tả là nhấp-
chờ và tải lại (click-wait-and-refresh)
Java overview
Trang 33/66
Với mô hình ứng dụng Web sử dụng Ajax, thay vì phải tải cả trang web thì với ứng dụng chỉ cần tải
về phần của trang Web được thay đổi nội dung. Điều này giúp cho ứng dụng web phản hồi nhanh
hơn. Ngoài ra, điểm đặc biệt quan trọng trong công nghệ AJAX nằm ở chữ A (Asynchronous) – bất
đồng bộ – tức là client cứ gửi yêu cầu tới server và quay lại với công việc của mình mà không cần
chờ trả lời. Khi nào server xử lý xong yêu cầu, nó sẽ báo hiệu để thể hiện những thay đổi cần thiết.
c. Nhược điểm của Ajax
Mặc dù Ajax có những đặc điểm vượt trội mang tính cách mạng cho các ứng dụng web, nhưng nó
cũng có một số nhược điểm sau:
• Phím "Back" (được đánh giá rất cao trong thao tác của người sử dụng web) của trình duyệt
bị mất tác dụng, người dùng không thể lấy lại dữ liệu của trang trước đó bằng cách đơn
giản, thông thường như trước đây vẫn dùng (đã có hướng giải quyết).
• Không thể lưu lại địa chỉ web vào thư mục Favorite (Bookmark) để xem lại về sau.
• Do áp dụng lớp trung gian để giao dịch, các ứng dụng AJAX không có một địa chỉ cố định
cho từng nội dung.
• Vấn đề bảo mật khi ứng dụng có dùng Ajax
Java overview
Trang 34/66
4.3. AWT, Swing
AWT và Swing là hai components GUI dùng cho các ứng dụng Java Desktop được Sun phát triển
trong bộ thư viện JFC (Phần 3.1.2). Phần này chủ yêu đi sâu vào các nội dung của Swing, bộ thư
viện GUI Java mạnh nhất hiện nay.
4.3.1. AWT
AWT (Abstract Window Toolkit) là bộ thư viện hỗ trợ giao diện đồ họa GUI đầu tiên của Sun. Hiện
tại AWT chỉ phù hợp cho các ứng dụng GUI đơn giản, hoặc các ứng dụng Applet.
Đặc điểm của AWT:
• Tập hợp rất nhiều thành phần GUI
• Mô hình bắt sự kiện mạnh
• Quản lý Layout, giúp cho các thành phần của ứng dụng độc lập với kích cỡ, độ phân giải
• Cung cấp các lớp truyền dữ liệu với Clipboard
• package: java.awt
Hệ thống phân cấp các thành phần trong AWT
Quản lý Layout
Xử lý sự kiện
Deploy ứng dụng
4.3.2. Swing
a. Đặc điểm
Swing ra đời sau AWT, có các đặc điểm sau:
• Mang tất cả các đặc điểm của AWT
• Mã thuần Java với các components AWT (Button, Toolbar,...)
• Bổ sung một tập các components bậc cao (ListView, TreeView, Tab,...)
• Hỗ trợ Look and Feel độc lập với OS
• package: javax.swing
b. Các Swing components
Các components trong Swing được chia thành:
• Windows: Window, Frame, Dialog,...
• Container: Các components đặc biệt có thể giữ (chứa) và quản lý các components khác
• Components thông dụng: Button, TextField, CheckBox,...
• Các components bậc cao: TreeView, ListView, DateTimePicker,...
Mỗi components là một đối tượng GUI, được tổ chức theo cấu trúc phân cấp như sau:
Java overview
Trang 35/66
c. Quản lý Layout
Quản lý Layout là việc đảm nhận quản lý thông tin về vị trí, kích thước các thành phần của ứng
dụng (trong khu vực Container). Với việc sử dụng Layout, kính thước, vị trí của các thành phần GUI
không phụ thuộc vào độ phân giải của màn hình bởi vì Layout quản lý, bố trí các components trên
Form theo một sự ràng buộc không hoàn toàn phụ thuốc vào tọa độ.
Java overview
Trang 36/66
Swing hỗ trợ các kiểu Layout sau:
• Flow Layout
• Border Layout
• Card Layout
• Grid Layout
• GridBag Layout
• Định nghĩa Layout của riêng mình
d. Xử lý sự kiện
Quản lý việc giao tiếp giữa các thành phần GUI trong ứng dụng, giao tiếp giữa người sử dụng với
các thành phần của một Form, ví dụ:
• KeyEvent: Sự kiện nhấn phím
• MouseEvent: Sự kiến nhấn chuột
• WindowEvent: Sự kiện liên quan tới Close, Open, Zoom một cửa sổ WIndow,..
• ...
Mọi sự kiện đều được kế thừa từ lớp EventObject.
e. Deploy ứng dụng
Đóng gói, triển khai ứng dụng Desktop (Phần 2.4).
4.3.3. AWT vs Swing
Components AWT Swing
Pros
- Tốc độ
- Hỗ trợ applet nhúng trên Browser
- Look and Feel của OS
- Tính thẩm mỹ cao hơn AWT, nhiều
components hơn AWT
- Look and Feel độc lập OS
Cons
- Tính cơ động không cao do một số
components phụ thuộc platform
- Không hỗ trợ một số thuộc tính như
icons, tooltip
- Một số Browser không hỗ trợ
- Tốc độ chậm hơn AWT
4.4. Mô hình MVC
Khi xây dựng ứng dụng phần mềm thì người phát triển thường tiếp cận theo cách là xây dựng ứng
dụng theo một mô hình nào đó, và mô hình này được xây dựng trước, mô hình này giúp người
phát triển không phải lo lắng về cấu trúc chương trình vì mô hình đã được dựng sẳn, họ chỉ phải
thực hiện các module nghiệp vụ. MVC là mô hình nổi tiếng cho các ứng dụng xây dựng trên nền
Java, từ các ứng dụng Web thông thường tới các ứng dụng J2EE, hay Desktop. Vai trò và ưu điểm
của MVC sẽ dễ thấy hơn nếu chúng ta xem xét tới các mô hình dành cho ứng dụng web trên
Servlet, JSP.
Java overview
Trang 37/66
4.4.1. Mô hình ứng dụng Web với Servlet, JSP
Khi xây dựng ứng dụng web bằng Servlet, JSP thì người phát triển thường dựa trên 2 mô hình sau,
tạm gọi là mô hình 1 và mô hình 2:
Hai mô hình có một số điểm khác biệt. Sự khác biệt rõ ràng nhất đó là sự khác biệt về thành phần
xử lý request.
Với mô hình 1 thì trang JSP điều khiển mọi quá trình xử lý request và đồng thời cũng là nơi hiển thị
phía client giá trị trã về của server.
Trong mô hình 1 ở trên không xuất hiện servlet trong quá trình xử lý. Request của client được gửi
trực tiếp tới trang JSP, trang JSP này có thể giao tiếp với các JavaBean hoặc một vài dịch vụ khác,
và cuối cùng nó chọn trang JSP tiếp theo cho client. Trang tiếp theo để hiển thị giá trị trã về của
server.
Trong mô hình 2, request từ phía client đầu tiên sẽ được chặn lại tại servlet, và bộ phận này người
ta gọi là servlet điều khiển. Servlet sẽ thực hiện một số xử lý ban đầu của request và cũng xác định
trang hiển thị tiếp theo. Hình sau:
Trong mô hình 2, client không bao giờ gửi trực tiếp request tới một trang JSP. Servlet điều khiển sẽ
thực hiện như là bộ phận điều khiển giao thông. Điều này cho phép servlet thực hiện xử lý theo
kiểu “front - end” – giống như là kiểm chứng và cho phép. Ta có thể hiểu, servlet như là bộ kiểm tra
request sau đó tuỳ theo kết quả mà quyết định bước xử lý tiếp theo của request. Khi quá trình xử lý
request tại servlet hoàn thành, servlet sẽ chuyển request trực tiếp tới trang JSP phù hợp. Ví dụ,
trong một ứng dụng web đơn giản, trang JSP sẽ hiển thị kết quả của trã về của servlet, kết quả đó
là các tham số trong request.
Java overview
Trang 38/66
4.4.2. Mô hình MVC
Với mô hình 2 trong các ứng dụng web ta thấy sự phân chia các bộ phận trong kiến trúc rõ ràng
hơn, đó là ba thành phần: logic nghiệp vụ, phần hiển thị, và bộ phần xử lý request. Sự phân chia
này được gọi là mô hình Model – View – Controller (MVC). Các ứng dụng (không chỉ là ứng dụng
web) xây dựng trên mô hình MVC có ưu điểm là rất dễ bảo trì và có thể mở rộng với các ứng dụng
phức tạp.
MVC là kỹ thuật được sử dụng rộng rãi trong lập trình chuyên nghiệp, đặc biệt là trong kỹ thuật làm
web, tạo cho website có khả năng linh động hơn. Thực tế có rất nhiều lập trình viên phát triển ứng
dụng của mình theo mô hình MVC dù đó là bất kỳ ngôn ngữ nào.
a. Model
Là một đối tượng hoặc tập hợp các đối tượng biểu diễn cho phần dữ liệu của chương trình, ví dụ
các dữ liệu được lưu trong cơ sở dữ liệu (CSDL) hay từ các hệ thống ứng dụng khác (như mail...).
Java overview
Trang 39/66
b. View
Là phần giao diện với người dùng, bao gồm việc hiện dữ liệu ra màn hình, cung cấp các menu, nút
bấm, hộp đối thoại, chọn lựa..., để người dùng có thể thêm, xóa, sửa, tìm kiếm và làm các thao tác
khác đối với dữ liệu trong hệ thống.
View trong mô hình MVC của ứng dụng web bao gồm HTML và các trang JSP. Các trang HTML
được dùng với mục đích tạo ra trang tĩnh, trong khi JSP có thể tạo ra trang với nội dung tĩnh hay
động.
c. Controller
Là phần điều khiển toàn bộ logic về hoạt động của giao diện, tương tác với thao tác của người
dùng (từ chuột, bàn phím và các thiết bị ngoại vi khác) và cập nhật, thao tác trên dữ liệu theo đầu
vào nhận được và điều khiển việc chọn phần “View” thích hợp để chuyển dữ liệu tới người dùng.
Trong ứng dụng web, Controller thường được thiết kế bằng Servlet, thực hiện các nhiệm sau:
• Chặn các request từ phía client.
• Chuyển các request tới các bộ phận dịch vụ để thực hiện.
• Hoặc là gọi các toán tử nghiệp vụ hoặc là uỷ thác tới một handler khác.
• Hổ trợ lựa chọn view tiếp theo cho client.
• Trã về view cho client.
4.5. Struts
4.5.1. Struts và MVC
Struts là một Framework OpenSource nổi tiếng của dự án Apache cho các ứng dụng J2EE. Được
phát triển bởi một nhóm do Craige R.McClanahan đứng đầu (Craige R.McClanahan là chuyên gia
nghiên cứu về Servlet, JSP và tham gia viết Tomcat), bản thân Struts là sự mở rộng của các
Java overview
Trang 40/66
Servlet API theo mô hình MVC. Thực tế hiện nay Struts vẫn là framework nổi tiếng nhất cho các
ứng dụng theo mô hình MVC.
Mục đích của Struts là phân tách rõ ràng các phần Model, View, Controller trong mô hình MVC.
Ứng dụng viết trên Struts dễ dàng bảo trì, mở rộng. Struts framework liên tục được cập nhật, mở
rộng cung cấp nhiều package, thư viện hỗ trợ cho người phát triển: Taglib, đa ngôn ngữ, validate
data, tempate cho ứng dụng mẫu,...
• Client Browser: Web Container tiếp nhận HTTP Request từ Client và trả về HTTP Response
• Controller: Các nhiệm vụ của thành phần Controller trong Struts bao gồm nhận đầu vào từ
client, gọi toán tử nghiệp vụ, và tìm thành phần view để trã về cho phía client. Trong Struts
framework servlet trở thành điểm trung tâm cho ứng dụng web. Servlet điều khiển sẽ ánh xạ
giữa action của user với các hàm nghiệp vụ và hổ trợ lựa chọn view trã về dựa trên thông
tin của request đã được xử lý. struts-config.xml là file cấu hình cho Controller của ứng dụng
xây dựng trên Struts
• Business Logic: Cập nhật trạng thái của Model và đảm nhận việc điều khiển, thực thi dưới
các Form trong ứng dụng
• Model: Model là các đối tượng biểu thị thông tin về các yêu cầu từ người dùng, và lưu giữ
các kết quả của các quá trình xử lý.
• View: Đối tượng View trong Struts thường là các trang JSP. Struts cung cấp một loạt các
thư viện taglib, hỗ trợ người phát triển trong việc thiết kế các trang JSP. Sự hỗ trợ của
Struts với JSP cho phép các đối tượng form trên các trang JSP được quản lý: Lấy dữ liệu,
Validate dữ liệu, Quản lý lỗi,... Các thư viện taglib thường dùng: struts-html, struts-form,
struts-bean, struts-logic, struts-template.
4.5.2. Đặc điểm của Struts
• OpenSource, cộng đồng đông đảo
• Áp dụng mô hình MVC
• Struts là framework cho ứng dụng web, không phải ứng dụng J2EE: (Triển khai theo dạng
file .WAR cho các Web Server)
• Áp dụng Struts khá dễ dàng, đơn giản: Download Struts framework (hiện là version 2.0.6 -
March 22, 2007), cấu hình ứng dụng với các thư viện (Nhiều IDE hỗ trợ)
• Bộ thư viện thẻ taglib phong phú cho JSP. Hỗ trợ validate dữ liệu, thông báo lỗi,...
Java overview
Trang 41/66
• Thuận lợi cho công tác bảo trì, nâng cấp
• Struts chỉ hướng vào tầng Controller, có quan điểm là chỉ hướng vào tầng View (Bản thân
chỉ là sự mở rộng của Servlet & JSP)
• Quan điểm về bộ thư viện taglib của Struts: phải load toàn bộ >> tốn bộ nhớ, ứng dụng
chạy chậm,...
• Struts JSF
• Dự án Struts đã đóng băng (hay đã hoàn thiện ở mức chín muồi)
4.5.3. Cấu hình ứng dụng Struts
Ví dụ về tổ chức của một ứng dụng dựa trên Struts:
Bên cạnh file cấu hình web.xml cho ứng dụng web thông thường, ứng dụng Struts còn có struts-
config.xml là file cấu hình để khởi tạo các tài nguyên cần thiết, bao gồm thông số kết nối CSDL các
ActionForms để lấy các yêu cầu của người dùng, ActionMappings để chỉ đến các Actions phía trình
phục vụ Server, và các ActionForward để chọn các trang hiển thị. Ngoài ra còn có các file mô tả thư
viện taglib của ứng dụng (các file .TLD).
Dưới đây là một dạng đơn giản của struts-config.xml:
• : Thông số kết nối CSDL
• : Khai báo các form của ứng dụng
Java overview
Trang 42/66
• : Các trang jsp hiển thị
• : Khai báo các Action
• Một số thẻ khác
Java overview
Trang 43/66
4.6. EJB
4.6.1. EJB trong kiến trúc J2EE
EJB (Enterprise JavaBean) là business component chạy bên trong EJB container, là một thành
phần trong kiến trúc. EJB container cung cấp các dịch vụ quản lý transaction, bảo mật, quản lý
trạng thái, quay vòng tài nguyên,... EJB container hỗ trợ những API sau: J2SE, JMS, JNDI, JTA,
JavaMail, JAF, RIM-IIOP và JDBC.
Các lợi ích mà EJB mang lại:
• Transaction Management
• Security support
• Persistence Management (CMP & BMP)
• Distributed System
4.6.2. Khi nào sử dụng EJB
Mặc dù EJB mạnh, có nhiều giá trị, nhưng vì là một công nghệ phức tạp, áp dụng khá khó khăn,
nên sử dụng EJB trong những trường hợp sau:
• Dùng cho các ứng dụng lớn, tài nguyên & dữ liệu phân tán
• Yêu cầu dễ dàng đáp ứng được sự mở rộng, nâng cấp của hệ thống (Scalable)
• Các giao dịch yêu cầu sự đảm bảo cao về tính toàn vẹn dữ liệu
• Số lượng Client lớn
Java overview
Trang 44/66
4.6.3. Cài đặt EJB
Mỗi EJB bắt buộc phải có những interface và class sau:
• Home Interface: home interface extend javax.ejb.EJBHome. Nó đóng vai trò như một
Factory pattern để khởi tạo các instance của EJB
• Remote Interface: remote interface extend javax.ejb.EJBObject. Remote interface chứa các
business method, được gọi từ client. Nó đóng vai trò như 1 proxy của EJB.
• Bean Class: chứa phần cài đặt của các method khai báo trong remote interface. Bean class
extend javax.ejb.SessionBean hoặc javax.ejb.EntityBean hoặc
javax.ejb.MessageDrivenBean.
Quy ước đặt tên Bean:
Java overview
Trang 45/66
4.6.4. Phân loại EJB
Tùy vào mục đích sử dụng, EJB được chia thành 3 loại như sau:
Java overview
Trang 46/66
a. Entity Bean
Bean này dùng để mô tả một thực thể trong hệ thống, thiết kế chuyên dụng để phục vụ cho việc
persistence và sharing dữ liệu. Mỗi Entity Bean tương ứng với một dòng trong bảng của CSDL.
- CMP: Container-Managed Persistence
- BMP: Bean-Managed Persistence
Khi nào dùng Entity Bean?
• Cần thể hiện thực thể nghiệp vụ, không phải hàm, thủ tục
• Trạng thái của Bean cần được duy trì
b. Session Bean
Phục vụ cho các yêu cầu xử lý nghiệp vụ và luồng công việc trong ứng dụng J2EE thông qua các
phương thức của mình. Session Bean không có tính Persistent, dữ liệu của nó không được lưu vào
CSDL.
Khi nào sử dụng Session Bean?
• Tại một thời điểm, chỉ có một Client truy cập tới thể hiện của Bean
• Trạng thái của Bean chỉ tồn tại trong một thời gian ngắn, không cần phải duy trì
• Bean được thực thi như Web Services
Session Bean được chia làm 2 loại là Stateless và Statefule
Java overview
Trang 47/66
- Stateless Session Bean
Không lưu giữ trạng thái giữa các phương thức xử lý cho các Clients. Sau mỗi phương thức được
gọi, EJB Container có thể chọn việc hủy bỏ hoặc tạo mới Stateless Session Bean.
Khi nào dùng Stateless Session Bean?
• Trạng thái của Bean không lưu dữ liệu cho một Client cụ thể
• Cần có phương thức chung cho nhiều Client
- Stateful Session Bean
Là Bean được thiết kế để thực hiện các xử lý nghiệp vụ yêu cầu phải qua nhiều phương thức,
nhiều giao dịch, do đó yêu cầu Statefule Session Bean phải lưu giữ trạng thái của từng Client khi
nó xử lý.
Khi nào dùng Stateful Session Bean?
• Trạng thái của Bean thể hiện sự tương tác giữa Bean và một Client cụ thể
• Cần thiết phải ghi nhớ thông tin về Client giữa các phương thức thực hiện
Java overview
Trang 48/66
• Dùng Bean để quản lý luồng xử lý nghiệp vụ giữa các thành phần Bean khác trong ứng
dụng
c. Message-Driven Bean
Là một Stateless Session Bean đặc biệt. Được sử dụng trong trường hợp các nghiệp vụ của ứng
dụng đòi hỏi phải có thời gian thực thi lâu khi Client không thể chờ để hiển thị kết quả. Điều đặc
biệt là Message-Driven Bean được thực thi thông qua việc gửi các thông điệp tới JMS (Java
Message Service). Bên cạnh đó, Message-Driven Bean là loại asynchronous service trong khi
Entity và Session là loại synchronous service.
Riêng Message-Driven Bean không đòi hỏi có Interface.
Khi nào dùng Message-Driven Bean?
• Khi cần truyền nhận thông điệp một cách bất đồng bộ
4.7. Spring
Spring ra đời với mục đích làm đơn giản hóa, thay thế các thành phần phức tạp và không quá cần
thiết trong J2EE, mà cụ thể đó là EJB - "EJB thì có giá trị của nó, nhưng không phải lúc nào cũng
cần thiết và phù hợp cho tất cả các ứng dụng".
Trong khi EJB thì cứng và cố gắng làm mọi thứ, một vài công việc tốt nhưng một số thì không.
Spring chỉ sử dụng Java Bean và thông qua một số kỹ thuật đặc biệt để cung cấp nhiều chức năng
như EJB, bằng cách tích hợp với một số kỹ thuật open source khác.
Theo kiến trúc đa tầng của J2EE, Spring đảm nhận công việc ở tầng Business. Để sử dụng Spring
theo J2EE cần kết hợp với các framework ở các tầng liên quan là: tầng Presentation (Struts,
JSF,...), và tầng Persistence (Hibernate, JDBC,...). Thực tế Spring cũng hỗ trợ cho các tầng
Presentation và Persistence, nhưng khả năng không bằng các framework khác như Struts, JSF,
Hibernate,...
Java overview
Trang 49/66
4.7.1. Đặc điểm của Spring
• Nguyên lý chính yếu của Spring đó là sử dụng kỹ thuật IoC (Inversion of Control) hay còn
gọi là kỹ thuật Dependency Injection. Đây là kỹ thuật làm mềm dẻo hóa mối quan hệ giữa
các lớp phụ thuộc lẫn nhau (Mong muốn "Loose coupling" thay cho "Strong coupling"). (Cái
này rất khó diễn đạt bằng tiếng Việt)
• Spring hỗ trợ lập trình hướng khía cạnh AOP.
• Ngoài việc cung cấp một framework mạnh, Spring còn được thiết kế để hỗ trợ người phát
triển dễ dàng tích hợp các framework ở các tầng khác trong ứng dụng J2EE: Web
framework, Persistent framework,... (Spring cung cấp ~ 1000 lớp/interface cho mục đích kết
nối với các framework khác)
• Bản thân Spring cung cấp nhiều giao diện có sẵn, giúp cho dễ dàng mở rộng và chỉnh sửa
ứng dụng.
• Với Spring công đoạn Test được thực hiện dễ dàng hơn (Không cần start EJB Container khi
Test như các ứng dụng EJB)
• Spring dựa trên các đối tượng JavaBean với các phương thức setter, getter. Tuy nhiên
Spring không khởi tạo các đối tượng như cách truyền thống (Obj obj = new Obj()) mà sử
dụng phương thức khởi tạo bằng các FactoryContainer dựng sẵn, thuộc tính các đối tượng
được config trong các file XML (bean.xml).
Các bước thực hiện cho một chức năng trong Spring:
1. Khai báo interface định nghĩa các chức năng.
2. Một implementation chứa các thuộc tính, các phương thức settter và getter.
3. Một file XML gọi là file cấu hình Spring.
4. Chương trình client sử dụng chức năng trên.
Download information: www.springframework.org
Phiên bản dependency (full)
1. Source Code
2. Library (Test, Integration,...)
3. Document
4. Samples
4.7.2. Các thành phần của Spring
Spring cung cấp nền tảng gồm 7 modules (trong các file thư viện JAR) như sau. Tất nhiên, người
phát triển có thể mềm dẻo lựa chọn sử dụng bao nhiêu module, và sử dụng những module nào cho
phù hợp với ứng dụng của mình.
Java overview
Trang 50/66
a. Spring Core
Cung cấp chức năng cơ bản của Spring. Thành phần chính của nó là Bean Factory, một cài đặt
của Factory pattern. BeanFactory áp dụng IoC hay Dependency Injection để đặc tả sự phụ thuộc từ
code của ứng dụng.
b. Spring Context
Spring Context là một file cấu hình để cung cấp thông tin ngữ cảnh của Spring. Spring context cung
cấp các service như JNDI access, EJB integration, e-mail, internalization (i18N), validation, và
scheduling functionality, truyền sự kiện, resource-loading,...
c. Spring DAO
Quản lý kết nối đến database, điều khiển exception và thông báo lỗi database. Giúp cho đơn giản
điều khiển lỗi và giảm khối lượng code mà chúng ta cần viết như mở và đóng kết nối. Module này
cũng cung cấp các dịch vụ quản lý giao dịch cho các đối tượng trong ứng dụng Spring.
d. Spring AOP
Spring AOP module tích hợp chức năng lập trình hướng khía cạnh (Aspect Oriented Programming)
vào Spring framework thông qua cấu hình của nó. Spring AOP module cung cấp các dịch vụ quản
lý giao dịch cho các đối tượng trong bất kỳ ứng dụng nào sử dụng Spring. Với Spring AOP chúng
ta có thể tích hợp declarative transaction management vào trong ứng dụng mà không cần dựa vào
EJB component. Spring AOP module cũng đưa lập trình metadata vào trong Spring.
e. Spring ORM
Spring có thể tích hợp với một vài ORM framework để cung cấp Object Relation Tool bao gồm:
JDO, Hibernate, OJB và iBatis SQL Maps.
f. Spring Web
Khởi tạo context cho các ứng dụng web. Spring cũng hỗ trợ tích hợp với Struts, JSF và Webwork.
Web module cũng làm giảm bớt các công việc điều khiển nhiều request và gắn các tham số của
request vào các đối tượng domain.
Java overview
Trang 51/66
g. Spring MVC
Cài đặt đầy đủ đặc tính của MVC pattern để xây dựng các ứng dụng Web. Spring MVC framework
hỗ trợ một số kỹ thuật view bao gồm: JSP, Velocity, Tiles,... File cấu hình cho phép lựa chọn cái
nào trong số các kỹ thuật trên được sử dụng, trong đó JSP là giao diện mặc định.
4.8. Hibernate
4.8.1. Giới thiệu về Hibernate
Hibernate là giải pháp ORM (Object/Relational mapping) OpenSource cho các ứng dụng Java,
cung cấp một framework cho việc mapping giữa mô hình hướng đối tượng và các CSDL quan hệ
truyền thống.
• Hibernate tuân thủ theo kiến trúc J2EE
• Việc quy trì kết nối dữ liệu được làm mờ với người phát triển. Hibernate đảm nhận các công
việc của Presistence Layer trong mô hình đa lớp
• Sử dụng các tài liệu XML để cấu hình kết nối dữ liệu và mapping giữa các lớp đối tượng
Java và các bảng trong CSDL
• Sử dụng ngôn ngữ truy vấn dữ liệu hướng đối tượng mạnh, cú pháp rất giống với ngôn ngữ
chuẩn SQL
• Hạn chế việc lặp lại các câu lệnh SQL
• Thao tác với các lớp và đối tượng, thay vì query, resultset,... Việc phát triển "Hướng đối
tượng hơn"
Java overview
Trang 52/66
4.8.2. Kiến trúc Hibernate
a. Hibernate Session
Được hình thành từ SessionFactory, Session thể hiện nội dung được duy trì của Hibernate. Do đó
Session được sử dụng để query, cũng như các thao tác insert, update, delete trên dữ liệu.
b. Hibernate Persistent Object
Là các đối tượng lưu giữ trạng thái, và các hàm nghiệp vụ. Các đối tượng này thường là JavaBean
hoặc POJO (Plain Old Java Obiect). Các đối tượng Persistence được sử dụng cùng với Session,
khi Session đóng, chúng được giải phóng và sẵn sàng phục vụ cho tầng ứng dụng.
c. Transaction & Connection
(Option)
d. Connector
Ngoài JDBC, Hibernate hỗ trợ một số Connector trong một số trường hợp kết nối đặc biệt khác, ví
dụ: JTA trong trường hợp kết nối tới nhiều CSDL,...
Java overview
Trang 53/66
4.8.3. Phát triển ứng dụng với Hibernate
• Mỗi bảng trong CSDL quan hệ tương ứng với một lớp đối tượng của ứng dụng, do đó cần
có một Bean cho mỗi bảng trong CSDL
• Để Hibernate biết một object được mapping như thế nào với table trong CSDL, phải cung
cấp tập tin đặc tả gọi là mapping file giữa property của object với field trong table. Theo quy
ước của Hibernate, các mapping file này có đuôi là .hbm.xml và phải hợp lệ với DTD
(Document Type Definition) mà Hibernate đã đưa ra. Trong các mapping file này.
• Cuối cùng cần có 1 tập tin để Hibernate bắt đầu: hibernate.cfg.xml. Có thể nói tập tin này
được load lên đầu tiên khi “khởi động” Hibernate.
a. Persistent Object
- PÔJO file với các thuộc tính (tương ứng các field trong CSDL)
- Các phương thức get/set.
b. Configuration
- hibernate.xml
- hibernate.cfg.xml
- Person.hbm.xml
c. HQL - Hibernate Query Language
- Ngôn ngữ truy vấn hướng đối tượng
- Cú pháp gần với SQL
- Creating Object
- Updating Object
- Deleting Object
- Selecting Object
Java overview
Trang 54/66
4.9. Web Services
4.9.1. Lịch sử hình thành Web Services
Mong muốn về sự giao tiếp giữa các đối tượng từ xa, trong ứng dụng phân tán đã dẫn đến sự hình
thành một số công nghệ mang tính "phân tán" như COM, COM+, CORBA, Java RMI,... Tuy nhiên
đây là các công nghệ độc quyền của một hãng nào đó, phụ thuộc vào hệ nền, vào ngôn ngữ xây
dựng, và không thể giao tiếp với nhau do giao thức của chúng khác nhau, hoặc chi phí thực hiện
cao, triển khai phức tạp (CORBA).
Mặt khác, các công nghệ ở trên đều được xây dựng mang tính hướng kết nối (connection -
oriented) không phục vụ hiệu quả cho các ứng dụng được xây dựng nhiều trên mạng Internet.
Đó là các nguyên nhân dẫn tới sự ra đời của Web Services - các dịch vụ Web cho phép các ứng
dụng, các hệ thống có thể giao tiếp với nhau. Web Services được hình thành với những mong
muốn, đồng thời cũng là đặc điểm như sau:
• Giao thức thống nhất trên cơ sở sử dụng định dạng XML
• Độc lập với các hệ nền
• Thực hiện tin cậy qua mạng Internet, phù hợp và tương thích với các giao thức phổ biến
trên Internet hiện nay như HTTP, SMTP, FTP,...
• Hỗ trợ cho nhiều ngôn ngữ C, Java, COBOL,...
• Hộ trợ cho cơ sở hạ tầng của các ứng dụng phân tán
• Xây dựng, triển khai ứng dụng nhanh chóng, đơn giản, linh động
MicroSoft chính là đơn vị đầu tiên hướng tới Web Services trong định hướng công nghệ của mình
khi đưa SOAP vào W3C nhằm phổ biến rộng rãi và biến SOAP thành một chuẩn trong các giao
thức Web Services.
4.9.2. Kiến trúc Web Services
Dưới đây là ví dụ đơn giản về kịch bản yêu cầu dịch vụ A của Client:
Java overview
Trang 55/66
1. Tiến hành tìm dịch vụ Web của hệ thống
2. Lấy mô tả về dịch vụ và cách thức để sử dụng dịch vụ A
3. Truy cập tới dịch vụ A thông qua giao thức SOAP
4. Lấy về kết quả của dịch vụ A thông qua giao thức SOAP
Để đáp ứng được các yêu cầu của mình, kiến trúc của Web Services bao gồm các phần như sau:
1. Tầng vận chuyển với những công nghệ chuẩn là HTTP, SMTP và JMS
Java overview
Trang 56/66
2. Tầng giao thức tương tác dịch vụ (Service Communication Protocol) với công nghệ chuẩn là
SOAP. SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ,
SOAP cho phép người dùng triệu gọi một service từ xa thông qua một message XML.
3. Tầng mô tả dịch vụ (Service Description) với công nghệ chuẩn là WSDL và XML. WSDL là
một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML. Web service sử dụng ngôn ngữ
WSDL để truyền các tham số và các loại dữ liệu cho các thao tác, các chức năng mà web
service cung cấp.
4. Tầng dịch vụ ( Service): cung cấp các chức năng của service.
5. Tầng đăng ký dịch vụ (Service Registry) với công nghệ chuẩn là UDDI. UDDI dùng cho cả
người dùng và SOAP server nó cho phép đăng ký dịch vụ để người dùng có thể gọi thực
hiện service từ xa qua mạng, hay nói cách khác một service cần phải được đăng ký để cho
phép các client có thể gọi thực hiện.
6. Bên cạnh đó để cho các service có tính an toàn, toàn vẹn và bảo mật thông tin trong kiến
trúc web service chúng ta có thêm các tầng Policy, Security, Transaction, Management giúp
tăng cường tính bảo mật, an toàn và toàn vẹn thông tin khi sử dụng service.
4.9.3. Các thành phần Web Services
a. XML - Extensible Markup Language
XML là một ngôn ngữ mô tả văn bản với cấu trúc do người sử dụng định nghĩa. Về hình thức XML
có ký pháp tựa như HTML nhưng không tuân theo một đặc tả quy ước như HTML. Người sử dụng
hay các chương trình có thể quy ước định dạng các tag XML để giao tiếp với nhau.Thông tin cần
truyền tải được chứa trong các tag XML, ngoài ra không chứa bất cứ thông tin nào khác về cách
sử dụng hay hiển thị những thông tin ấy.
XML đặc biệt hiệu quả khi được sử dụng như một chuẩn nhằm quy định định dạng và cả dữ liệu
giao tiếp giữa các hệ thống.
Do Web Service là sự kết hợp của nhiều thành phần khác nhau, do đó Web Services sử dụng các
tính năng và đặc trưng của các thành phần này để giao tiếp với nhau. Vì vậy XML là một công cụ
chính yếu để giải quyết vấn đề này. Từ kết qủa này, các ứng dụng tích hợp vĩ mô tăng cường sử
dụng XML. Nhờ có khả năng tổng hợp này mà XML đã trở thành kiến trúc nền tảng cho việc xây
dựng Web Service.
b. WSDL - Web Services Description Language
WSDL định nghĩa cách mô tả web service theo cú pháp tổng quát XML, bao gồm các thông tin
• Tên ̣service.
• Giao thức và kiểu mã hóa sẽ đư-ợc sử dụng khi gọi các hàm của web service.
• Loại thông tin: những thao tác, những tham số, và những kiểu dữ liệu gồm có giao diện của
web service, cộng với tên cho giao diện này.
Một WSDL hợp lệ gồm có hai phần :
• Phần giao diện mô tả giao diện và giao thức kết nối.
• Phần thi hành mô tả thông tin để truy xuất service.
Java overview
Trang 57/66
Cả 2 phần trên sẽ được lưu trong 2 tập tin XML, bao gồm:
c. Tập tin giao diện service (cho phần Giao diện)
Mô tả một số loại thông tin chính:
• types: Kiểu dữ liệu của thông điệp
• message: Mô tả thông điệp được trao đổi giữa Client và Server
• portType: Kiểu cổng (mỗi cổng hỗ trợ các kiểu thao tác khác nhau): One-way, Request-
Response, Solicit-Response, Notification.
• binding: Định nghĩa các cách Web Services kết hợp với nhau
d. Tập tin thi hành service (cho phần Thi hành)
Mô tả một số loại thông tin chính:
• service: Thực hiện những khai báo trong tập tin giao diện, thủ tục & phương thức gọi
Services
• port: Cổng đầu cuối định nghĩa tập hợp các Web Services và địa chỉ mạng
e. UDDI - Universal Description , Discovery and Intergration
Để có thể sữ dụng các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin về cách sử
dụng dịch vụ và biết được đối tượng cung cấp dịch vụ. UDDI định nghĩa một số thành phần cho
biết trước các thông tin này để cho phép các client truy tìm và nhận lại những thông tin yêu cầu sử
dụng web services.
Cấu trúc UDDI gồm các thành phần:
• Trang trắng - White pages: chứa thông tin liên hệ và các định dạng chính yếu của web
services, chẳng hạn tên giao dịch, địa chỉ,… Những thông tin này cho phép các đối tượng
khác xác định được service.
• Trang vàng - Yellow pages: chứa thông tin mô tả web services theo những chủng loại khác
nhau. Những thông tin này cho phép các đối tượng thấy web services theo từng chủng loại
của nó.
• Trang xanh - Green pages: chứa thông tin kỹ thuật mô tả các hành vi và các chức
năng của web services. Các đối tượng dựa vào đặc điểm của web services để tìm kiếm.
• Loại dịch vụ - tMode: chứa các thông tin về loại dịch vụ sử dụng.
Java overview
Trang 58/66
f. SOAP
Client có thể truy xuất dịch vụ khi tìm thấy thông qua một giao thức là SOAP - Simple Object
Access Protocol. Đây là một giao thức giao tiếp có cấu trúc như XML và mã hóa thành định dạng
chung cho các ứng dụng trao đổi với nhau. Ý tưởng bắt đầu từ Microsoft và phần mềm Userland,
trải qua nhiều lần thay đổi, hiện tại là phiên bản SOAP 1.2 với nhiều ưu điểm vuợt trội hơn bản
SOAP 1.1. SOAP được xem như là cấu trúc xương sống của các ứng dụng phân tán xây dựng từ
nhiều ngôn ngữ, hệ điều hành khác nhau.
SOAP có những đặc trưng sau:
• SOAP được thiết kế đơn giản và dễ mở rộng.
• Tất cả các message SOAP đều được mã hóa sử dụng XML.
• SOAP sử dùng giao thức truyền dữ liệu riêng.
• Không có garbage collection phân tán, và cũng không có cơ chế tham chiếu.Vì thế SOAP
client không giữ bất kỳ một tham chiếu đầy đủ nào về các đối tượng ở xa.
• SOAP không bị ràng buộc bởi bất kỳ ngôn ngữ lập trình nào hoặc công nghệ nào.
Vì những đặc trưng này, nó không quan tâm đến công nghệ gì được sử dụng để thực hiện miễn là
người dùng sử dụng các message theo định dạng XML. Tương tự, service có thể được thực hiện
trong bất kỳ ngôn ngữ nào, miễn là nó có thể xử lý được những message theo định dạng XML.
Cấu trúc một message theo dạng SOAP được mô tả như hình dưới đây:
• Phần tử gốc - envelop: phần từ bao trùm nội dung message, khai báo văn bản XML như là
một thông điệp SOAP.
• Phần tử đầu trang - header: chứa các thông tin tiêu đề cho trang, phần tử này không bắt
buộc khai báo trong văn bản. Những đầu mục còn có thể mang những dữ liệu chứng thực,
những chữ ký số hóa, và thông tin mã hóa, hoặc những cài đặt cho giao tác.
Java overview
Trang 59/66
• Phần tử khai báo nội dung chính trong thông điệp - body, chứa các thông tin yêu cầu và
phản hồi.
SOAP hỗ trợ hai kiểu truyền thông khác nhau:
• Remote procedure call (RPC): cho phép gọi hàm hoặc thủ tục qua mạng. Kiểu này được
khai thác bởi nhiều web service và có nhiều trợ giúp.
• Document: được biết như kiểu hướng message: kiểu này cung cấp một lớp thấp của sự
trừu tượng hóa, và yêu cầu người lập trình nhiều hơn khi làm việc.
4.9.4. Web Services trong công nghệ Java
Web Services được khởi đầu từ MicroSoft. Nhưng công nghệ liên quan tới Java thực sự đưa Web
Services phát triển mạnh trong thể giới của mình, không chỉ là Sun Microsystems, công ty tạo ra
Java, triển khai các công nghệ, mà còn có nhiều nhà cung cấp khác như BEA, IBM,...
Với Java, Web Services tận dụng khả năng giải quyết vấn đề của các ứng dụng lớn trên các hệ
điều hành khác nhau cho chúng giao tiếp với nhau.
Để tạo một web service chúng ta cần xây dựng các tầng cần thiết trong kiến trúc web service hay
nói cách khác là xây dựng và thiết lập các thành phần trong các tầng đó, cụ thể là các thành phần
SOAP, WSDL, UDDI, XML, trong đó :
• SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ, SOAP
cho phép người dùng triệu gọi một service từ xa thông qua một message XML.
• WSDL là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML. Web service sử dụng
ngôn ngữ WSDL để truyền các tham số và các loại dữ liệu cho các thao tác, các chức năng
mà web service cung cấp.
• UDDI dùng cho cả người dùng và ̣ SOAP server, nó cho phép đăng ký dịch vụ để người
dùng có thể gọi thực thi các hàm , các chức năng của web service hay nói cách khác một
service cần phải được đăng ký để cho phép các client có thể gọi thực hiện
• Bên cạnh đó chúng ta cũng phải quan tâm đến việc làm sao để cho các service có tính an
toàn, toàn vẹn và bảo mật thông tin trong web services nhất là các service liên quan đến
giao dịch thương mại và tài chính.Chúng ta sẽ tìm hiểu nội dung này trong các phần tiếp
theo.
4.10. Portal
4.10.1. Sự hình thành Portal
Xuất phát từ nhu cầu chia sẻ thông tin trong cộng đồng là một động lực quan trọng cho sự hình
thành và phát triển của mạng Internet ngày nay. Những thông tin trình diễn trên các website và
cùng với khả năng liên kết giữa chúng, thông qua các links, đã thực sự tạo ra các kênh liên lạc lý
tưởng mà qua đó cộng đồng các nhà khoa học, các nhà nghiên cứu, các doanh nghiệp, các nhóm
người có cùng mục đích có thể chia sẻ thông tin, cộng tác với nhau trong một mục đích chung.
Tuy nhiên cùng với thời gian, sự gia tăng về số lượng các website trên Internet, sự mở rộng quy
mô các website điều hành trong các doanh nghiệp đã đặt ra một số bất cập sau:
Java overview
Trang 60/66
• Vấn đề quá tải thông tin, phải xử lý, lục tìm nhiều mới có được thông tin chính xác mà mình
cần
• Về khía cạnh kỹ thuật, các thông tin thường là độc lập, khó phân loại, dẫn đến tình trạng
khó chia sẻ
• Khó khăn trong việc quản lý, bảo trì website của các doanh nghiệp
Đối với các doanh nghiệp, yêu cầu quan trọng là các website phải cung cấp công cụ hỗ trợ làm việc,
hỗ trợ hoạt động nghiệp vụ của mình. Đó cũng chính là lý do dẫn tới sự hình thành cổng giao dịch
thông tin PORTAL.
4.10.2. Định nghĩa & đặc điểm của Portal
Từ Portal (cổng) vốn là một thuật ngữ kiến trúc, chỉ lối vào một tòa nhà lớn. Trong lĩnh vực CNTT,
Portal cũng có ý nghĩa tương tự. Có thể coi đó là cổng vào một kho thông tin lớn, đa dạng. Qua
Portal, những đối tượng người dùng khác nhau có thể truy cập đến nhiều loại thông tin khác nhau
nhưng theo một cách thức thống nhất.
Định nghĩa chung về Portal: Portal là một cổng thông tin cung cấp tập hợp nhiều dịch vụ cho người
dùng như tìm kiếm thông tin, hỗ trợ hoạt động nghiệp vụ, email, forum,... Đối với người dùng có thể
Portal chỉ là một website thông thường qua trình duyệt nhưng nó là một "siêu website", một điểm
đích quy tụ hầu hết các thông tin, dịch vụ mà người dùng cần.
Ở góc độ khách hàng hay đối tác kinh doanh thì portal chính là kênh thông tin nơi doanh nghiệp
tiếp xúc, trao đổi và thực hiện giao dịch với đối tác, khách hàng của mình. Khi một doanh nghiệp
nào đó có portal thì tất cả mọi giao dịch đều được thực hiện trên một giao diện duy nhất nhưng
thông tin được thể hiện theo ý thích đến tận cá nhân người sử dụng. Và portal cũng làm cho quá
Java overview
Trang 61/66
trình trao đổi thông tin giữa các nhân viên trong một doanh nghiệp với khách hàng hay đối tác được
nhanh chóng, thuận tiện và ít tốn kém.
Một vài đặc điểm quan trọng của Portal:
a. Cá nhân hóa giao diện người dùng
Đây là thuộc tính này là quan trọng nhất. Một portal phải cung cấp cho người sử dụng một giao
diện nhất quán và giao diện này phải do chính người sử dụng lựa chọn. Tính cá nhân hóa thể hiện
trên ở chỗ:
• Người sử dụng được quyền sắp xếp, tổ chức lại cách thức hiển thị thông tin trên portal theo
ý muốn của mình.
• Nội dung thông tin và dịch vụ: Người sử dụng được quyền lựa chọn để chỉ hiển thị những
thông tin và dịch vụ mà họ thực sự quan tâm.
b. Tổ chức thông tin theo một CMS
• Thông tin được quản lý bởi portal đa dạng (text, media,...) phải được phân loại và sắp xếp
các theo các chủ đề, phục vụ cho việc tìm kiếm, tránh tình trạng quá tải thông tin.
• Hỗ trợ tính năng tìm kiếm mạnh, theo nhiều tiêu chí.
• Nguồn thông tin đa dạng
• Hỗ trợ nhiều môi trường hiển thị tin: PC, Mobile, PDA,…
• Bảo mật thông tin
c. Hỗ trợ mô hình làm việc cộng tác
• Cung cấp các công cụ phục vụ cho hoạt động nghiệp vụ của người dùng: email, forum,
conference, task management,...
• Tích hợp các phần mềm hỗ trợ nghiệp vụ (workflow)
d. Hệ quản trị mạnh
• Quản trị Portal: Layout, Look & Feel, Kênh thông tin,…
• Quản trị người dùng: Roles, Groups,…
e. Cơ chế Single Sign On
• Người dùng chỉ cần đăng nhập một lần là có thể sử dụng mọi dịch vụ theo Role của mình
4.10.3. Các loại Portal
a. Phân loại theo khách hàng
• Vertical portal
Là các Portal có nội dung thông tin cũng như các dịch vụ của nó được thiết kế để phục vụ cho một
lĩnh vực xác định, cho một chuyên ngành xác định. Virtiacal portal thường được sử dụng để cung
cấp môi trường làm việc cho các cộng đồng hoặc các nhóm làm việc có chung một mục đích xác
định. Các portal của cộng đồng các nhà khoa học, các cộng đồng tôn giáo là những ví dụ điển hình
cho loại portal này
• Horizontal portal
Java overview
Trang 62/66
Thuật ngữ này được sử dụng để chỉ những portal mà nội dung thông tin cũng các dịch vụ của nó
bao trùm nhiều chủ đề, nhiều lĩnh vực, do vậy nó mang tính diện rộng, phục vụ cho nhiều loại
khách hàng khác nhau. Ví dụ Yahoo,...
b. Phân loại theo mục đích sử dụng
• Information portal
Xây dựng hệ thống cung cấp thông tin trên cơ sở thu gom số liệu từ nhiều nguồn khác nhau. Các
nguồn dữ liệu này nằm rải rác trên mạng toàn cầu Internet, từ các CSDL của các mạng nội bộ
Intranet, và thậm chí cả từ các portal khác.
• Community portal
Xây dựng các cộng đồng ảo để giúp đỡ lẫn nhau và để hợp tác với nhau trong cùng một mục đích
xác định. Community portal mang lại cơ hội cộng tác cho các cá nhân, tổ chức doanh nghiệp mà
ranh giới địa lý không có ý nghĩa ở đây.
• Corporate portal (or Enterprise portal)
Corporate portal thường được dùng bởi các nhân viên trong một cơ quan hay tổ chức sử dụng để
chia sẻ thông tin với nhau, cộng tác với nhau để cùng giải quyết một công việc, qua đó nâng cao
năng suất lao động và hiệu quả giải quyết công việc của mình.
• Commercial portal
Cung cấp “chợ điện tử” (e-mall) trong thị trường thương mại điện tử. Có rất nhiều mô hình của
commercial portal, như B2B portal thực hiện các giao dịch điện tử giã các doanh nghiệp, B2C thực
hiện mua/bán hàng hóa giữa khách hàng và doanh nghiệp, Tourism portal để phục vụ ngành công
nghiệp du lịch, và v.v..
• Goverment portal
Cung cấp các “cổng hành chính công điện tử” để chính quyền (Trung ương và địa phương) thực
hiện các chức năng của mình đối với dân chúng thông qua việc cung cấp thông tin và các dịch vụ
hành chính công.
c. Theo quan điểm về mã nguồn của người phát triển
• Portal thương mại: MS SharePoint, BEA WebLogic, OracleAS, IBM WebSphere Portal,...
• OpenSource: DotNetNuke, uPortal, Liferay,...
4.10.4. Portal với công nghệ Java
a. Portlet và Chuẩn JSR 168
Hầu hết các Portal Framework đều cung cấp một chuẩn các giao diện ứng dụng lập trình (API) có
tính mở, nhờ đó người phát triển hệ thống có thể sử dụng để gắn các ứng dụng và dịch vụ vào
khung của Portal. Các API này được biết với tên là Portlet, là một công cụ cho phép người phát
triển đăng ký các thành phần khác nhau với một khung Portal, bằng cách đó có thể tùy biến và tạo
ra Portal của riêng mình.
Bố trí các thành phần trên giao diện của một Portlet:
Java overview
Trang 63/66
Trong các Portal Framework xây dựng trên nền tảng Java, Portlet là sự mở rộng của Servlet. Tất
nhiên, lược đồ xử lý của Portlet phức tạp hơn Servlet, ngoài Request, Response còn có các yêu
cầu Action, Render. Portlet có thể sử dụng JSPs và servlet để cài đặt những tính năng của nó. Vì 1
ứng dụng portlet là 1 mở rộng của ứng dụng web, nên nó có thể bao gồm những thành phần ứng
dụng web khác trên một nền tảng vững chắc của các chuẩn Internet như: HTTP, HTML, XML,
SSL,… Thêm vào đó, ứng dụng portlet còn bao gồm 1 file mô tả triển khai portlet.xml
Portal có Porlet Container để quản lý và thực thi các Portlet:
• Cung cấp môi trường thực thi cho portlet.
• Xác định và phân phối yêu cầu khai thác thông tin từ portal đến đúng portlet có khả năng
giải quyết.
• Quản lý thời gian sống của các portlet cài đặt trong hệ thống (khởi động và loại bỏ các
portal không cần thiết để giải phóng bộ nhớ cho hệ thống).
• Gửi kết quả xử lý thông tin của portlet cho portal để chuyển giao cho người sử dụng.
Java Specification Request 168 - JSR 168 là chuẩn để viết Portlet cho các Portal xây dựng trên
nền tảng công nghệ Java (JSR 168 còn được gọi là Portlet API). Với chuẩn này, bất kỳ ai cũng có
thể phát triển các Portlet bằng cách tuân theo và đăng ký là một thành phần của Portal, do đó ứng
dụng có thể chạy tương thích trên Portal Framework mà mình sử dụng.
Java overview
Trang 64/66
b. Đặc điểm Portal dựa trên công nghệ Java
Ngoài việc cung cấp framework mạnh cho người phát triển customize, thêm mới các portlet nghiệp
vụ của mình, các Portal framework trên công nghệ Java nói riêng và Portal framework nói chung
đều được tích hợp một số Portlets thông dụng như: Mail, Forum, Calendar, Library,...
Dựa trên công nghệ mã nguồn mở, cộng đồng phát triển đông đảo, liên tục phát triển, tự do chỉnh
sửa mà nguồn theo yêu cầu nghiệp vụ của mình.
Áp dụng hầu hết các công nghệ, framework mạnh, nổi tiếng của Java hiện nay như:
• Xây dựng theo kiến trúc J2EE
• Chuẩn Portlet JSR-168
• Hibernate
• Spring, EJB
• Struts, Tiles, JSF
• Web Services
• WSRP - Web Services for Remote Portal, Hỗ trợ giao tiếp với J2ME
• AJAX, RSS
c. Kiến trúc tổng thể
Ví dụ về kiến trúc của Liferay Portal:
Java overview
Trang 65/66
5. Tài liệu tham khảo
Các file đính kèm theo tài liệu này:
- Một số vấn đề về công nghệ Java.pdf