Lập trình trên Gridsphere

Một phần của tài liệu Đồ án tốt nghiệp XÂY DỰNG CỔNG THÔNG TIN CHO HỆ THỐNG LIÊN THƯ VIỆN GOODAS (Trang 45)

5. Cấu trúc đồ án

1.10Lập trình trên Gridsphere

Lập trình trên Gridsphere thực chất là viết các portlet trên đó, như đã trình bày ở trên, Gridsphere có khả năng tương thích với nhiều loại portlet, và vấn đề là bạn nên chọn loại portlet phù hợp với ứng dụng của mình để phát triển, mang lại hiệu quả cao nhất.

1.10.1 JSR 168 portlet

Portlet thực chất là một công nghệ dựa trên java web based component, nó được quản lý bởi portlet container, xử lý các yêu cầu và tạo ra nội dung động tương ứng với yêu cầu. Portlet được sử dụng trong portal theo cơ chế "plug and play", khi người sử dụng cảm thấy cần thiết sử dụng portlet thì họ sử dụng portlet đó như là tài nguyên của hệ thống, khi không cần thì họ chỉ việc gỡ ra và không dùng nữa, mọi thao tác đều hết sức đơn giản.Nội dung được tạo ra bởi portlet được gọi là một đoạn (fragment hay piece), và nó có thể kết hợp với các portlet khác để tạo ra sự hiển thị hoàn chỉnh cho một chức năng nào đó.Portlet container quản lý vòng đời của một portlet, triệu gọi chúng khi có yêu cầu. Vòng đời của một portlet bao gồm 3 giai đoạn, thứ nhất là khởi tạo portlet thông quan phương thức init(), tiếp theo là xử lý yêu cầu tương ứng với nhiệm vụ của portlet đó, và hủy portlet thông qua phương thức destroy.Xử lý yêu cầu với portlet được chia làm hai loại, loại thứ nhất là render request handler được quản lý qua phương thức render(). Loại thứ hai là action request handler thông qua phương thức processAction(). JSR portlet được định nghĩa trong gói javax.portlet.Portlet bao gồm các phương thức chủ yếu:

public void init(PortletConfig config) throws PortletException

public void processAction(ActionRequest request, ActionResponse response)

throws PortletException, IOException.

public void render(RenderRequest request, RenderResponse response) throws

PortletException, IOException.public void destroy();

Đặc tả JSR cung cấp lớp portlet trừu tượng là javax.portlet.GenericPortlet thực thi (implement) từ lớp Portlet.JSR container mở rộng từ lớp GenericPortlet để tạo ra sự thực thi riêng của nó. Nó cung cấp các chức năng truyền thống như là doEdit(), doView(), doHelp().

Tạo JSR portlet project trong môi trường của Gridsphere Gidsphere hỗ trợ ant built script để tạo ra bộ khung của một portlet.

Ví dụ : cd /thư mục gridsphere, ant new-project sẽ hỏi tiêu đề của portlet muốn tạo ( eg Example Portlets), tên ứng dụng web (eg exampleportlets) và tạo ra một hệ thống thư mục ( eg exampleportlets) trong thư mục

GRIDSPHERE_HOME/projects. Tiếp đến bạn sẽ phải chọn loại portlet nào muốn phát triển, ví dụ jsr hay gs portlet.( nên sử dụng jsr 168 portlet vì tính khả chuyển và được hỗ trợ bởi nhiều framework). Script cũng tự động tạo ra các file cần thiết cho bạn cấu hình các portlet như portlet.xml, layout.xml,

group.sample.xml, portlet-config.xml.

Để tạo ra một portlet sau khi đã có bộ khung, chúng ta cần 3 bước, đầu tiên là tạo file code/jsp. Tiếp theo là config các file portlet.xml, layout.xml, group.xml trong thư mục WEB-INF tương ứng. Bước cuối cùng là sử dụng lệnh ant install để cài đặt portlet vào trong portal.

HelloWorld Portlet

Giống như khi bắt đầu làm quen với một ngôn ngữ lập trình nào đó, ví dụđầu tiên mà ta thực hiện đó là HelloWorld. Sau đây chúng ta sẽ viết một portelt như vậy.

Trước tiên bạn tạo một portlet project, nếu chưa có có thể làm theo các bước đã hướng dẫn ở trên.

Giả sử bạn đã có một portlet project mang tên coolportlets trong thư mục GRIDSPHERE/projects. Để tạo ra một HelloPortlet trong package ví dụ org.hpcc.coolportlets.portlets cần tạo ra hệ thống thư mục tương ứng với package trong thư mục src của coolportlets, ở đây là src->org->hpcc->coolportlets->portlets. Trong thư mục portlets, bạn tạo ra file HelloPortlet.java

1.10.2 Gridsphere Visual Bean

Phương thức processAction() sẽ trở nên vô cùng phức tạp khi có nhiều hành động cần xử lý trên cùng một form, các lệnh rẽ nhánh cúng có thể giải quyết vấn đề này nhưng toàn bộ mã nguồn sẽ trở nên vô cùng phức tạp, khó đọc, bảo trì và phát triển.

Gridsphere cung cấp mô hình cho phép quản lý form và các thành phần của trang HTML một cách rất đơn giản, mô hình này cung cấp một thư viện các thẻ giúp cho việc trình diễn giống như là sắp xếp các thành phần tương tự như dùng swing trong java, từ nay chúng ta gọi khả năng này là visual bean.Thay vì sinh mã HTML trong mã của portlet, Gridsphere cung cấp cơ chế dựa trên CSS/HTML, visual bean cung cấp cho người phát triển portlet có thể chỉnh sửa hay tạo ra các thành phần trình diễn một cách rất đơn giản như là nútnhấn, textbox , ..vv.. Các thành phần bean được định danh bởi beanId, giá trị của beanId giống như các nhãn, hình thức giống với kiểu đặt tên của biến trong các ngôn ngữ lập trình.Nhãn của beanId nên phản ánh nhiệm vụ của beanId đó trong portlet.

Bean được tạo ra và cập nhật sau mỗi yêu cầu, khi đó người phát triển có thể sử dụng các bean này. Cơ chế gần giống với java bean trong lập trình JSP.

Mọi thành phần bean đều có một lớp tương ứng với nó giúp cho việc quản lý các bean này một cách dễ dàng trong mã của portlet.

Ví dụ như thành phần trình diễn trong trang JSP là:

<ui:textfield beanId="textField1"/>

thì trong mã nguồn của portlet chúng ta có thể triệu gọi, xử lý nó thông qua lớp TextFieldBean, cụ thể :

TextFieldBean textField1 = event.getTextFieldBean("textField1");

Lập trình viên java khi phát triển portelt sẽ không cần biết HTML và CSS được xử lý như thế nào mà chỉ tập trung vào xử lý các bean.

1.10.3 Portlet Services

Mục đích chính của portlet service là đóng gói hoạt động nghiệp vụ và logic để có thể tái sử dụng với các portlet khác nhau, tối thiểu hóa nghiệp vụ logic đặt trong các portlet và có thể dùng nó giống như là một thư viện. Services được tạo ra và hủy bởi PortletServiceFactory. PortletService cung cấp phương thức init() và destroy để quản ly vòng đời."User services" cung cấp phương thức điều khiển truy nhập dựa trên thông tin điều khiển truy nhập của người sử dụng. Service được định nghĩa bởi một mô tả portlet service.

Dưới đây là một ví dụ về portlet service: HelloService, portlet này theo dõi việc nhập tên người sử dụng. (adsbygoogle = window.adsbygoogle || []).push({});

Tạo ra file src/services/examples/HelloService.java với hai phương thức

public interface HelloService extends PortletService { public void addName(String name);

public List getNames(); }

Tạo ra file thực thi phương thức:

src/services/examples/impl/HelloServiceImpl.java.

public class HelloServiceImpl implements PortletServiceProvider, HelloService {

private List list = new ArrayList();

public void init(PortletServiceConfig config) { } public void destroy() { } // for now don’t use public void addName(String name) {

list.add(name); }

return list; }

}

Thêm một file miêu tả đầu vào trong thư mục webapps/WEB- INF/PortletServices.xml:

<service>

<name>HelloService</name>

<description>an example service</description>

<interface>services.examples.HelloService</interface> <implementation>services.examples.impl.HelloServiceImpl </implementation>

</service>

Sử dụng services vừa tạo ra có thể được sử dụng thông qua một portlet, thể hiện của service có thể lấy được thông qua PortletContext

public class HelloWorld extends AbstractPortlet {

public void init(PortletConfig config) throws UnavailableException {

hello =

(HelloService)config.getContext().getService(HelloService.class); }

public void processAction(ActionRequest req, ActionResponse res) { String name = req.getParameter(“name”);

hello.addName(name); }

CHƯƠNG 4: CỔNG THÔNG TIN HỆ THỐNG TÌM KIẾM & SO KHỚP TÀI LIỆU GOODAS

Sau khi trình bày về các công nghệ liên quan, chương này sẽ tiến hành phân tích về mặt chức năng portal của hệ thống GOODAS bao gồm các ca sử dụng và kịch bản tương tác giữa chúng, đồng thời thiết kết các lớp cho các ca sử dụng đó.

Một phần của tài liệu Đồ án tốt nghiệp XÂY DỰNG CỔNG THÔNG TIN CHO HỆ THỐNG LIÊN THƯ VIỆN GOODAS (Trang 45)