Chuẩn portlet JSR168 x

Một phần của tài liệu Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID (Trang 31 - 36)

Chuẩn portlet JSR 168[15] dùng để định nghĩa portlet và cách thức giao tiếp giữa portlet và portal.

Hình 2. 21: Mô hình chuẩn của JSR 168

Hình trên mô tả sự giao tiếp giữa portal và các portlet. Sự giao tiếp này được thực hiện thông qua các API được cung cấp bởi chuẩn JSR 168.

Một số khái niệm chính:

Portal

Portal là một ứng dụng web dùng để tích hợp các nội dung từ các nguồn khác nhau vào cùng một trang web. Các nội dung có thể được cấu hình tùy thuộc vào người sử dụng khác nhau mà Portal cho phép. Một Portal có thể chứanhiều Portlet.

Portlet

Portlet là một thành phần dựa trên nền Web sử dụng các công nghệ của Java. Portlet được quản lý bởi một Portlet Container. Portlet dùng để xử lý các yêu cầu và tạo ra các thành phần dữ liệu động để phản hồi các yêu cầu.

Portlet có thể tích hợp vào Portal và Portal sẽ cung cấp tầng trình diễn cho các thành phần của Portlet.

Nội dung được tạo ra bởi các Portlet được gọi là Fragment. Một Fragment là một mảnh dữ liệu được tạo ra bởi các ngôn ngữ như: HTML, XML… theo một định dạng được quy định. Các Fragment này có thể được kết hợp với các Fragment của các Portlet khác để hình thành trang Web của portal.

Người sử dụng tương tác với Portlet thông qua cơ chế yêu cầu/phản hồi được cung cấp bởi Portlet. Nội dung phản hồi yêu cầu được Portlet tạo ra và nội dung này cũng tùy thuộc vào cấu hình ứng với từng người sử dụng.

Portlet Container

Portlet Container cung cấp một môi trường để chứa đựng và quản lý chu kỳ sống của một Portlet.

Portlet Container nhận yêu cầu từ Portal và chuyển yêu cầu này đến Portlet tương ứng để Portlet xử lý yêu cầu và tạo nội dung phản hồi.

Giao diện Portlet

Giao diện Portlet khai báo các API cơ bản nhất của một Portlet. Mọi Portlet được xây dựng đều phải hiện thực hóa trực tiếp hoặc gián tiếp giao diện Portlet.

Lớp GenericPortlet hiện thực hóa giao diện Portlet và định nghĩa các chức năng cơ bản nhất mà một Portlet cần có. Do đó khi xây dựng Portlet, lập trình viên nên mở rộng trực tiếp hoặc gián tiếp lớp GenericPortlet này.

Một Portlet được quản lý thông qua chu trình sống của nó bắt đầu từ lúc Portlet được tải lên, tạo thể hiện của nó và khởi tạo, hoạt động để phản hồi yêu cầu của người sử dụng đến lúc nó được loại bỏ. Các phương thức được gọi đến trong chu trình sống của Portlet là:

• Gọi Phương thức init trong quá trình khởi tạo Portlet.

• Nêu yêu cầu do máy khách gởi tới là yêu cầu hành động( Action Request) thì

phương thức processAction được gọi. Nếu yêu cầu do máy khách gởi tới là yêu cầu biểu hiện ( Render Request) thì phương thức render được gọi

• Khi Portlet Container xác định một Portlet không còn sử dụng nữa thì gọi đến

phương thức destroy của Portlet đó. Khi phương thức destroy được gọi thì Portlet sẽ giải phóng tài nguyên mà nó đang sử dụng và lưu lại trạng thái hiện thời của nó.

Portlet URL

Một Portlet có thể tạo ra URL tham chiếu đến chính Portlet đó. Khi đó các URL này được gọi là Portlet URL.

Để tạo ra một Portlet URL thì Portlet cần phải sử dụng đối tượng PortletURL. Nếu phương thức createActionURL được gọi thì sẽ tạo ra một Action URL và nếu phương thức createRenderURL được gọi thì sẽ tạo ra một render URL.

Portlet Mode

Kiểu portlet xác định chức năng mà Portlet đó đang thực hiện. Thông thường Portlet thực hiện các tác vụ và tạo ra nội dung tùy thuộc vào chức năng hiện thời. Kiểu Portlet SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxiii

Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ cho ta biết những tác vụ nào một Portlet cần thực hiện và những nội dung nào Portet cần phải tạo ra.

Có 3 kiểu Portlet được quy đinh là:

• VIEW: (adsbygoogle = window.adsbygoogle || []).push({});

Chức năng chính của Portlet khi sử dụng kiểu VIEW là tạo ra nội dung cho biết trạng thái của Portlet.

Lập trình viên sẽ hiện thực hóa kiểu VIEW bằng cách định nghĩa lại phương thức doView của lớp GenericPortlet.

Mọi Portlet đều phải hỗ trợ mode VIEW .

• EDIT:

Trong kiểu EDIT, một Portlet sẽ cung cấp nội dung và cấu hình các thành phần của nó để người sử dụng có thể tối ưu hóa hoạt động của Portlet.

Lập trình viên sẽ hiện thực hóa kiểu EDIT bằng cách định nghĩa lại phương thức doEdit của lớp GenericPortlet.

Mọi Portlet không nhất thiết phải hỗ trợ kiểu EDIT.

• HELP

Trong kiểu HELP, Portlet cung cấp những tin về Portlet. Những thông tin này thường là những thông tin chung về toàn bộ Portlet.

Portlet Request

• Một yêu cầu gởi đến Portlet chứa các thông tin về yêu cầu từ phía máy khách, các tham số của yêu cầu, nội dung dữ liệu yêu cầu, kiểu Portlet, trạng thái cửa sổ…

• Yêu cầu được đại diện bởi một đối tượng và đối tượng này được truyền vào như là đối số của phương thức procesAction hay render.

• Mỗi đối tượng yêu cầu chỉ có thể hoạt động trong phạm vi của một phương thức

processAction hay render.

• Các chức năng cần thiết của đối tượng PortletRequest được khai báo trong giao

diện PortletRequest.

Portlet Respone

• Một phản hồi của Portlet bao gồm những thông tin được tạo ra bởi Portlet gởi trả về cho Portlet Container dựa trên yêu cầu được gởi đến như: sự thay đổi kiểu

Portlet, tiêu đề, nội dung… Portlet Container sẽ sử dụng những thông tin này để tạo ra phản hồi đến người sử dụng, thông thường là một trang Web Portal.

• Mỗi đối tượng phản hồi chỉ có thể hoạt động trong phạm vi của một phương thức

procesAction hay render.

• Các chức năng cần thiết của đối tượng Portlet Respone được khai báo trong giao diện PortletRespone.

Portlet Preferences

• Portlet thông thường được cấu hình cho phù hợp với từng người sử dụng. Các

thông tin về cấu hình của Portlet được gọi là Portlet Preference. Portlet Container sẽ chịu trách nhiệm lưu giữ những thông tin cấu hình này.

• Portlet có thể truy cập vào các thông tin cấu hình của nó thông qua giao diện

PortletPreferences và Portlet chỉ có thể thay đổi các thônt tinh về cấu hình của nó bên trong phương thức processAction.

• Định nghĩa Portlet xác định các thuộc tính preference mà một Portlet sử dụng. Định nghĩa này bao gồm các giá trị khởi tạo và xác định xem thuộc tính này có phải là thuộc tính chỉ đọc hay không.

Caching

• Việc lưu các nội dung cần sử dụng vào vùng nhớ tạm thời được thực hiện nhằm (adsbygoogle = window.adsbygoogle || []).push({});

mục đích rút ngắn thừoi gian xử lý của Portlet, đồng thời cũng rút ngắn thời gian xử lý của Server.

• Đặc tả Portlet xác định cơ chế hết hạn việc lưu trữ nội dung lưu tạm thời này. Cơ chế này hoạt động tùy thuộc vào từng Portlet và từng người sử dụng Portlet. Nội dung được lưu trữ tạm thời không được chia sẻ giữa các người sử dụng khác nhau đang sử dụng đồng thời cùng một Portlet.

• Một Portlet muốn tăng thời gian xử lý bằng cách sử dụng cơ chế lưu trữ tạm thời nội dung cần phải định nghĩa thời gian hết hạn của nội dung lưu tạm thời ( tính bằng đơn vị giây) trong đặc tả triển khai của nó. Ví dụ sau đây cho biết một Portlet muốn nội dung của nó được lưu trữ tạm thời và có thời gian hết hạn là 300 giây.

• Một Portlet nếu đã định nghĩa thời gian hết hạn lưu trữ dữ liệu tạm thời của nó trong đặc tả triển khai của nó vẫn có thể thay đổi được.

• Thời gian hết hạn của việc lưu trữ tạm thời này có thể được thay đổi bằng cách thay đổi thuộc tính của đối tượng RenderResponse.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxv

<portlet>

Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

• Nếu thời gian hết hạn này được gán bằng 0 thì việc lưu trữ dữ liệu tạm thời bị bỏ qua đối với Portlet. Nếu giá trị này được gán bằng -1 thì các nội dung lưu trữ tạm thời của Portlet sẽ không bao giờ bị hết hạn.

• Nêu một Portlet không định nghĩa thời gian hết hạn của dữ liệu lưu trữ tạm thời trong đặc tả triển khai của nó thì việc thay đổi giá trị thời gian này trong đối tượng RenderResponse sẽ không có tác dụng do sẽ bị Portlet Container bỏ qua.

• Nếu nội dung của Portlet được lưu trữ tạm thời và chưa hết hạn, đồng thời không có một yêu cầu nào đến Portlet từ phía người sử dụng thì Portlet Container sẽ sử dụng nội dung được lưu trữ tạm thời khi cần thiết.

Ứng dụng Portlet

Ứng dụng Portlet là một ứng dụng Web nên ngoài việc bảo gồm Portlet và đặc tả triển khai Portlet, nó còn có thể chứa các thành phần khác như: Servlet, trang JSP, các class… Do đó, bên cạnh các thông tinh về ứng dụng Portlet, nó còn chứa đựng thông tin về các thành phần được đưa vào ứng dụng Portlet.

Cấu trúc cây thư mục

Một ứng dụng Portlet cũng có cấu trúc cây thư mục được tổ chức giống như một ứng dụng Web. Tuy nhiên có một số khác biệt sau:

- Có thêm tập tin /WEB_INF/portlet.xml là tập tin đặc tả triển khai của Portlet.

- Các lớp được sủ dụng cho ứng dụng Portlet và các tài nguyên khác được truy cập bởi ứng dụng Portlet cần phải được lưu trong thưmục /WEB-INF/classes hoặc trong các tập tin JAR được lưu trong thư mục /WEB-INF/lib.

Tập tin lưu trữ của ứng dụng Portlet

Một ứng dụng Portlet cũng được đóng gói như một ứng dụng Web. Nghĩa là sử dụng dạng WAR (Web Application Archive) khi triển khai ứng dụng.

Các đặc tả đóng gói và triển khai

Đặc tả triển khai của ứng dụng Web và ứng dụng Portlet Trong các ứng dụng Portlet, luôn tồn tại 2 tập tin đặc tả là:

• Tập tin web.xml dung để đặc tả các tài nguyên của ứng dụng Web.

• Tập tin portlet.xml dung để đặc tả các tài nguyên của ứng dụng Portlet.

Các tài nguyên nào không liên quan đến Portlet thì được khai báo trong tập tin đặc tả web.xml. Còn các tài nguyên nào liên quan đến Portlet thì được khai báo trong tập tin

portlet.xml. Ngoài ra, một số thông tin của Portlet cần phải được khai báo trong tập tin web.xml như sau:

• Mô tả về ứng dụng Portlet được khai báo bằng thẻ <description>.

• Tên của ứng dụng Portlet được khai báo bằng thẻ <display-name>.

• Việc ánh xạ các vai trò bảo mật( Security Role Mapping) của ứng dụng Portlet

được khai báo bằng thẻ <security-role>. (adsbygoogle = window.adsbygoogle || []).push({});

Triển khai ứng dụng Portlet và ứng dụng Web

Các Portlet, đặc tả triển khai và mọi tài nguyên phải được đóng gói trong cùng một tập tin WAR. Trong đó, thư mục WEB-INF bao gồm các thành phần:

- Tập tin đặc tả triển khai /WEB-INF/portlet.xml

- Các lớp của Portlet nằm trong thư mục /WEB-INF/classes - Các tập tin JAR được lưu trong thư mục /WEB-INF/lib

Chương 3: Phân tích và hiện thực hệ thống đề tài luận

văn

Một phần của tài liệu Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID (Trang 31 - 36)