TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN MẠNG VÀ TRUYỀN THÔNG
B ÀI TẬP
LẬP TRÌNH MẠNG N ÂNG CAO
Đề 18:
Tìm Hiểu uPortal và xây dựng một
chương trình Demo
Sinh viên : Trần Huỳnh Tiến
Lớp : 07T3
Nhóm : 10A
Cán bộ hướng dẫn : Huỳnh Công Pháp
Đà Nẵng 2011
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Mục lục
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT ............................................................... 2
1.1. Giới thiệu uPortal .................................................................................. 3
1.1.1. Tổng quan .................................................................................... 3
1.1.2. Các khái niệm cơ bản ................................................................... 3
1.2. Các thẻ định dạng (Stylesheets) ............................................................. 6
1.3. Các kênh ứng dụng trong uPortal .......................................................... 8
1.4. Cấu trúc các đối tượng bên trong uPortal ............................................ 13
1.5. Khả năng tích hợp của uPortal với các hạ tầng thông tin sẵn có .......... 13
CHƯƠNG 2. CÀI ĐẶT VÀ XÂY DỰNG PORTLET TRONG UPORTAL
................................................................................................................................. 17
2.1. Các bước thực hiện .............................................................................. 17
2.1.1. Cài đặt uPortal ............................................................................ 17
2.1.2. Cài đặt Plugins xây dựng Portlet cho NetBeans ........................ 19
2.2. Xây dựng BodyCheckPortlet ............................................................... 19
2.2.1. Tạo Project BodyCheckPortlet ................................................... 19
bản 3.0, điều đó có nghĩa là các ứng dụng đã viết cho uPortal hoặc đã tích hợp với
uPortal sẽ phải xây dựng lại từ đầu khi nâng cấp lên phiên bản 3.0. Hiện tại ở Việt
Nam một số phiên bản uPortal 2.x đã được một số đơn vị Việt hoá và đưa sử dụng
ở một số nơi như: giải pháp VPortal của VietSoftware cho UBND TP Hà Nội giải
pháp Asia Portal của Asia Soft cho UBND tỉnh Vĩnh Phúc.
1.1.2. Các khái niệm cơ bản
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 3
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Nền phần mềm uPortal là sản phẩm nguồn mở, được cung cấp miễn phí với
đầy đủ mã nguồn, nhưng nhiều ứng dụng (channel) trên nền uPortal là các sản phẩm
thương mại. Channel là các đơn nguyên chứa đựng thông tin và ứng dụng trong
uPortal. Với các phần mềm cổng thông tin thương mại, ứng dụng channel còn có
tên gọi khác là các portlet.
Tư tưởng chủ đạo của uPortal là tạo ra một giao tiếp (interface) chung cho các
thông tin và ứng dụng. Để thực hiện điều này, tất cả thông tin xuất ra các channel
đều phải được cho dưới dạng XML. Người dùng, thông qua trình duyệt web của
mình sẽ chọn lựa các kiểu trình bày thông tin khác nhau sử dụng các thẻ định dạng
XSL (stylesheets) để có được các trang thông tin trình bày theo yêu cầu riêng. Điểm
xuất phát cho tích hợp trình diễn thông tin luôn là một lớp trừu tượng của các
channels: tài liệu mô tả trình bày trên giao diện người dùng (user layout document).
Quá trình tích hợp các channel diễn ra tự động qua ba công đoạn để kết xuất tài liệu
cuối cùng hiển thị trên trình duyệt người dùng bằng các ngôn ngữ định dạng văn
bản HTML, XHTML, WML.
Các thuật ngữ chính trong phát triển ứng dụng channel:
Biến đổi cấu trúc (structure transformation) trừu tượng của người dùng
(userLayout) thành ngôn ngữ cấu trúc trình bày trang để hiển thị cuối cùng, xác
định bởi các thẻ định dạng trang (stylesheet). Khi đã có các thẻ này, uPortal sẽ tiến
hành các vòng lặp sắp xếp - trình bày (rendering cycle) trên dữ liệu XML của mỗi
channel, đưa vào cấu trúc chung của tài liệu.
Biến đổi trang trí (theme transformation) từ kết quả của biến đổi cấu trúc
chuẩn XML. Môi trường phát triển các ứng dụng cho uPortal hoàn toàn dùng
XML/XSL và công nghệ Java Servlet/Java Beans để làm việc, không sử dụng JSP.
Khi có yêu cầu trình diễn một thông tin nào đó thì dữ liệu kết xuất XML sẽ được
gởi đến cổng thông tin để trình diễn tại thời điểm các mã Java phát sinh. Các thông
tin gởi đến trình duyệt sẽ được tự động biến đổi phù hợp vào độ phân giải của màn
hình, chuẩn định dạng (HTML,XHTML,WML) của các trình duyệt khác nhau,
trong đó các thiết bị truy cập Internet di động. Về thực chất, công nghệ uPortal cho
phép tích hợp một website truyền thống (HTML) và một gateway (WAP/WML) mà
không cần phải đầu tư phát triển riêng rẽ.
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 5
Tìm Hiểu uPortal và xây dựng một chương trình Demo
1.2. Các thẻ định dạng (Stylesheets)
Cả hai kiểu biến đổi cấu trúc và biến đổi trình bày trong uPortal đều được thực
hiện thông qua các thẻ định dạng XSLT stylesheets. Mỗi thẻ được đăng ký với hệ
thống cần được mô tả trong tập tin câấ u hì nh SDF (stylesheet description file). Các
chi tiết để đăng ký thẻ này với uPortal được mô tả trong tài liệu triển khai và cấu
hình uPortal.
Thẻ định dạng cấu trúc (Structure stylesheets) Thẻ này định nghĩa biết đổi
XSLT của cấu trúc trình bày phân lớp của người dùng thành các thẻ cấu trúc tương
đương cho trình bày trang. Các thẻ này phải tiếp nhận dữ liệu với cả hai phần tử gốc
là <layout> và <layout_fragment>. Khuông dạng (DTD) của tài liệu kết xuất do tác
giả của thẻ định dạng lựa chọn, tuy nhiên phải tuân theo các quy tắc sau :
Phần tử <channel/> trong tài liệu kết xuất phải chứa tất cả thuộc tính và các
phần tử con đã có trong tài liệu gốc userLayout. Nói cách khác, XSLT có thể sinh
ra các thuộc tính và phần tử con trong thẻ <channel/> khi sao chép chúng từ
userLayout, nhưng không thể bỏ đi hay viết lại các thuộc tính hay phần tử con của
thẻ này trong tài liệu userLayout.
Phần tử <channel/> cần phải xuất hiện trong tài liệu kết xuất khi và chỉ khi nội
dung của channel này sẽ được tích hợp vào trong trình diễn cuối cùng. Nói cách
khác, một trong các mục đích của biến đổi cấu trúc là chọn lựa các tập con của các
mục đích kiểm soát di chuyển quá trình dịch. Trong trường hợp này, hãy kiểm tra
chỉ dịch phần tử mô tả các channel thêm thành gì đó khác với các phần tử
<channel/>.
Các tham số sau luôn chuyển giao cho các thẻ định dạng cấu trúc:
userLayoutRoot – một Id của userLayout node định nghĩa một cấu trúc cây
sẽ cần được dịch. Mục đích của tham số này là cho phép khả năng “zoom” tới phần
cụ thể của user layout. Thí dụ layout tab-column ngầm định cho phép xem một
channel trong một chế độ toàn màn hình (“full-screen” mode), khi mà một channel
được chọn chiếm toàn bộ trạng thái thực của màn hình trình duyệt, với chỉ còn
header và footer của Portal được thấy. Nhiệm vụ của thiết kế stylesheet là xác định
cách mà chế độ “zoom” này được trình diễn, và phần tử nào trong layout có thể
được “zoom-in”.
baseActionURL - là địa chỉ URL mà các tham số chuẩn của HTTP request có
thể thêm vào. Tham số này cho phép các stylesheet kiến tạo nên các đích (target) để
trả lại các tham số về portal. Tham số này cũng truyền cho các thẻ định dạng XSLT
stylesheet, ở đây nó càng quan trọng hơn. Các biến đổi cấu trúc ít khi tích hợp các
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 7
Tìm Hiểu uPortal và xây dựng một chương trình Demo
phần tử URL vì các tài liệu cần kết xuất của chúng cần phải độc lập với mọi ngôn
ngữ trình bày trang cụ thể.
Thẻ định dạng kiểu dáng trình bày (Theme stylesheet)
Theme stylesheet dùng cho quá trình dịch kết quả của biến đổi cấu trúc thành
ngôn ngữ trình bày trang. Các thẻ định dạng kiểu dáng này cần phải có khả năng
hiểu được các kết xuất sinh ra từ qúa trình dịch cấu trúc. Vì các kết xuất thường
thay đổi khá nhiều, các thẻ theme cần phải mô tả trong các tập tin định hình những
biến đổi cấu trúc mà chúng có thể xử lý. Các hạn chế trong khuôn dạng kết xuất là
giống như trường hợp thẻ định dạng cấu trúc (các thẻ chứa phần tử <channel/>).
Trong số các thông tin khác nhau, tập tin mô tả định dạng cho các thẻ theme phải
chứa đặc tả về thông tin mime type của đích, tên của bộ truyền (serialize) được sử
dụng để tạo ra luồng biểu diễn ký tự (character stream) và dạng của thiết bị có thể
4. Đăng ký sử dụng (Subscription). Người dùng của Portal có thể thực hiện quá
trình đăng ký để đưa channel vào cấu trúc trình bày riêng của mình. Đăng ký
channel sẽ kết thúc cấu hình channel bằng việc gán tất cả tham số cần thiết. các
channel được sử dụng sẽ phân biệt bởi channelSubscribeID, là thông tin duy nhất
riêng cho mổi user layout. Trong nội tại Portal, channel là các đối tượng Java được
xây dựng từ giao tiếp IChannel. Channel cùng là các thực thể duy trì trạng thái
(statefull entities) và trải qua phần lớn chu kỳ sống của chúng trong quá trình dịch.
Chu trình dịch bắt đầu bằng lời gọi tới phương thức để cập nhật trạng thái của
channel, setRuntinmeData() và tiến tới phương thức renderXML(). Các channel
phải có khả năng trình diễn các trạng thái của chúng trong khuôn dạng XML (thực
tế là một luồng SAX stream thay cho các chuỗi ký tự hay luồng ký tự).
Giao tiếp IChannel
Lớp org.jasig.portal.IChannel là giao diện nguyên thủy của các kênh trong
uPortal. Các phương thức sau được ứng dụng trong Ichannel
1. Phương thức setStaticData() đuợc gọi một lần duy nhất ngay sau khi khởi tạo
channel.
2. Mỗi một chu trình dịch (rendering cycle) sẽ chứa lời gọi đến phương thức
setRuntimeData() ngay trước khi gọi phương thức renderXML().
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 9
Tìm Hiểu uPortal và xây dựng một chương trình Demo
3. Phương thức receiveEvent() có thể được gọi trong chu trình dịch, nhưng phải
ngay trước lời gọi renderXML().
4. Phương thức getRuntimeProperties() có thể được gọi trong chu trình dịch,
trước lời gọi phương thức renderXML(), nhưng sau lời gọi phương thức
setRuntimeData().
Khi thực hiện quá trình dịch với phương thức renderXML(), các channels cần
phải cung cấp các luồng dữ liệu dạng SAX theo khuôn dạng well-formed XML. Khi
đó tài liệu XML sẽ được kết xuất. Tác giả của channels (publisher) có thể cung cấp
một số tham số thay đổi để người dùng channel lựa chọn trong quá trình đăng ký
vào channel.
Giao tiêp ICacheable
Các channel có thể thi công giao tiếp Icacheable, nếu chúng muốn lưu giữ các
thông tin dữ liệu trong nền Portal. Trong đa số trường hợp, sử dụng kỹ thuật
caching sẽ làm tăng đáng kể hiệu năng hoạt động của ứng dụng. Giao tiếp này đòi
hỏi các channel có khả năng tự tạo ra các khoá duy nhất tương ứng với trạng thái
của channel, và có khả năng kiểm tra sự tồn tại của các khoá này trong quá trình
vận hành. Thí dụ trong trường hợp của HTML, các channel luôn được chờ đợi để
kết xuất là các thẻ tài liệu HTML không chứa các thẻ <html>, <body> hay là
<head>. Cũng là thí dụ, nếu baseActionURL được sử dụng như là thuộc tính
“action” trong một phần tử HTTP form, tất cả tham số gửi theo form sẽ được
chuyển cho channel tạo ra form, trong đối tượng ChannelRuntimeData. Điều này
giúp cho các channel đặc quyền có thể thay đổi userLayout, UserPreferences và các
channel khởi tạo khác trước khi chu trình dịch và thông qua đó kiểm soát toàn bộ
nội dung của response.
Giao tiếp IMultithreadedChannel
Trong một số trường hợp, nhiệm vụ của channel có thể rất nặng nhọc. Khi đó
channel có thể chọn chỉ sinh một thực thể của đối tượng có nhiệm vụ sản sinh ra các
nội dung của channel đó trong toàn bộ user layout. Điều này có thể thực hiện đựoc
bằng các thi công giao diện IMultithreadedChannel thay cho giao diện IChannel
bình thường. các giả thiết và đảm bảo cho mỗi session của các multithreaded
channel là giống như của IChannel.
Liên lạc giữa các channel (inter-channel communication)
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 11
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Portal đưa ra phương pháp trao đổi thông tin giữa các channel trong cùng một
user layout. Ngữ cảnh JNDI lấy được từ đối tượng ChannelStaticData, có chứa
“/channel-ids” với ngữ cảnh con tương ứng với các tên chức năng (fname) của
channel trong user layout. Đối tượng channelSubscribeId được gán với mỗi thành
phần trong ngữ cảnh con, định nghĩa bởi tên chức năng. Bằng phương pháp này có
thể xác định channelSubscribeId cho tên chức năng của channel.