Đề tài Tìm hiểu uportal và xây dựng một chương trình demo
Muc luc
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. CAI ĐĂT VA XÂY DỰNG PORTLET TRONG UPORTAL
17
2.1. Cac bươc thưc hiên 17
2.1.1. Cai đăt uPortal 17
2.1.2. Cai đăt Plugins xây dưng Portlet cho NetBeans 19
2.2. Xây dưng BodyCheckPortlet 19
2.2.1. Tao Project BodyCheckPortlet 19
2.2.2. Xây dưng BodyCheckPortlet 20
2.2.3. Build BodyCheckPortlet.war 24
2.3. Triên khai BodyCheckPortlet lên uPortal 25
2.3.1. Triên khai BodyCheckPortlet 25
2.3.2. Xuât ban BodyCheckPortlet 26
2.3.3. Sư dung BodyCheckPortlet trong trang uPortal 29
Chương 1. CƠ SỞ LÝ THUYẾT
1.1. Giơi thiêu uPortal
1.1.1. Tông quan
Định nghĩa một cách tương đối, Portal là một phần mềm ứng dụng Web-
based, định danh và xác thực người dùng đăng nhập, từ đó sẽ cung cấp giao diện
mang tính cá nhân hóa cho người sử dụng. Thông qua giao diện này,người dùng dễ
dàng truy cập, khai thác, tìm kiếm, giao tiếp với các ứng dụng, các thông tin, và với
những người dùng khác.
Đứng trên khía cạnh công nghệ, ngày nay portal được coi như một giải
pháp(frame work) mà thông qua đó chúng ta có the quy tụ, quản lf nhiều ngugn
thông tin(bao ggm thông tin và ứng dụng phần mềm) khác nhau vào trong một thực
the phần mềm duy nhất-phần mềm portal. Từ đó, các thông tin được phân phối dưới
dạng các dịch vụ cho từng người dùng khác nhau tuh thuộc vào nhóm quyền, vào
nhu cầu cing như mục đích của người dùng đó.Có the nói, Portal như một cjng vào
vạn năng cho người dùng tìm kiếm thông tin và tác nghiệp một cách thuận lợi và dễ
dàng.
Giải pháp uPortal được tj chức kA-SlG phát trien trên nền công nghệ kava.
Đây là portal thông dụng nhất (nji tiếng nhất) trong các portal mm ngugn mn viết
trên kava. Tuy vậy, các module nghiệp vụ không được kA-SlG phát trien do đó các
hmng sử dụng giải pháp uPortal phải tự phát trien module nghiệp vụ hooc tích hợp
các module nghiệp vụ của hmng thứ 3
Hiện tại, uPortal chp áp dụng tiêu chuqn Portlet APl (kSr 168) cho phiên
bản 3.0, điều đó có nghĩa là các ứng dụng ** viết cho uPortal hooc ** 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 n siệt
Nam một số phiên bản uPortal 2.x ** được một số đơn vị siệt hoá và đưa sử dụng
n một số nơi như: giải pháp sPortal của sietSoftware cho tBNu TP Hà Nội giải
pháp Asia Portal của Asia Soft cho tBNu tpnh sĩnh Phúc.
31 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3027 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu uportal và xây dựng một chương trình demo, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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ơṕ : 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ôn̉g 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. CAÌ ĐẶT VA ̀XÂY DỰNG PORTLET TRONG UPORTAL
.................................................................................................................................17
2.1. Cać 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
2.2.2. Xây dựng BodyCheckPortlet ......................................................20
2.2.3. Build BodyCheckPortlet.war ......................................................24
2.3. Triên̉ khai BodyCheckPortlet lên uPortal .............................................25
2.3.1. Triên̉ khai BodyCheckPortlet ....................................................25
2.3.2. Xuất ban̉ BodyCheckPortlet ......................................................26
2.3.3. Sử dụng BodyCheckPortlet trong trang uPortal .........................29
Chương 1. CƠ SỞ LÝ THUYẾT
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 2
Tìm Hiểu uPortal và xây dựng một chương trình Demo
1.1. Giới thiệu uPortal
1.1.1. Tôn̉g quan
Định nghĩa một cách tương đối, Portal là một phần mềm ứng dụng Web-
based, định danh và xác thực người dùng đăng nhập, từ đó sẽ cung cấp giao diện
mang tính cá nhân hóa cho người sử dụng. Thông qua giao diện này,người dùng dễ
dàng truy cập, khai thác, tìm kiếm, giao tiếp với các ứng dụng, các thông tin, và với
những người dùng khác.
Đứng trên khía cạnh công nghệ, ngày nay portal được coi như một giải
pháp(frame work) mà thông qua đó chúng ta có thể quy tụ, quản lý nhiều nguồn
thông tin(bao gồm thông tin và ứng dụng phần mềm) khác nhau vào trong một thực
thể phần mềm duy nhất-phần mềm portal. Từ đó, các thông tin được phân phối dưới
dạng các dịch vụ cho từng người dùng khác nhau tuỳ thuộc vào nhóm quyền, vào
nhu cầu cũng như mục đích của người dùng đó.Có thể nói, Portal như một cổng vào
vạn năng cho người dùng tìm kiếm thông tin và tác nghiệp một cách thuận lợi và dễ
dàng.
Giải pháp uPortal được tổ chức JA-SIG phát triển trên nền công nghệ Java.
Đây là portal thông dụng nhất (nổi tiếng nhất) trong các portal mã nguồn mở viết
trên Java. Tuy vậy, các module nghiệp vụ không được JA-SIG phát triển do đó các
hãng sử dụng giải pháp uPortal phải tự phát triển module nghiệp vụ hoặc tích hợp
các module nghiệp vụ của hãng thứ 3
Hiện tại, uPortal chỉ áp dụng tiêu chuẩn Portlet API (JSR 168) cho phiên
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
thành ngôn ngữ định dạng trang, thông qua các thẻ trang trí (theme stylesheet). Thí
dụ trang trí bảng lồng nhau ngầm định (nested-tables) sẽ biến thành tài liệu có các
thẻ tab-column trong ngôn ngữ HTML hay WML.
Chuyển các dữ liệu (serialization) đã được biến đổi cùng với nội dung của
các channel cho các trình duyệt, cùng các thông tin về quy tắc của ngôn ngữ
(language) và phương tiện (media) trình bày trang.
uPortal hỗ trợ một số kiểu channel như sau
1. Custom Channel: dùng cho các ứng dụng web kết xuất thông tin XML,
viết bằng Java.
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 4
Tìm Hiểu uPortal và xây dựng một chương trình Demo
2. RSS (Rich Sumary Sites) Channel: kết xuất các thông tin theo chuẩn trao
đổi RSS.
3. XML/XSL Channel: kết xuất các thông tin thô được lưu trũ dạng XML
4. Inline Frame Channel: dùng trình bày các ứng dụng trong các khung có
thanh kéo (giống như các frame trong các trang web)
5. Image Channel: hiển thị các ảnh độc lập, có nhãn (label)
6. Remote / WebProxy Channel: kết xuất các thông tin và ứng dụng website
tại chỗ hay từ xa vào cổng thông tin.
Các phiên bản tiếp sau của uPortal sẽ hỗ trợ trao đổi và truy cập thông tin dựa
trên các dịch vụ Web theo các chuẩn SOAP, UDDI, WSDL, …
Tuy thuộc vào nội dung của từng channel mà ta sẽ chọn để đưa các kiểu
channel khác nhau vào cổng thông tin. Đối với những uPortal custom channel ứng
dụng website thì ta cần phải tuân thủ theo một số quy tắc được đề ra trong tài liệu
này để phát triển.
Mỗi channel trong uPortal có thể trình diễn thông tin tĩnh hay tương tác với
người sử dụng ở mức giao tiếp với ứng dụng theo mô hình J2EE (multi-tier web
application). Như vậy các nhóm triển khai channel ở tầng bussiness logic của ứng
dụng có thể tiến hành công việc song song với nhóm thực hiện trình bày giao tiếp
của ứng dụng. Họ chỉ cần thống nhất với nhau về các dữ liệu input và output theo
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à và . 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ử 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ẻ 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ử 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
channel từ tài liệu userLayout mà nội dung của nó cần cho trình diễn cuối cùng.
Để có trình diễn phong phú và linh hoạt từ tài liệu trừu tượng userLayout, các
thẻ định dạng thường cần biết thêm các thông tin bổ xung. dạng thông tin đơn giản
nhất được chuyển cho stylesheet cà các tham số (parameters) ở dạng name value.
Các tham số khai báo trong các stylesheet sử dụng kiểu định dạng chuẩn
. Tham số cần phải được mô tả trong tập tin SDF và tập tin này phải
được đăng ký với uPortal. Thí dụ cấu trúc ngầm định tab-column của thẻ XSLT
(tab-column.xsl) khai báo tham số : “activeTab” sẽ quả lý các tab mà người dùng
hiện đang nhìm thấy. Trong một số trường hợp, các thông tin này cần được liên kết
với các phần tử của userlayout do các biến tham số không đủ cho mục đích này.
Các thẻ định dạng cấu trúc cần khai báo (trong tập tin mô tả) các thuộc tính liên kết
với các phần tử hay của userLayout . có các thuộc tính của các
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 6
Tìm Hiểu uPortal và xây dựng một chương trình Demo
folder được định nghĩa thông qua the định dạng cấu trúc. Thí dụ tabcolumn.sdf sẽ
khai báo thuộc tính “width” tương ứng với phần tử của userLayout, và
diễn giải giá trị của thuộc tính này như độ rộng của cột cho các phần tử folder nào
được dịch thành các phần tử . Portal có thể giữ giá trị của cả hai tham số
và thuộc tính, định nghĩa bởi stylecheet. Tham số sẽ truyền cho stylesheet khi bắt
đầu quá trình dịch. Các giá trị thuộc tính folder và channel sẽ được trộn vào tài liệu
userLayout ngay trước khi biết đổi, nói cách khác stylesheet có thể chờ đợi các
thuộc tính được khai báo có mặt trong tài liệu gốc. Các giá trị của các tham số và
thuộc tính định nghĩa trong stylesheet có thể được thay đổi thông qua cú pháp URL,
hoặc bằng cách tương tác với lớp UserPreferences một cách trực tiếp. (xem chi tiết
dưới đây)
Nếu kết quả của biến đổi cấu trúc sẽ được lồng trong các phần tử
mà nội dung của nó không được hiển thị trong trình diễn cuối cùng, điều này sẽ làm
giảm thiểu hiệu năng hoạt động của Portal vì phải tốn thời gian dịch các kênh
không cần thiết một cách vô ích. Gợi ý: chúng ta có thể thường chỉ chọn một số
channel để dịch, nhưng cho thông tin về nhiều channel khác trong trình diễn chỉ với
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ử
.
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ử ).
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ể
hiểu được ngôn ngữ trình bày văn bản.
Các theme stylesheet có thể xác định các tham và thuộc tính riêng của
channel. Nhưng chúng không thể xác định thuộc tính folder vì sự tồn tại của folder
có thể khong được đảm bảo duy trì sau quá trình biến đổi cấu trúc. Các tham số
chuẩn như baseActionURL và userLayoutRoot được chuyển cho các thẻ theme
XSLT. Các thuộc tính channel định nghĩa trong stylesheet cũng sẽ được bổ xung
ngay trước khi quá trình dịch xảy ra.
1.3. Các kênh ứng dụng trong uPortal
Channel là các nguồn thông tin đơn vị của Portal. Nền Portal sẽ phối hợp các
channel lại để tạo ra kết xuất các thông tin chứa trong channel. Tuy nhiên Portal
không phải là khung chứa (container) của các channel như một số kiến trúc khác
trong công nghệ Java (servlet, EJB).
Chu trình sống của channel bao gồm những giai đọan sau:
1. Kiến tạo (Creation) tại thời điểm này các mã của lớp channel và các tài
nguyên cần thiết khác được kiến tạo và tài liệu channel publishing document (CPD
file) cũng được viết ra. Tài liệu CPD cho biết các thông tin mô tả và mục đích của
channel, đặc tả các lớp Java của channel, mô tả tham số cấu hình và chu trình xuất
bản cũng như đăng ký channel này. Tất cả tiến trình trên được thực hiện bởi tác giả
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 8
Tìm Hiểu uPortal và xây dựng một chương trình Demo
của channel. Sau khi kết thúc quá trình, channel có thể chuyển giao để cài đặt trong
Portal.
2. Đăng ký với Portal (Registration). Khi người quản trị Portal nhận được một
channel mới, channel này cần phải được đăng ký với hệ thống. Trong quá trình
đăng ký, Portal sẽ được cho biết sự hiện diện của channel và channel sẽ được gán
cho kiểu channelTypeId.
3. Xuất bản (Publishing). Để các channel đã đăng ký có thể trở nên hưu ích cho
người dùng, chúng phải được xuất bản trên Portal. Quá trình này bao gồm việc cấu
hình và gán các giá trị cho tham số của channel, và sắp xếp chúng thành từng loại
để dễ dàng sử dụng sau này.
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.
Một cách tương tự, giao diện org.jasig.portal.IMultithreadedChannel có thể
được thi công bởi một channel cần phải trở thành một thành phần của tài liệu được
xây dựng bởi ngôn ngữ định dạng trang hiện hữu.
Dữ liệu ChannelRuntimeData chức các thông tin về các yêu cầu gửi tới. Mặc dù
uPortal không ch phép các kênh bình thường truy cập đến các đổi tượng của HTTP
requests trực tiếp, các tham số chứa trong HTTP sẽ được chuyển giao đến channel
trong yêu cầu HTTP hiện hữu vào đối tượng ChannelRuntimeData, cùng với các
thành phần thông tin khác. uPortal sử dụng context path của các yêu cầu URL gửi
tới để xác định các kênh cần nhận dữ liệu. Các kênh cũng có thể kiến tạo phương
thức tự đánh địa chỉ (self-addressing) URL đích bằng cách thêm vào danh sách các
tham số gửi tới baseActionURL dành cho mỗi channel trong ChannelRuntimeData.
Theo quy ước, uPortal dành các tên gọi tham số bắt đầu bằng “uP_”. Nó không
quy định rõ các channel phải sinh ra các thông tin nội dung như thế nào. Nói chung
các channel phải dựa trên quá trình dịch XML thành các khuông dạng khác nhau,
dựa trên XSLT để có thể trao đổi thông tin kết xuất với nhiều khuôn dạng khác
nhau.
Giao tiếp IPrivileged
Một số channels đòi hỏi phải truy cập các cấu trúc bên trong nền Portal, tương
tác trực tiếp với các đối tượng HTTP sessions, request và response và độ ưu tiên khi
xử lý. Các channel này phải thi công bằng giao tiếp IPrivileged, và thường được
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 10
Tìm Hiểu uPortal và xây dựng một chương trình Demo
xét như các channel đáng tin cậy (“trusted”). Các channel này lấy đối tượng
PortalControlStructures tại mội chu trình dịch và cho phép chúng khả năng truy cập
trực tiếp đến các lớp nền của Portal. Nếu các tham số trong yêu cầu được gửi đến
các kênh đặc quyền, phương thức setRuntimeData() của channel sẽ được triệu gọi
và trả lại giá trị trước bất cứ các channel nào khác trong session khi bắt đầu chu
trình dịch.
Portal luôn giả thiết là các channel có quyền này sẽ không thử tự mình xoá bỏ
chúng từ các user layout khi chúng là các kênh thực hiện chức năng dịch hiện hữu.
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ẻ , hay là
. 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.
Khi đối tượng channelSubscribeId đã biết, liên lạc với channel cần thiết có thể
được thực hiện hoăc̣ thông qua phương thức trao đổi tham số URL, hoặc tìm kiếm
ngữ cảnh con liên kết với channel (channel-bound sub-context) trong nhánh
“/channel-obj” của phần tử gốc ngữ cảnh JNDI. Mỗi một ngữ cảnh con của nhánh
“/channel-obj” được đặt tên với đối tượng channelSubscribeId của channel là chủ
của ngữ cảnh này. Channel là chủ của ngữ cảnh con có thể kết nối với bất kỳ đối
tượng nào trong không gian ngữ cảnh đó.
Dịch vụ Channel
Thực thể Entities cho ta phương pháp hoạt động chung của channel trong Portal,
có thể được đăng ký và gán vào nhành JNDI “/services”. Nhánh này sẽ sẵn sàng
cho truy cập cho mỗi channel trong đối tượng ChannelStaticData. Dịch vụ Channel
co thể được sử dụng để cung cấp phương pháp trung gian, có cấu trúc hơn trong
thiết lập liên lạc giữa các channel.
Các Workers
Nền Portal luôn cố gằng hạn chế khả năng của các thành phần riêng (như các
channel) trong việc kiểm soát kết xuất chung của servlet. Trong nhiều trường hợp,
điều mong muốn là một số thành phần có thể chiếm đoạt khả năng kiểm soát toàn
bộ HTTP response nhưng vẫn giữ là thành phần của Portal. Thí dụ một channel nào
đó muốn phục vụ luồng dữ liệu binary (tập tin, video) trong response. Các chức
năng như vậy được thực hiện thông qua việc sử dụng các các worker. Một địa chỉ
URL hướng đến một worker cụ thể sẽ được xây dựng bằng cách sử dụng giá trị của
ChannelRuntimeData.getWorkerActionURL() theo cách thức giống như ta vẫn làm
với chuỗi “baseActionURL”. Workers được cấu hình trong tập tin
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 12
Tìm Hiểu uPortal và xây dựng một chương trình Demo
worker.properties, và phiến bản 2.0 của uPortal sẽ bao gồm worker cho phép tải về
các tập tin.
1.4. Cấu trúc các đối tượng bên trong uPortal
Tổ chức bên trong của nền uPortal là một thực thể liên kết liên tục, nhưng các
lớp sau có trách nhiệm lớn lao: một channel có thể gắn với một đối tượng sinh ra
các sự kiện trong ngữ cảnh riêng của chúng và cho phép các channel khác đăng ký
như là các listeners.
PortalSessionManager. Đây là xuất phát điểm của Portal. Nó là một servlet
theo chuẩn J2EE, phù hợp với đặc tả servlet 2.3. Servlet này có nhiệm vụ xác định
và quản trị các yêu cầu HTTP được gửi tới Portal vào chuyển giao (dispatch) chúng
cho các đối tượng UserInstance.
UserInstance là đối tượng quả lý mọi thông tin của người dùng cụ thể. Đối
tượng này chứa các đối tượng UserLayoutManager và ChannelManager cho phiên
làm việc của người dùng. Nó cũng có trình nhiệm điều kiển chung các công đoạn
của quá trình dịch (rendering pipeline).
UserLayoutManager là đối tượng quản lý tài liệu userLayout và đối tượng
UserPreference. Nó đứng trung gian giữa các thay đổi của layout hay preference
cho phiên làm việc hiện hữu của người dùng.
ChannelManager quản lý trạng thái session của channel. Nó có trách nhiệm
phân phối các thông tin runtime cho channel và trao đổi đối tượng
ChannelRenderer. ChannelManager cũng quản lý các cache của channel.
ChannelRenderer là đối tượng chịu trách nhiệm điều phối các chu trình dịch
của các channel cụ thể.
JNDIManager có trách nhiệm khởi tạo và quản lý các ngữ cảnh JNDI.
PropertiesManager liên kết các thông tin cấu hình của Portal với các lớp
khác.
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ó
uPortal được phát triển với khả năng tích hợp các cơ chế và hạ tầng sẵn có.
Sau đây sẽ liệt kê một số cơ chế này
Hệ con xác thực (Authentication) và thông tin Thư mục
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 13
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Các thành phần của Authentication trong Portal quản lý đăng nhập người dùng
vào cổng thông tin. Các thành phần chính như sau:
1. Login channel quản lý và kết xuất dạng form đăng nhập với username và
password. Cơ chế bảo mật ngầm định là đối tượng SimpleSecurityContext đòi hỏi
các thông tin về username và password. Các thành phần xác thực còn lại được thiết
kế rất linh hoạt và cho phép xác thực không dùng mật khẩu. Trong các trường hợp
này sẽ kh6ng cần dùng đến Login Channel.
2. AuthenticationServlet quản lý các yêu cầu các yêu cầu và dữ liệu gửi từ
form đăng nhập. sau khi quá trình đăng nhập kết thúc thành công hay thất bại,
AuthenticationServlet trả lại quyền điều kiển cho hạ tầng của Portal.
3. Authentication Service được gọi bởi AuthenticationServlet để (1) thục
hiện xác thực, (2) lấy các thông tin thư mục của người dùng đã xác thực và (3) thiết
lập định danh riêng của Portal cho người dùng này vào trong layout đầu tiên. Dịch
vụ Authentication có thể xử lý các quy tắc (principals) và ủy nhiệm (credentials) lặp
lại nhiều lần.
Giao diện cung cấp bảo mật (security provider) được triệu gọi bởi dịch vụ xác
thực để xem xét các uỷ nhiệm xuất trình của người dùng đối với một người dùng
đăng ký trong hệ thống (principal). Thiết lập tham chiếu này bao gồm một số thiết
lập mẫu của dịch vụ bảo mật và được thực hiện bởi SimpleSecurityContext với các
mật khẩu lưu trữ trong Cơ sở dữ liệu được mã hoá theo chuẩn MD5. Các khai báo
cấu hình cơ chế bảo mật chứa trong security.properties, ngoại trừ
security.provider.ChainingSecurityContext.stopWhenAuthenticated được thêm vào
trong tập tin portal.properties. Sau khi người dùng After the user is logged in the
security context and person objects are available to channels via channelStaticData.
Dịch vụ PersonDirectory được gọi bởi dịch vụ Authentication để truy xuất các
thuộc tính thư mục của ngừôi dùng đã xác thực. Dịch vụ này trong các bản tham
chiếu sử dụng nhiều các nguồn thông tin từ JDBC/JNDI để truy xuất các thuộc tính
và ánh xạ vào đối tượng IPerson. Quy tắc ánh xạ khai báo trong tập tin
PersonDirs.xml. Kênh CpersonAttributes cho ta một thí dụ hiển thị các thông tin
thư mục cá nhân cho người dùng hiện hưu. [Các bình luận trong tập tin
PersonDirs.xml giải thích cú pháp đặc tả các thông tin nguồn cho lời query]
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 14
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Giao diện IUserIdentityStore là cơ chế lấy định danh duy nhất cho mỗi người
dùng được khai báo hay đăng nhập portal. Khi mà thuộc tính
org.jasig.portal.services.Authentication.autoCreateUsers được đặt là true thì thành
phần này sẽ tự động tạo các dữ liệu cần thiết cho người dùng portal, dựa vào người
dùng thay thế (template user). Người dùng thay thế này được đặc tả bằng cách ánh
xạ thuộc tính thư mục vào uPortalTemplateUserName. Nếu không có thuộc tính nào
có tên gọi như vậy, người dùng templete sẽ được lấy từ thuộc tính
org.jasig.portal.services.Authentication. defaultTemplateUserName.
Lưu trữ
Portal định nghĩa giao tiếp lưu trữ cho tất cả các dữ liệu cần có cho quá trình
quản trị portal. Cơ chế lưu trữ dữ liệu sử dụng hệ quản trị cơ sở dữ liệu quan hệ,
thông qua chuẩn giao tiếp JDBC. Giao tiếp này ngầm định tất cả dữ liệu phục vụ
bởi thi công giao tiếp là tự tương thích
Người dùng công cộng (Guest users)
Portal cho phép tối ưu hoá việc phục vụ người dùng công cộng (guest users).
Có thể có nhiều loại người dùng kiểu guest trong hệ thống có chung những đặc
trưng sau:
1. userLayout và preferences cho người dùng guest thay đổi rất hãn hữu.
2. Người dùng guest có nhiều phiên làm việc tiếp nối nhau trong hệ thống.
3. Người dùng guest không phải xác thực
Portal không cho phép người dùng guest thay đổi thêm bới bất cứ channel nào
trong hệ thống. Cài đặt ngầm định của portal giả thiết là người dùng guest không
cần phải xác thực với hệ thống và nếu người dùng này xác thực thì họ sẽ trở thành
các người dùng thông thường.
URL parameter syntax
Nền Portal dành riêng việc sử dụng một số tham số trong HTTP request với
tên gọi bắt đầu bằng “uP_”. Các tham số kiểu này được chia sẽ sử dụng cho các
channel hay các thẻ định dạng cấu trúc/trình bày để trao đổi thông tin với một tập
hợp giới hạn các lớp nền của Portal.
Các giao diện nền
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 15
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Một số giao diện đặc trưng tương tác giữa nền và môi trường bên ngoài như
sau
org.jasig.portal.IChannel
org.jasig.portal.ICacheable
org.jaisg.portal.IMultithreadedChannel
org.jasig.portal.IPrivileged
org.jasig.portal.IUserLayoutStore
org.jasig.portal.IChannelRegistryStore
org.jasig.portal.IUserIdentityStore
org.jasig.portal.security.ISecurityContext
org.jasig.portal.security.IOpaqueCredentials
org.jasig.portal.security.Iperson
org.jasig.portal.security.IPermission
org.jasig.portal.security.IAuthorizationService
org.jasig.portal.security.IauthorizationPrincipal
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 16
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Chương 2. Cà i đặ t và xây dựng Portlet trong
uPortal
2.1. Các bước thực hiện
2.1.1. Cài đặt uPortal
Tải ban̉ cài đặt uPortal-3.2.2-quick-start:
Bản naỳ bao gồm:
apache-ant-1.7.1
apache-maven-2.2.1
apache-tomcat-6.0.24
uPortal-3.2.2
Khởi chạy uPortal
Mở Run nhâp̣ vào cmd
Đưa đường dẫn trong cmd đến HOME _uPortal-3.2.2-quick-start
Nhập lệnh ant start
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 17
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Khởi động uPortal thành công
Nhập lệnh ant stop khi muốn tắt uPortal
Trên trình duyệt nhập
Trang Welcome của uPortal
Click vaò Sign in with CAS để đăng nhập vào cać chức năng cuả uPortal
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 18
Tìm Hiểu uPortal và xây dựng một chương trình Demo
2.1.2. Cài đặt Plugins xây dựng Portlet cho NetBeans
Tải Plugins tại điạ chỉ:
plugin-3_0_4_all.zip
Giải nén portalpack_3_0_4_all
Trong NetBeans vào Tools/Plugins/Downloaded/Add plugins choṇ Folder
portalpack_3_0_4_all kick Install
2.2. Xây dựng BodyCheckPortlet
2.2.1. Taọ Project BodyCheckPortlet
Trong NetBeans vào File/New Project
Chọn Java Web/Web Application
Đặt tên Project là BodyCheckPortlet
Chọn Server Tomcat 6.0
Tại Frameworks kick chọn Portlet Support
Chọn Create Portlet
Bấm Finish
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 19
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Project BodyCheckPortlet
2.2.2. Xây dưṇg BodyCheckPortlet
1. Thuật toán
Đây là Portlet để tính chỉ số khối lượng cơ thể (BMI: Body Mass Index) để
nhận định về tình trạng.
BMI (kg) = Cân nặng (kg) : ((chiều cao (m) x chiều cao (m)).
Chỉ số BMI đối với nữ cao hơn giới hạn trên 25 là béo và thấp hơn 18.5 là
gầy.
Chỉ số BMI đối với nam cao hơn giới hạn trên 25 là béo và thấp hơn 20 là
gầy.
Ví dụ: Một người nặng 55 kg cao 1m70 thì BMI =55:(1.7x1.7)=19.03
Người đó nữ thì thuộc loại bình thường không gầy, không béo.Nếu người đó
là nam thì thuộc loại gầy
2. Code
File BodyCheckPortlet.java
package com.portlet;
import javax.portlet.GenericPortlet;
import javax.portlet.ActionRequest;
import javax.portlet.RenderRequest;
import javax.portlet.ActionResponse;
import javax.portlet.RenderResponse;
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 20
Tìm Hiểu uPortal và xây dựng một chương trình Demo
import javax.portlet.PortletException;
import java.io.IOException;
import java.util.logging.Logger;
import javax.portlet.PortletRequestDispatcher;
/**
* BodyCheckPortlet Portlet Class
*/
public class BodyCheckPortlet extends GenericPortlet {
final static Logger LOG = Logger.getLogger("BodyCheckPortlet");
private String status = "";
private String sex= "";
public void doView(RenderRequest request, RenderResponse response) throws
PortletException, IOException {
LOG.info("doView.START");
response.setContentType("text/html");
request.setAttribute("status", status);
PortletRequestDispatcher dispatcher =
getPortletContext().getRequestDispatcher(
"/WEB-INF/jsp/BodyCheckPortlet_view.jsp");
dispatcher.include(request, response);
LOG.info("doView.END");
}
public void doEdit(RenderRequest request, RenderResponse response) throws
PortletException, IOException {
response.setContentType("text/html");
PortletRequestDispatcher dispatcher =
getPortletContext().getRequestDispatcher(
"/WEB-INF/jsp/BodyCheckPortlet_edit.jsp");
dispatcher.include(request, response);
}
public void doHelp(RenderRequest request, RenderResponse response) throws
PortletException, IOException {
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 21
Tìm Hiểu uPortal và xây dựng một chương trình Demo
response.setContentType("text/html");
PortletRequestDispatcher dispatcher = getPortletContext().
getRequestDispatcher("/WEB-INF/jsp/BodyCheckPortlet_help.jsp");
dispatcher.include(request, response);
}
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
LOG.info("processAction.START");
String height = request.getParameter("height");
String weight = request.getParameter("weight");
LOG.info("height=" + height + ";weight=" + weight);
float hei=Float.parseFloat(height);
float wei=Float.parseFloat(weight);
float BMI=wei/(hei*hei);
if(request.getParameter("sex").equals("men")){
if(BMI<20)
status = "Kết quả: Bạn hơi gầy một tí, đề nghị ăn bồi dưỡng thêm";
else if(BMI>25)
status = "Kết quả: Bạn hơi mập một tí, đề nghị thể thao nhiều thêm";
else status = "Kết quả: Bạn hoàn toàn bình thường, đề nghị luôn giữ sưć
khỏe";
}
else {
if(BMI<18.5)
status = "Kết quả: Bạn hơi gầy";
else if(BMI>25)
status = "Kết quả: Bạn hơi mập";
else status = "Kết quả: Bạn bình thường";
}
LOG.info("processAction.END");
}
}
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 22
Tìm Hiểu uPortal và xây dựng một chương trình Demo
File BodyCheckPortlet_view.jsp
<%-- Uncomment below lines to add portlet taglibs to jsp
--%>
Kiểm tra chỉ sô ́BMI
' method="POST">
Giới tính (nam/nư)̃:
Nam
Nư ̃
Chiều cao(m)(*):
Cân nặng(kg)(*):
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 23
Tìm Hiểu uPortal và xây dựng một chương trình Demo
${status}
2.2.3. Build BodyCheckPortlet.war
Kick chuột phải lên BodyCheckPortlet project nhấn Build
Quá trình Build ra file BodyCheckPortlet.war
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 24
Tìm Hiểu uPortal và xây dựng một chương trình Demo
2.3. Triển khai BodyCheckPortlet lên uPortal
2.3.1. Triển khai BodyCheckPortlet
Mở Run nhâp̣ vào cmd
Đưa đường dẫn trong cmd đêń HOME _uPortal-3.2.2
Nhập lệnh ant deployPortletApp -DportletApp=
”
F:\Documents\NetBeansProjects\BodyCheckPortlet\dist\BodyCheckPortlet.war”
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 25
Tìm Hiểu uPortal và xây dựng một chương trình Demo
2.3.2. Xuất bản BodyCheckPortlet
Login the uPortal with account admin/admin
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 26
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Select Portlet Manager
Chọn Register New Portlet, trong Select Type chọn Portlet, bấm Next
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 27
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Trong Summary Information chọn BodyCheckPortlet, bấm Next
Điền thông tin cho Portlet
Channel Title: BodyCheckPortlet
Dynamic Title: checked
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 28
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Channel Name: BodyCheckPortlet
Channel Functional Name
Channel Description: BodyCheckPortlet
Channel Timeout: 5000
Channel Secure: no check
Click on Next button
Điền thông tin cho Portlet Descriptor
Framework Portlet: false
Portlet Web Application Path: /BodyCheckPortlet
Portlet Name: BodyCheckPortlet
Click on Next button.
Chọn Categories cho Portlet
Chọn Development, bấm Select, bấm Next 4 lần
Bấm Save để lưu cấu hình Portlet
2.3.3. Sư ̉dụng BodyCheckPortlet trong trang uPortal
Chọn Add tab
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 29
Tìm Hiểu uPortal và xây dựng một chương trình Demo
Chọn Add Content
Chọn Development/BodyCheckPortlet, chọn AddtoMy Page
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 30
Tìm Hiểu uPortal và xây dựng một chương trình Demo
BodyCheckPortlet đã được hiên̉ thị
Trần Huỳnh Tiến Lớp : 07T3 Nhóm 10A Trang 31
Các file đính kèm theo tài liệu này:
- Tìm Hiểu uPortal và xây dựng một chương trình Demo.pdf