Xây dựng các portlet bằng Geronimo Apache và Eclipse

Quản lý cổng Web Liferay bằng nền các công cụ Web của Eclipse (WTP)

Các nhà phát triển Web có thể xây dựng các cổng Web (portal) đa chức năng bằng cách sắp xếp các thành phần hướng sự kiện, đơn giản và tái sử dụng được gọi là các portlet. Eclipse làm cho quá trình này thậm chí còn đơn giản hơn nữa. Trước hết, hãy tìm hiểu nền các công cụ Web của Eclipse (Eclipse Web Tools Platform - WTP) cung cấp một môi trường phát triển hoàn chỉnh để biên tập mã và các tệp tin cấu hình cần thiết cho các dự án portlet như thế nào. Sau đó, bằng việc tích hợp trình bổ sung Apache Geronimo Eclipse, hãy tìm hiểu cách mà bạn có thể triển khai và hiển thị những portlet này bên trong một cổng Web đầy đủ bằng cách truy cập máy chủ ứng dụng Geronimo.

Matthew Scarpino, Phát triển Java, Eclipse Engineering, LLC

Matthew Scarpino là nhà quản lý dự án và nhà phát triển Java tại Eclipse Engineering LLC. Ông là tác giả hàng đầu của SWT/JFace in Action và có đóng góp nhỏ nhưng quan trọng vào Standard Widget Toolkit (SWT). Ông thích nhạc dân gian Ailen, chạy maratông, thơ của William Blake, và Graphical Editing Framework (GEF).



20 05 2009

Trước khi bạn bắt đầu

Về tài liệu hướng dẫn này

Với các công cụ mã nguồn mở thích hợp, bạn có thể xây dựng nên một cổng Web có khả năng và đa chức năng như là địa chỉ mạng của một công ty lớn. Hướng dẫn này khảo sát một phương pháp tạo ra một cổng Web như vậy bằng cách sử dụng 3 công cụ:

  • Môi trường phát triển tích hợp (IDE) Eclipse để phát triển dự án.
  • Một máy chủ ứng dụng Apache Geronimo để triển khai nó.
  • Cổng Web Liferay để cung cấp cấu trúc tổng thể.

Cần một số nỗ lực để cài đặt các thành phần này và khắc phục những sự không tương hợp về phiên bản. Nhưng sau khi lập cấu hình, quá trình xây dựng và triển khai cổng Web sẽ thông suốt.

Mục tiêu

Hướng dẫn này trình bày:

  • Tổ chức và đơn giản hoá phát triển cổng Web với WTP Eclipse.
  • Cơ cấu các portlet trong cổng Web Liferay.
  • Triển khai một ứng dụng portlet dựa servlet lên một máy chủ ứng dụng Geronimo.
  • Triển khai một ứng dụng portlet dựa trên Java™Server Pages (JSP) với một máy chủ ứng dụng Geronimo.

Điều kiện tiên quyết

Tài liệu hướng dẫn này viết cho các nhà phát triển Java bản doanh nghiệp mà có kỹ năng và kinh nghiệm từ trình độ mới bắt đầu cho đến trung cấp. Bạn cần có hiểu biết thông thường về công nghệ Java, các servlet, và các trang JSP cũng như phải biết qua Eclipse và cách nó quản lý các dự án.

Yêu cầu về hệ thống

Để bắt đầu hướng dẫn này, bạn cần một phiên bản Eclipse 3.2 gần đây hoặc mới hơn trên hệ thống của bạn. Bạn sẽ cài đặt WTP, máy chủ Geronimo, máy chủ runtime Geronimo và nền cổng Web Liferay khi học theo hướng dẫn này.


Cổng Web, portlet, và Geronimo

Tìm hiểu sự khác nhau giữa cổng Web và portlet, và khám phá vai trò của Geronimo Apache trong việc tạo ra chúng.

Giới thiệu về cổng Web và portlet

Java Specification Request (JSR) 168 định nghĩa cổng Web (portal) là “một ứng dụng Web mà thường cung cấp sự cá nhân hoá, đăng nhập một lần, gộp nội dung từ các nguồn khác nhau và chủ chứa tầng trình bày của các Hệ thống Thông tin”. Nó định nghĩa portlet là “một ứng dụng Web thành phần, do một thùng chứa portlet quản lý, xử lý các yêu cầu và tạo ra nội dung động”. Về mặt chức năng mà nói thì các portlet tạo ra các đoạn tài liệu đánh dấu (markup) khi phản hồi các yêu cầu, và các cổng Web quản lý các đoạn tài liệu này và cơ cấu chúng vào một khung làm việc.

Các cơ quan lớn thường sử dụng các cổng Web để cung cấp cho người dùng nhiều khả năng sử dụng từ một trang duy nhất. Trong nhiều trường hợp, các cổng Web này cũng phục vụ như là các ứng dụng intranet để phục vụ truyền thông trong phạm vi toàn cơ quan. Việc phát triển các trang này sẽ không thể thực hiện được nổi với các servlet đơn khối, do đó các portlet được tạo ra như là các thành phần cắm chạy được, có thể thêm vào và sửa đổi một cách động. Nhờ tiêu chuẩn JSR 168 thông dụng, các nhà phát triển cổng Web có thể trộn vào và khớp nối với các portlet từ các nhà cung cấp khác nhau mà không cần thay đổi gì đáng kể. Vì vậy không cần phải viết lại các ứng dụng đăng ký, các trình tự động báo giá thị trường cổ phiếu (stock ticker), các trình tự động cập nhật tin (Really Simple Syndication - RSS) – chỉ đơn giản là tải về và triển khai, thế là xong.

May mắn thay, sẵn có nhiều công cụ mã nguồn mở để phát triển cổng Web cho tất cả mọi người sử dụng. Dự án Apache Jetspeed, được phát hành theo giấy phép của Apache, cung cấp một số lớn các đặc tính bao gồm việc truy cập cơ sở dữ liệu, đảm bảo an ninh dựa trên vai trò (role-based), và hỗ trợ cho Ngôn ngữ Đánh dấu Không dây (WML). Apache Pluto là một thực thi chuẩn của JSR 168, có nghĩa là nó có thể quản lý và hiển thị các portlet theo tiêu chuẩn nhưng không cung cấp các đặc tính bổ sung mà các nhà phát triển từng mong chờ. Cổng Web JBoss cũng rất phổ biến và được phát hành theo giấy phép công cộng GNU nhỏ (Lesser GNU Public License -LGPL).

Hướng dẫn này sử dụng các nền cổng Web Liferay để cơ cấu nên nội dung của nó. (Xem Liferay vs. Pluto ở cột bên để biết vì sao tôi chọn cổng Web này). Nền này được phát hành theo giấy phép của MIT, có nghĩa là bạn có thể sử dụng nó vào mục đích riêng mà không phải trả tiền bản quyền. Ngoài việc cung cấp một khung làm việc để hiển thị các portlet, nó còn tích hợp một số lớn các tính năng, bao gồm:

  • Xác định phiên bản và biên soạn phân tán dựa trên web (WebDAV).
  • Một Hệ thống Quản lý Nội dung hoàn chỉnh (CMS).
  • Sửa đổi danh bạ thông qua Giao thức Truy cập Danh bạ Gọn nhẹ (Lightweight Directory Access Protocol - LDAP).
  • Dịch thuật ngôn ngữ.
  • Hỗ trợ cho nhiều máy chủ ứng dụng khác nhau, gồm cả Geronimo.
  • Nhiều portlet mẫu miễn phí, gồm cả các dịch vụ chat (chat clients), lịch, đồng hồ, và các cung cấp RSS (RSS feeds).

Liferay so với Pluto

Pluto được gộp trong Geronimo và do quỹ phần mềm Apache (Apache Software Foundation) phát hành, vì vậy tôi thấy cần phải giải thích lý do tại sao tôi lại chọn Liferay làm cơ cấu khung cổng Web cho hướng dẫn này. Nó làm cho việc triển khai được dễ dàng. Liferay cung cấp một ứng dụng Web chạy được ngay trong Geronimo. Nhưng các tạo phẩm của Pluto trong kho chứa Geronimo không được đóng gói như là một ứng dụng web và không được kích hoạt khi Geronimo khởi động. Cho nên phải mất nhiều công sức để lập cấu hình một ứng dụng Pluto dành cho Geronimo và tích hợp nó vào trong thùng chứa Tomcat Apache.

Tuy nhiên, theo tư liệu trên trang mạng Pluto, Maven là ứng dụng được ưa thích để truy cập Pluto. Maven cung cấp nhiều ích lợi cho việc quản lý dự án lớn, nhưng theo như kinh nghiệm đau xót của tôi, trình bổ sung Maven không làm việc tốt với Eclipse và WTP. Trang mạng Pluto cũng nhấn mạnh (bằng các chữ màu đỏ sáng!) rằng “để tự động hoá việc triển khai/cài đặt các portlet, bạn phải sử dụng bản mã nguồn của Pluto”. Điều này hẳn có nghĩa là phải tạo lập và sửa đổi một dự án Eclipse với tất cả mã nguồn Pluto và các thư viện phụ thuộc. Với Liferay, bạn không bao giờ phải động đến mã nguồn để triển khai các portlet.

Cuối cùng là, Liferay cung cấp nhiều portlet và các chức năng miễn phí có sẵn đến nỗi tôi cảm thấy phải nhắc đến nó thậm chí nếu tôi muốn chọn Pluto như làm thùng chứa portlet. Và không chỉ tư liệu của Liferay là hơn nhiều so với của Pluto, mà nó thậm chí còn cung cấp các hướng dẫn bằng video về cách thực hiện các nhiệm vụ thông thường. Đến nay, tôi rất có ấn tượng với Liferay — thực sự, điều tôi than phiền duy nhất là nó cung cấp quá nhiều tính năng.

Ngoài ra, Liferay chứa một cơ cấu khung làm việc quy mô lớn để triển khai các ứng dụng Intranet tại các điểm phân tán. Theo cách này, các nhà quản trị trong các cơ quan lớn có thể tuỳ biến cổng Web cho từng chi nhánh, từng địa điểm và từng nhóm người trong cơ quan của mình.

Máy chủ ứng dụng Geronimo

Trong hướng dẫn này, bạn triển khai cổng Web mẫu và ứng dụng portlet vào một máy chủ ứng dụng Geronimo. (Geronimo được phát hành theo Giấy phép Apache của Quỹ phần mềm Apache [ASP].) Máy chủ ứng dụng Geronimo là máy chủ ứng dụng được chứng nhận hoàn toàn hợp chuẩn nền Java 2, bản Doanh nghiệp 1.4 (J2EE), Enterprise Edition, và tuy còn trẻ, nó vẫn đứng ngang hàng với các sản phẩm thương mại về các đặc tính, độ tin cậy và hiệu năng hoạt động. Máy chủ Ứng dụng WebSphere® của IBM® Bản Cộng đồng, là dựa trên Geronimo.

Geronimo có cấu trúc như một bộ mô đun các đối tượng quản lý gọi là Geronimo Beans (GBeans). Mỗi thành phần được gói trong một GBean và trưng bày vòng đời của mình để cho các thành phần khác tương tác đến. Một số thành phần quan trọng nhất trong Geronimo gồm:

  • Trình Môi giới Thông điệp ActiveMQ (ActiveMQ Message Broker).
  • Thùng chứa OpenEJB Enterprise JavaBeans (EJB).
  • Thùng chứa Tomcat hay Jetty Web.
  • Dịch vụ Phân giải tên dựa trên gọi Phương thức Từ xa (RMI-based).
  • Hệ Quản trị Cơ sở dữ liệu Quan hệ (RDBMS) Derby Apache.

Geronimo có thể sử dụng hoặc thùng chứa Tomcat hoặc Jetty Web để triển khai các ứng dụng của nó, nhưng hướng dẫn này dựa trên Geronimo với cài đặt Tomcat. Nếu bạn đã sử dụng Tomcat chạy độc lập, phần lớn hoạt động mô tả ở đây sẽ thấy quen thuộc. Tuy nhiên, bạn không thể truy cập Tomcat trực tiếp. Thay vào đó, bạn cần triển khai các ứng dụng của mình bằng cách sử dụng một trong ba phương thức triển khai Geronimo sau:

  • Công cụ dòng lệnh deploy.
  • Bàn điều khiển Web Geronimo.
  • Bộ triển khai nóng .

Tuỳ chọn cuối cùng này đòi hỏi việc gửi ứng dụng Web đến thư mục $(GERONIMO)/deploy, nơi mà Geronimo sẽ phát hiện ra nó. Trong hướng dẫn này, Eclipse sẽ tự động thực hiện việc triển khai nóng.

Trong khi triển khai, Geronimo tạo ra một phần tử mới trong kho của nó dành cho ứng dụng. Yếu tố này gọi là một tạo phẩm (artifact), được xác định bởi một cấu trúc thư mục đặc biệt. Bất kỳ ứng dụng nào mà phụ thuộc vào nó phải biết đến cấu trúc này. Ở đây, ứng dụng portlet mẫu phụ thuộc vào một tạo phẩm của Liferay, và tôi sẽ chỉ cho bạn thấy cách thông báo cho Geronimo về sự phụ thuộc này. Nhưng trước tiên bạn cần phải biết cách lấy về và lập cấu hình phần mềm đối với hướng dẫn này.


Tạo môi trường Eclipse

Viết mã các ứng dụng portlet không phải là điều khó. Khó là ở chỗ lấy về và cài đặt tất cả các phần mềm mà bạn cần sao cho bạn có thể viết mã các portlet trong Eclipse và triển khai chúng với Geronimo.

Các thành phần phần mềm cần thiết

Bạn cần có bốn thành phần chính sau đây:

  • WTP 1.5.1: Đặc tính này cho phép bạn tạo ra và biên tập các dự án Eclipse cho các ứng dụng web động. Nó cũng cung cấp việc triển khai trực tiếp các ứng dụng này bằng cách sử dụng các máy chủ ứng dụng hoặc máy chủ Web.
  • Geronimo Server Runtime: Trình bổ sung Eclipse này cho phép đặc tính WTP truy cập được vào một máy chủ Geronimo và sử dụng nó để triển khai các ứng dụng.
  • Geronimo application server: Máy chủ Geronimo triển khai các ứng dụng portlet trong cổng Web Liferay.
  • Liferay portal: Ứng dụng Web Liferay cung cấp khung cấu trúc để chủ chứa và hiển thị các portlet của bạn.

Cài đặt nền công cụ Web (WTP - Web Tools Platform)

Eclipse WTP có hai vai trò quan trọng trong hướng dẫn nàyl:

  • Nó cung cấp một phương tiện đơn giản để tổ chức các dự án ứng dụng Web và xuất ra thành các tệp tin WAR.
  • Với đặc tính bổ sung thích hợp, nó đóng vai trò là bàn điều khiển để khởi động, dừng, và giao tiếp với máy chủ Geronimo.

Nói đơn giản, WTP cho phép đi từ mã nguồn đến triển khai ứng dụng thông qua con trỏ và nhấn chuột.

Để cài đặt WTP, hãy thực hiện các bước sau:

  1. Mở Eclipse và nhấn Help > Software Updates.
  2. Chọn Find and Install sau đó đánh dấu tùy chọn Search for New Features to Install.
  3. Nhấn Next. Cửa sổ hiển thị trong Hình 1 xuất hiện.
    Hình 1. Chọn trang web cập nhật
    Selecting the update site
  4. Đánh dấu chọn hộp Callisto Discovery Site sau đó nhấn Finish.

    Ghi chú: Callisto Discovery Site đóng gói lại các dự án chứa nhiều đặc tính như WTP và đảm bảo tính tương thích về phiên bản giữa chúng.

  5. Nhấn OK khi danh sách các site nhân bản xuất hiện. Trang web như trong Hình 2 xuất hiện.
    Hình 2. Lựa chọn các đặc tính WTP
    Selecting the WTP features
  6. Đánh dấu chọn hộp Web and J2EE Development. Điều này báo cho bộ quản lý tải về các đặc tính tương ứng với Eclipse WTP. Bạn sẽ trông thấy một cảnh báo nói rằng các đặc tính này đòi hỏi phải có các đặc tính bổ sung để hoạt động được. Để chắc chắn rằng bạn có tất cả các phần phụ thuộc cần thiết, thí dụ như bộ biên tập trực quan (Visual Editor), khung làm việc biên tập đồ họa (Graphical Editor Framework - GEF), và khung làm việc mô hình hóa Eclipse (Eclipse Modeling Framework - EMF), nhấn Select Required. Khi cảnh báo biến mất, nhấn Next và chấp nhận thỏa thuận cấp phép này.
  7. Nhấn Next, rồi nhấn Finish.

    Ghi chú: Nếu bạn tiếp tục trông thấy một cảnh báo phụ thuộc, thậm chí sau khi đã nhấn Select Required, có thể bạn cần một phiên bản mới hơn hoặc bản ổn định hơn của Eclipse.

  8. Chọn để cài đặt tất cả các đặc tính, và khởi động lại Eclipse. Để kiểm tra lại xem các đặc tính đã được thêm vào chưa, chuyển đến Help > About Eclipse SDK, và nhấn Feature Details.

Cài đặt Máy chủ ứng dụng Geronimo

Do đã cài đặt WTP, bạn sẽ thấy nhiều chủng loại (category) dự án Eclipse mới, bao gồm các dự án EJB, dự án J2EE, và dự án Web. Dưới mục Web category, bạn có thể tạo ra các dự án Web động và dự án Web tĩnh. Dự án portlet trong hướng dẫn này là một dự án Web động, nhưng để triển khai dự án này bằng Geronimo, bạn phải có được máy chủ runtime Geronimo.

Thêm hỗ trợ WTP cho máy chủ ứng dụng Geronimo

Để bổ sung hỗ trợ WTP cho máy chủ ứng dụng Geronimo của bạn, hãy thực hiện các bước sau:

  1. Chọn Window > Preferences, mở mục Server, sau đó chọn Installed Runtimes. Trang ưa thích sẽ trông tương tự như phần trên đầu của Hình 3.

    Hình 3. Thêm một máy chủ run time vào Eclipse
    Adding a server run time
  2. Nhấn Add phía bên phải để thêm một máy chủ run time mới. Cửa sổ New Server Runtime, như trong hình 4, cho biết rằng WTP đã hỗ trợ một vài máy chủ, bao gồm JBoss và Tomcat. Nhưng trời ơi, Geronimo lại không có trong danh sách.
  3. Nhấn đường liên kết Don't see your vendor listed? Click here để quan sát xem máy chủ run time bổ sung nào đang có sẵn.
    Hình 4. Các máy chủ run time sẵn có
    Available server run times
  4. Trong cửa sổ Install New Server, chọn bản Geronimo ưa dùng (hướng dẫn này sử dụng bản 1.1), sau đó nhấn Next. Hãy nhớ số phiên bản này.
  5. Chấp nhận thoả thuận giấy phép, nhấn Finish, rồi nhấn OK trong cửa sổ sẽ xuất hiện.
  6. Eclipse tải về môi trường runtime Geronimo và hỏi xem bạn có muốn khởi động lại bàn làm việc không. Nhấn Yes.

Tải về Geronimo

Đến bây giờ, bạn đã kết hợp WTP Eclipse vào Eclipse và thêm hỗ trợ cho máy chủ ứng dụng Geronimo. Nhiệm vụ tiếp theo là tải về chính máy chủ.

Để tải về máy chủ ứng dụng Geronimo, thực hiện các bước sau:

  1. Chọn File > New > Other, sau đó chọn tùy chọn Server dưới mục Server.
  2. Nhấn Next để xem lại cửa sổ Define a New Server. Lần này, khi bạn mở mục Apache, bạn sẽ thấy các tùy chọn cho Geronimo.
  3. Chọn phiên bản của Geronimo mà bạn đã cài đặt hỗ trợ cho nó, sau đó nhấn Next.
  4. Trong cửa sổ tiếp theo, gõ nhập một địa chỉ thư mục trong hộp Application Server Installation Directory, và hãy chắc chắn rằng tùy chọn Geronimo with Tomcat được đánh dấu.
  5. Nhấn Download and Install, rồi nhấn OK.
  6. Khi tải về kết thúc, nhấn Finish.
  7. Kiểm tra máy chủ, mở Phối cảnh J2EE bằng cách chọn Window > Open Perspective > Other và chọn J2EE. Như thấy trong Hình 5, một số phiếu mới sẽ xuất hiện ở phần khung hình dưới của bàn làm việc.
    Hình 5. Khởi động máy chủ Geronimo
    Starting the Geronimo server
  8. Nhấn phiếu Servers, sau đó nhấn Run (được khoanh tròn màu xanh).

Quan sát khung hình Console để xem các mô đun Geronimo nào cũng như các mô đun ứng dụng và ứng dụng web nào đang khởi động. Để nhìn thấy bàn quản trị Geronimo chính, nhấn mục thanh công cụ mà trông giống như một quả địa cầu, và gõ nhập http://localhost:8080/console trong trường address. Gõ nhập system làm tên người sử dụng và manager là mật khẩu. Khung hình trình duyệt trông giống như Hình 6.

Hình 6. Bàn quản trị Geronimo
The Geronimo Administration Console

Ghi chú: Nếu không nhìn thấy mục có hình quả địa cầu trên thanh công cụ, chọn Window > Show View > Other, sau đó chọn tuỳ chọn Internal Web Browser dưới mục General.

Bạn sẽ sử dụng bàn quản trị này trong các phần tiếp theo. Do đó tôi khuyên bạn nên cứ để nó mở ra. Nếu bạn cần ngừng Geronimo, chỉ cần nhấn vào hình vuông màu đỏ ở bên phải của nút Run khi trông thấy phiếu Servers.


Cài đặt nền cổng Web Liferay

Cổng Web Liferay đã phát triển được hơn sáu năm, nhưng việc hỗ trợ đầy đủ cho Geronimo chỉ vừa mới được bổ sung. Xin kiểm tra lại trang web Liferay để tìm các hướng dẫn cài đặt khác nhau xem chúng có bị lỗi thời không.

Để cài đặt cổng Web Liferay, thực hiện các bước sau:

  1. Từ trang web Liferay (xem Tài nguyên), nhấn vào liên kết Downloads ở trên đầu.
  2. Cuộn xuống cho đến khi bạn trông thấy phần Application Server Plugins. Sẽ có ít nhất hai liên kết để tải về các tệp tin lưu trữ cấu hình (Configuration Archive - CAR):
    • Tệp tin liferay-portal-geronimo-tomcat-a.b.c.car chứa mô đun Liferay để gắn vào máy chủ Geronimo.
    • Tệp tin liferay-portal-geronimo-derby-pool-a.b.c.car chứa các tệp tin cần thiết để Liferay giao tiếp với mô đun cơ sở dữ liệu Derby gộp trong bản cài đặt Geronimo.
  3. Nhấn vào các liên kết này. Sau khi bạn đã tải về cả hai trình bổ sung, quay trở lại bàn điều khiển ứng dụng Geronimo trong trình duyệt Web Eclipse.
  4. Vì bạn đã tải về riêng lẻ các trình bổ sung này chứ không phải là truy cập một kho chứa trình bổ sung, bạn sẽ cần sử dụng lệnh deploy của Geronimo từ dòng lệnh. Tệp tin này (deploy.bat trong Microsoft® Windows® hoặc deploy.sh trong UNIX® hoặc Linux®) nằm trong thư mục bin gốc của Geronimo, do đó hãy bổ sung thư mục này vào biến môi trường PATH của bạn.
  5. Mở cửa sổ nhắc lệnh, chuyển đến thư mục chứa hai tệp tin CAR, và gõ nhập các lệnh sau theo đúng thứ tự (nhớ rằng người sử dụng mặc định tên là system, mật khẩu là manager):

    deploy install-plugin liferay-portal-geronimo-derby-pool-a.b.c.car
    deploy install-plugin liferay-portal-geronimo-tomcat-a.b.c.car


    Đừng lo lắng nếu bạn nhận được một lỗi trong cài đặt lần thứ hai. Có thể nó có nghĩa là trình bổ sung thứ hai đã được cài đặt đúng nhưng không khởi động được.
  6. Để xử lý vấn đề này, chuyển đến bàn quản trị Geronimo (Geronimo Administration Console), nhấn vào liên kết Web App Wars dưới tiêu đề Applications. Cửa sổ mới, hiển thị các ứng dụng Web của Geronimo, sẽ nhìn tương tự như Hình 7.
    Hình 7. Khởi động bàn điều khiển Liferay trong Geronimo
    Starting the Liferay Console in Geronimo
    Bạn có thể nhìn thấy bối cảnh của từng ứng dụng trong cột URL. Ứng dụng trên cao nhất sử dụng bối cảnh /remote-deploy và bàn điều khiển cho máy chủ Tomcat sử dụng bối cảnh gốc, hay /.
  7. Nhưng ứng dụng cuối cùng, cổng Web Liferay, cũng muốn bối cảnh gốc này, nên phải gỡ bỏ cài đặt bàn điều khiển Tomcat bằng cách nhấn vào Uninstall trong cùng một hàng với geronimo/welcome-tomcat/a.b.c/car. Sau đó, khởi động cổng Web Liferay bằng cách nhấn Start.

    Ghi chú: Không một tác vụ nào trong số này ảnh hưởng đến Geronimo Console.

  8. Có thể phải mất một ít thời gian, nhưng sau khi Geronimo khởi động ứng dụng cổng Web Liferay, chuyển đến http://localhost:8080/ trong trình duyệt Web Eclipse. Trang xuất hiện trông giống như trang chủ Liferay; để xem cổng Web này, nhấn vào liên kết Sign in ở phía trên bên phải. Sau đó, trong các hộp văn bản hiện ra, gõ nhập test@liferay.com là tên người dùng của bạn và test là mật khẩu của bạn. Nếu mọi việc tốt đẹp, bạn sẽ nhìn thấy trang như Hình 8.
    Hình 8. Cổng Web Liferay
    The Liferay portal

Trước khi tiếp tục, hãy bớt chút thời gian để xem lướt qua cổng Web Liferay. Khám phá các portlet và nhấn vào các liên kết và phiếu khác nhau. Tất cả các tính năng này, từ đồng hồ cho đến lịch, đều có sẵn miễn phí khi bạn bắt đầu tạo các ứng dụng của riêng bạn.


Các bộ mô tả triển khai

Do bạn đã triển khai cổng Web Liferay bằng Geronimo, bạn đã sẵn sàng thêm vào các portlet. Ví dụ này cho thấy cách tạo ra một portlet đơn giản mà hiển thị tất cả các thuộc tính sẵn có của nó. Nó bắt đầu bằng việc cài đặt Eclipse và các bộ mô tả triển khai và kết thúc với việc thêm vào các servlet và ứng dụng JSP.

Ghi chú: Nếu bạn không thích gõ nhập từng dòng mã, bạn có thể lấy về cả dự án Eclipse hoàn chỉnh (xem Tải về). Sau khi bạn tải về các tệp mã lệnh mẫu (code samples), chọn File > Import, sau đó chọn tuỳ chọn Existing Projects into Workspace dưới tiêu đề General.

Tạo tệp tin web.xml

Để tạo các tệp tin web.xml và geronimo-web.xml, thực hiện các bước sau:

  1. Trong Eclipse, chọn File > New > Project.
  2. Chọn Dynamic Web Project dưới tuỳ chọn Web.
  3. Đặt tên dự án là simpleportlet, sau đó nhấn Finish. Khi bạn mở các thư mục trong dự án, nó phải trông giống như Hình 9.
    Hình 9. Cấu trúc ban đầu của dự án Portlet
    Project structure

Hai bộ mô tả triển khai quan trọng xuất hiện ở phía dưới cùng của dự án: web.xml và geronimo-web.xml. Bộ mô tả triển khai đầu tiên mô tả thành phần web nói chung, còn cái thứ hai báo cho Geronimo biết cách ứng dụng sẽ được đóng gói và triển khai như thế nào. Trong dự án này, hãy sửa đổi web.xml sao cho nội dung của nó khớp với nội dung hiển thị trong Listing 1. Điều này có nghĩa là loại bỏ phần tử welcome-file-list và thêm các phần tử context-param, listener, servlet, servlet-mapping, và taglib, chúng được in đậm trong mã nguồn.

Listing 1. Bộ mô tả triển khai web.xml

Nhấp vào để xem mã nguồn

Listing 1. Bộ mô tả triển khai web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   <display-name>simpleportlet</display-name>
   <context-param><param-name>company_id</param-name><param-value>liferay.com</param-value></context-param><listener><listener-class>com.liferay.portal.kernel.servlet.PortletContextListener</listener-class></listener><servlet><servlet-name>simpleportlet</servlet-name><servlet-class>com.liferay.portal.kernel.servlet.PortletServlet</servlet-class><init-param><param-name>portlet-class</param-name><param-value>org.dworks.SimplePortlet</param-value></init-param><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>simpleportlet</servlet-name><url-pattern>/simpleportlet/*</url-pattern></servlet-mapping>
</web-app>

Tạo tệp tin geronimo-web.xml

Bộ mô tả triển khai thứ hai cho hướng dẫn này, geronimo-web.xml, thực hiện hai nhiệm vụ:

  • Báo cho Geronimo biết địa điểm và cách lưu trữ ứng dụng trong kho chứa của nó.
  • Xác định rõ rằng ứng dụng portlet của bạn phụ thuộc vào mô đun cổng Web Liferay.

Thêm văn bản in đậm trong Listing 2 vào tệp tin của bạn.

Listing 2. Bộ mô tả triển khai geronimo-web.xml

Nhấp vào để xem mã nguồn

Listing 2. Bộ mô tả triển khai geronimo-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1" 
xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.1" 
xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1" 
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.1">
   <sys:environment>
      <sys:moduleId>
         <sys:groupId>default</sys:groupId>
         <sys:artifactId>simpleportlet</sys:artifactId>
         <sys:version>1.0</sys:version>
         <sys:type>car</sys:type>
      </sys:moduleId>
      <sys:dependencies><sys:dependency><sys:groupId>liferay</sys:groupId><sys:artifactId>liferay-portal-tomcat</sys:artifactId></sys:dependency></sys:dependencies>
   </sys:environment>
</web-app>

Phần tử <moduleId> chứa bốn phần tử con, xác định địa điểm mà mô đun được triển khai của dự án sẽ được đặt trong kho chứa của Geronimo:

  • groupId: Thực thể đã tạo ra tệp tin (chẳng hạn như Apache).
  • artifactId: Tên của tệp tin.
  • version: Phiên bản tệp tin.
  • type: Định dạng của tệp tin (chẳng hạn như JAR).

Nhưng để khai báo các phần phụ thuộc của mô đun của ứng dụng, bộ mô tả chỉ cần xác định các phần tử con groupIdartifactId của cổng Web Liferay. Để xem các thông số này liên quan đến địa điểm tệp tin như thế nào, hãy mở thư mục kho chứa dưới thư mục gốc của Geronimo. Mỗi thư mục kho chứa thứ cấp lấy tên chính là groupId, của mô-đun, và mỗi tệp tin mô đun có thể tìm thấy trong thư mục $(GERONIMO)/repository/groupId/artifactId/version.


Tạo các bộ mô tả portlet

Các tệp tin web.xml và geronimo-web.xml là đủ để triển khai một servlet hoặc ứng dụng dựa-JSP, nhưng bạn cần một bộ mô tả triển khai thứ ba, portlet.xml, cho các ứng dụng portlet. Sau đó, vì portlet này phải được tích hợp vào cổng Web Liferay, bạn cần hai tệp tin nữa: liferay-portlet.xml và liferay-display.xml.

Tạo tệp tin portlet.xml

Tạo một tệp tin có tên là portlet.xml trong thư mục WEB-INF của dự án, và thêm nội dung trong Listing 3 vào nó. Các phần tử ở đây có cùng tên gọi và các chức năng như những phần tử tương ứng của các servlet trong web.xml, do đó trông quen thuộc. Một điều khác biệt thú vị về các bộ mô tả portlet là ở chỗ chúng mô tả các chế độ hoạt động nào có sẵn cho một portlet. JSR 168 đưa ra các chế độ cơ bản là Xem, Biên tập, và Trợ giúp, nhưng bạn có thể tạo ra các chế độ tùy chỉnh khi cần thiết. Chỉ có chế độ xem là cần phải có đối với một portlet; vì không có các phần tử con <portlet-mode> nào bên dưới phần tử <supports> Listing 3, chế độ Xem là chế độ duy nhất mà portlet đơn giản này hỗ trợ.

Listing 3. Bộ mô tả triển khai portlet.xml
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" 
version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd 
http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
   <portlet>
      <portlet-name>simpleportlet</portlet-name>
      <display-name>Simple Portlet</display-name>
      <portlet-class>org.dworks.SimplePortlet</portlet-class>
      <expiration-cache>0</expiration-cache>
      <supports>
         <mime-type>text/html</mime-type>
      </supports>
      <portlet-info>
         <title>Simple Portlet</title>
         <short-title>Simple Portlet</short-title>
         <keywords>Simple Portlet</keywords>
      </portlet-info>
      <security-role-ref>
         <role-name>administrator</role-name>
      </security-role-ref>
      <security-role-ref>
         <role-name>guest</role-name>
      </security-role-ref>
      <security-role-ref>
         <role-name>power-user</role-name>
      </security-role-ref>
      <security-role-ref>
         <role-name>user</role-name>
      </security-role-ref>
   </portlet>
</portlet-app>

Tạo tệp tin liferay-portlet.xml

Tạo một tệp tin nữa tên là liferay-portlet.xml trong thư mục WEB-INF, và thêm nội dung như trong Listing 4. Tệp tin này khớp các vai trò an ninh của portlet.xml với các vai trò cụ thể có tên tương tự trong Liferay. Nếu phần tử instanceable được gán trị là true, portlet này có thể được thêm nhiều lần vào bố cục trình bày của cổng Web Liferay.

Listing 4. Bộ mô tả triển khai liferay-portlet.xml
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 4.2.0//EN" 
"http://www.liferay.com/dtd/liferay-portlet-app_4_2_0.dtd">
<liferay-portlet-app>
   <portlet>
      <portlet-name>simpleportlet</portlet-name>
      <instanceable>true</instanceable>
   </portlet>
   <role-mapper>
      <role-name>administrator</role-name>
      <role-link>Administrator</role-link>
   </role-mapper>
   <role-mapper>
      <role-name>guest</role-name>
      <role-link>Guest</role-link>
   </role-mapper>
   <role-mapper>
      <role-name>power-user</role-name>
      <role-link>Power User</role-link>
   </role-mapper>
   <role-mapper>
      <role-name>user</role-name>
      <role-link>User</role-link>
   </role-mapper>
</liferay-portlet-app>

Tạo tệp tin liferay-display.xml

Tạo một tệp tin.xml cuối cùng, liferay-display.xml, trong thư mục WEB-INF, và thêm vào nội dung như trong Listing 5. Tệp tin này báo cho cổng Web biết mục nào mà portlet sẽ được đưa vào danh sách. Tôi sẽ đề cập đến các mục của Liferay khi tôi giải thích về quá trình triển khai và xem các portlet Liferay. Bây giờ, tất cả những gì bạn cần biết là ứng dụng portlet đơn giản này sẽ rơi vào mục Test.

Listing 5. Bộ mô tả liferay-display.xml
<?xml version="1.0"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 4.0.0//EN" 
"http://www.liferay.com/dtd/liferay-display_4_0_0.dtd">
<display>
   <category name="category.test">
      <portlet id="simpleportlet" />
   </category>
</display>

Với năm bộ mô tả (web.xml, geronimo-web.xml, portlet.xml, liferay-portlet.xml, và liferay-display.xml) xong xuôi, bạn đã xử lý xong vấn đề giao diện giữa máy chủ và cổng Web. Tiếp theo, bạn viết mã các hoạt động thực tế của portlet này.


Xây dựng và triển khai portlet dựa trên servlet

Tạo lớp SimplePortlet và triển khai ứng dụng lên máy chủ ứng dụng Geronimo.

Lớp mẹ GenericPortlet

Trước khi bạn xem xét mã của lớp SimplePortlet, tôi muốn đề cập ngắn gọn về lớp mẹ của nó, GenericPortlet. Hai phương thức hoạt động chính của lớp này là:

  • processAction(ActionRequest request, ActionResponse response): Thay đổi chế độ hoặc thông tin trạng thái của portlet.
  • render(RenderRequest request, RenderResponse response): Hiển thị portlet theo chế độ hiện tại và thông tin trạng thái.

Theo mặc định, phương thức render() gọi một trong ba phương thức tương ứng với các chế độ portlet lắp đặt từ trước: doView(), doEdit(), hay doHelp(). Như đã nói trên đây, phương thức View là chế độ duy nhất cần phải có, vì vậy lớp SimplePortlet chỉ gồm có phương thức doView().

Eclipse WTP thêm nhiều thư viện vào CLASSPATH của dự án của bạn, nhưng không một thư viện nào trong số đó chứa các lớp portlet. May thay, Geronimo bao gồm thư viện cần thiết (portlet-api-1.0.jar, như vào thời điểm viết bài này) trong thư mục $(GERONIMO)/repository/portlet-api/portlet-api/1.0). Bạn có thể dán tệp tin này vào dự án Eclipse, tạo ra một biến CLASSPATH trỏ tới địa chỉ này, hoặc sao chép nó vào thư mục $GERONIMO/lib/ext, nhưng bạn phải làm cho tệp tin này sẵn có cho dự án để biên dịch đúng đắn.

Tạo lớp SimplePortlet

Để tạo ra lớp SimplePortlet thực hiện các bước sau:

  1. Nhấn chuột phải vào tên đối tượng, sau đó chọn New > Class.
  2. Trong cửa sổ xuất hiện, gõ nhập org.dworks là tên của gói và SimpleProject là tên của lớp. Nửa trên của cửa sổ sẽ trông giống như Hình 10.
    Hình 10. Lớp portlet mới
    The new portlet class
  3. Nhấn Finish.
  4. Nhập hoặc dán mã như trong Listing 6.
    Listing 6. SimplePortlet.java
    package org.dworks;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.portlet.GenericPortlet;
    import javax.portlet.RenderRequest;
    import javax.portlet.RenderResponse;
    import javax.portlet.PortletException;
    
    public class SimplePortlet extends GenericPortlet {
       protected void doView(RenderRequest request, RenderResponse response)
          throws PortletException, IOException {
    		
          String portletName = "Portlet Name: " + getPortletConfig().getPortletName();
          String companyName = "Company Name: " + getPortletConfig().getPortletContext()
             .getInitParameter("company_id");
          response.setContentType("text/html");
          PrintWriter out = response.getWriter();
          out.println(portletName+"<br />"+companyName);
       }
    }

Hoạt động của portlet rất dễ hiểu. Phương thức doView() truy cập đối tượng cấu hình (PortletConfig) để nhận tên của portlet. Sau đó nó sử dụng đối tượng bối cảnh của mình (PortletContext) để nhận tham số ban đầu được xác định trong Web.xml. Như một servlet thông thường, nó sẽ hiển thị cả hai thông tin bằng cách sử dụng PrintWriter của đối tượng phản hồi.

Theo mặc định, Eclipse đặt bối cảnh ứng dụng của bạn ứng với tên dự án. Nhưng đối với một dự án portlet, bạn phải đặt bối cảnh đó là bối cảnh của cổng Web của nó, mà đối với Liferay thì chỉ đơn giản là thư mục gốc. Để thay đổi điều này:

  1. Nhấn chuột phải vào tên dự án trong Navigator, sau đó chọn Properties.
  2. Đánh dấu tuỳ chọn Web Project Settings phía bên phải.
  3. Xóa toàn bộ văn bản trong hộp Context Root.

Hình 11 chỉ ra cấu trúc dự án của tôi. Của bạn có thể khác, nhưng bạn phải chắc chắn rằng các tệp tin dự án này nằm ở đúng thư mục.

Hình 11. Cấu trúc của dự án Portlet đã hoàn tất
Structure of the completed Portlet project

Triển khai ứng dụng vào Geronimo

  1. Khởi động máy chủ Geronimo nếu chưa khởi động, và hãy chắc chắn rằng nó nạp mô đun cổng Web Liferay.
  2. Để triển khai ứng dụng của bạn, nhấn chuột phải vào tên dự án, sau đó chọn Run As > Run on Server.
  3. Nếu một cửa sổ xuất hiện, nhấn Finish. Trình duyệt Eclipse sẽ hiển thị cổng Web Liferay tại http://localhost:8080/.
  4. Bạn sẽ không nhìn thấy bất cứ thay đổi ngay lập tức nào trong cổng Web vì bạn chưa thêm nội dung portlet này. Để thêm portlet, nhấn vào liên kết Add Content được khoanh tròn trong Hình 12.
    Hình 12. Thêm một portlet mới vào cổng Web Liferay
    Adding a new portlet to the Liferay portal
  5. Mở mục Test rồi nhấn Add bên cạnh tùy chọn Simple Portlet. Bạn sẽ trông thấy một cửa sổ mới trong cổng Web giống Hình 13.
    Hình 13. Cửa sổ Simple Portlet
    Simple Portlet window

Xây dựng một portlet dựa-JSP

Servlet SimplePortlet thực sự rất đơn giản, nhưng sẽ thuận tiện hơn khi lấy HTML ra khỏi lớp Java và thêm nó vào một trang JSP. Việc làm này đòi hỏi bốn bước sau:

  1. Thêm Bộ mô tả Thư viện thẻ (TLD) và các tệp tin JAR của nó vào dự án.
  2. Cập nhật bộ mô tả triển khai web.xml để xác định TLD.
  3. Sửa đổi lớp servlet để điều chuyển việc xử lý đến trang JSP.
  4. Tạo trang JSP trong dự án.

Quá trình này sẽ không thay đổi tên dự án hay việc triển khai của nó trong Geronimo và Liferay, nên không cần thay đổi bất kỳ điều gì trong các bộ mô tả triển khai trừ web.xml.

Trỏ Geronimo vào TLD

Để trỏ máy chủ ứng dụng Geronimo của bạn vào TLD:

  1. Mở thư mục $(GERONIMO)/repository/liferay/liferay-portal-tomcat/x.y.z/liferay-portal-tomcat-x.y.z.car/WEB-INF. Hai thư mục quan trọng thường trú ở đây: lib và tld.
  2. Trong thư mục lib, sao chép tệp tin util-taglib.jar vào thư mục lib tương ứng trong trong thư mục WEB-INF trong dự án Eclipse của bạn. Nó biến mất khỏi thư mục này và xuất hiện trở lại như là một trong các Thư viện App Web kết hợp với dự án của bạn.
  3. Tạo một thư mục tên là tags dưới thư mục WEB-INF trong dự án Eclipse của bạn.
  4. Chuyển đến thư mục tld và sao chép tệp tin liferay-portlet.tld vào thư mục tags mới mà bạn đã tạo ra.
  5. Để báo cho Geronimo biết nơi tìm thấy TLD mà bạn đã thêm vào, tạo một mã định danh tham chiếu thống nhất (URI - Uniform Reference Identifier) để định danh nó. Thêm phần tử <jsp-config> như trong Listing 7 vào phần cuối của tệp tin web.xml của bạn và giữ nguyên phần còn lại của bộ mô tả.
    Listing 7. Cập nhật web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
       ...
    
       <jsp-config> <taglib> <taglib-uri>
    http://java.sun.com/portlet< /taglib-uri> < taglib-location>
    /WEB-INF/tags/liferay-portlet.tld< /taglib-location> </taglib> </jsp-config>
    </web-app>
  6. Servlet mới không truy cập trực tiếp RenderResponse mà nó điều chuyển việc xử lý đến trang JSP. Thay đổi phương thức doView thành có mã nguồn như trong Listing 8.
    Listing 8. Phương thức được cập nhật doView() của SimplePortlet.java
    protected void doView(RenderRequest request, RenderResponse response)
       throws PortletException, IOException {
    
       PortletRequestDispatcher prd = 
          getPortletContext().getRequestDispatcher("/view.jsp");
       prd.include(request, response);
    }

Mã của JSP, như trong Listing 9, sử dụng các thẻ đặc thù portlet để truy cập đối tượng cấu hình của portlet. Nó cung cấp cùng một đầu ra như servlet trước đó, nhưng cấu trúc HTML làm nó dễ đọc và dễ thay đổi hơn.

Ghi chú: Eclipse có thể thông báo lỗi không phân giải được đối tượng portletConfig nhưng nó vẫn triển khai và hiển thị đúng.

Listing 9. View.jsp
<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %>

<portlet:defineObjects />

Portlet Name: <%= portletConfig.getPortletName() %>
Company Name: <%= portletConfig.getPortletContext().getInitParameter("company_id") %>

Các thẻ defineObjects làm cho các đối tượng renderRequest, renderResponse, và portletConfig có thể truy cập được trong trang JSP. Sau đó đối tượng portletConfig cung cấp việc truy cập vào tên của portlet và đối tượng bối cảnh.

Các thẻ sẵn có khác bao gồm thẻ actionURL, báo cho portlet thực hiện một hành động, và thẻ renderURL, gửi tới portlet một yêu cầu biểu hiện (render request). Thẻ namespace cho phép đưa ra ngoài một phần của mã nguồn để chỉ sử dụng các mã định danh kết hợp với portlet.


Tóm tắt

Hướng dẫn này tập trung vào việc viết mã và triển khai các ứng dụng portlet JSR 168 cơ bản bằng Eclipse, Geronimo, và nền cổng Web Liferay. Thảo luận cơ bản này đề cập đến cách lấy về các thành phần cần thiết nói trên và kết hợp chúng bên trong các dự án Eclipse. Cụ thể, bạn đã tìm hiểu về hai dự án portlet cơ bản: một dự án sử dụng servlet để sinh ra các thẻ đánh dấu và một dự án sử dụng trang JSP. Tôi hy vọng rằng bạn sẽ có thể xây dựng được những thứ này dành cho các ứng dụng mô đun của riêng mình.

Có một vấn đề mà hướng dẫn này không đề cập tới, đó là nền tảng lý thuyết của các cổng Web và portlet. Nhưng do chủ đề này là rất hấp dẫn, nên tôi muốn kết thúc bằng một mô tả ngắn gọn về tiêu chuẩn portlet mới, JSR 286, JSR 286, và nó phải cung cấp những gì. Một trong những mục tiêu chính là cung cấp việc cải tiến trao đổi thông tin và phối hợp giữa các portlet, thí dụ như việc chia sẻ sự kiện và phân tán dữ liệu phiên làm việc. Một mục tiêu khác là là tiêu chuẩn hoá việc biểu hiện (rendering) không đồng bộ của các portlet, bằng cách đó cung cấp cho các nhà phát triển một phương tiện chung để tạo ra các cổng Web dựa XML (Ajax) JavaScript không đồng bộ.

Với việc tích hợp chặt chẽ như vậy của các portlet động, hẳn là có thể xây dựng một ứng dụng Web giống như Eclipse dựa trên các portlet chứ không phải các trình bổ sung. Có nghĩa là, một người sử dụng truy cập vào trang web sẽ tìm thấy cùng một kiểu GUI mà chúng ta đã gắn kết với Eclipse -- các khung nhìn khác nhau tương tác với một trình soạn thảo chung và hiển thị thông tin của nó. Lẽ dĩ nhiên, người sử dụng sẽ cần có một kết nối mạng tốc độ nhanh, và máy chủ cũng sẽ cần phải chạy nhanh. Tuy nhiên, khả năng đối với các cổng Web và portlet như vậy thật đáng kinh ngạc.


Các tải về

Mô tảTênKích thước
Ứng dụng cổng dựa trên Servlet1simpleportlet-servlet.war.zip4KB
Ứng dụng cổng dựa trên JSP2simpleportlet-jsp.war.zip91KB

Các ghi chú

  1. Thí dụ dự án portlet sử dụng một servlet
  2. Thí dụ dự án portlet sử dụng một trang JSP. Cả hai dự án có cùng tên, như vậy chúng không thể đồng thời nhập vào vùng làm việc Eclipse.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

  • Xem các bản tải về mới nhất Eclipse technologyalphaWorks của IBM.
  • Tải về phiên bản mới nhất của Apache Geronimo.
  • Tải về bản miễn phí của IBM WebSphere Application Server Community Edition -- một máy chủ ứng dụng J2EE hạng nhẹ xây dựng trên công nghệ mã nguồn mở Apache Geronimo được thiết kế để giúp bạn đẩy nhanh các nỗ lực phát triển và triển khai của mình.
  • Đổi mới dự án phát triển mã nguồn mở mới của bạn với IBM trial software, sẵn có để tải về hoặc trên DVD.

Thảo luận

Tải về thêm

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Nguồn mở, Công nghệ Java
ArticleID=385739
ArticleTitle=Xây dựng các portlet bằng Geronimo Apache và Eclipse
publish-date=05202009