Memperkenalkan Spesifikasi Portlet, Bagian 1

Dengan munculnya portal perusahaan yang semakin banyak, berbagai vendor telah membuat API yang berbeda untuk komponen portal, yang disebut portlet. Variasi antarmuka yang tidak kompatibel ini menimbulkan masalah bagi penyedia aplikasi, pelanggan portal, dan vendor server portal. Untuk mengatasi masalah ini, JSR (Java Specification Request) 168, Spesifikasi Portlet, dimulai untuk menyediakan interoperabilitas antara portlet dan portal.

JSR 168 mendefinisikan portlet sebagai komponen Web berbasis Java, dikelola oleh wadah portlet, yang memproses permintaan dan menghasilkan konten dinamis. Portal menggunakan portlet sebagai komponen antarmuka pengguna yang dapat dicolokkan yang menyediakan lapisan presentasi untuk sistem informasi.

Sasaran JSR 168 adalah sebagai berikut:

  • Tentukan lingkungan runtime, atau wadah portlet, untuk portlet
  • Tentukan API antara wadah portlet dan portlet
  • Menyediakan mekanisme untuk menyimpan data sementara dan persisten untuk portlet
  • Menyediakan mekanisme yang memungkinkan portlet menyertakan servlet dan JSP (JavaServer Pages)
  • Tentukan paket portlet untuk memungkinkan penyebaran yang mudah
  • Izinkan portabilitas portlet biner di antara portal JSR 168
  • Jalankan portlet JSR 168 sebagai portlet jarak jauh menggunakan protokol Layanan Web untuk Portlet Jarak Jauh (WSRP)

Industri TI telah menerima JSR 168 secara luas. Semua perusahaan besar di ruang portal adalah bagian dari grup pakar JSR 168: Apache, ATG, BEA, Boeing, Borland, Broadvision, Citrix, EDS, Fujitsu, Hitachi, IBM, Novell, Oracle , SAP, SAS Institute, Sun Microsystems, Sybase, TIBCO, dan Vignette. Daftar pendukung resmi bahkan lebih panjang.

Saat ini, JSR 168 sedang dalam tinjauan publik dan versi final direncanakan untuk September 2003.

Dalam artikel ini, pertama-tama kita mendefinisikan portal dan portlet, kemudian menjelaskan konsep yang diperkenalkan JSR 168, termasuk objek dasar API. Selanjutnya, kita menyelami fungsi JSR yang lebih canggih, seperti informasi pengguna, pelokalan, dan caching. Kami kemudian membahas poin ekstensi yang memungkinkan vendor portal untuk memperluas fungsionalitas yang saat ini ditentukan dalam spesifikasi portlet. Artikel ini diakhiri dengan deskripsi pengemasan dan penerapan aplikasi portlet.

Baca keseluruhan seri di Spesifikasi Portlet:

  • Bagian 1: Basahi kaki Anda dengan istilah dan konsep spesifikasi yang mendasari
  • Bagian 2: Implementasi referensi Portlet API mengungkap rahasianya

Definisi dasar

Di bagian ini, kami menjelaskan definisi dasar yang digunakan dalam spesifikasi portlet, termasuk arsitektur dasar portal, kontainer portlet, dan halaman portal.

Pintu gerbang

Sebuah Portal adalah aplikasi berbasis web yang menyediakan personalisasi, single sign-on, dan agregasi konten dari sumber yang berbeda, dan host presentasi lapisan sistem informasi. Agregasi adalah proses mengintegrasikan konten dari berbagai sumber di dalam Halaman Web. Portal mungkin memiliki fitur personalisasi yang canggih untuk menyediakan konten yang disesuaikan kepada pengguna. Halaman portal mungkin memiliki set portlet berbeda yang membuat konten untuk pengguna yang berbeda.

Gambar 1 menggambarkan arsitektur dasar portal. Aplikasi web portal memproses permintaan klien, mengambil portlet di halaman pengguna saat ini, dan kemudian memanggil wadah portlet untuk mengambil konten setiap portlet. Kontainer portlet menyediakan lingkungan runtime untuk portlet dan memanggil portlet melalui API Portlet. Kontainer portlet dipanggil dari portal melalui Portlet Invoker API; wadah mengambil informasi tentang portal menggunakan Portlet Provider SPI (Service Provider Interface).

Halaman

Gambar 2 menggambarkan komponen halaman portal dasar. Halaman portal itu sendiri mewakili dokumen markup lengkap dan menggabungkan beberapa jendela portlet. Selain portlet, halaman juga dapat terdiri dari area navigasi dan spanduk. Jendela portlet terdiri dari bilah judul dengan judul portlet, dekorasi, dan konten yang dihasilkan oleh portlet. Dekorasi dapat menyertakan tombol untuk mengubah status dan mode jendela portlet (kami akan menjelaskan konsep ini nanti).

Portlet

Seperti disebutkan di atas, portlet adalah komponen Web berbasis Java yang memproses permintaan dan menghasilkan konten dinamis. Konten yang dihasilkan oleh portlet disebut fragmen, bagian dari markup (mis., HTML, XHTML, atau WML (Wireless Markup Language)) yang mengikuti aturan tertentu. Fragmen dapat digabungkan dengan fragmen lain untuk membentuk dokumen lengkap, seperti yang ditunjukkan pada Gambar 3. Konten portlet biasanya digabungkan dengan konten portlet lain untuk membentuk halaman portal. Wadah portlet mengelola siklus hidup portlet.

Klien web berinteraksi dengan portlet melalui paradigma permintaan / tanggapan yang diimplementasikan oleh portal. Biasanya, pengguna berinteraksi dengan konten yang dihasilkan oleh portlet dengan, misalnya, mengikuti tautan atau mengirimkan formulir, sehingga tindakan portlet diterima oleh portal, yang kemudian diteruskan ke portlet yang ditargetkan oleh interaksi pengguna.

Konten yang dihasilkan oleh portlet mungkin berbeda dari satu pengguna ke pengguna lainnya tergantung pada konfigurasi pengguna portlet.

Wadah portlet

Sebuah kontainer portlet berjalan portlets dan menyediakan mereka dengan lingkungan runtime yang diperlukan. Wadah portlet berisi portlet dan mengatur siklus hidupnya. Ini juga menyediakan mekanisme penyimpanan persisten untuk preferensi portlet. Kontainer portlet menerima permintaan dari portal untuk menjalankan permintaan pada portlet yang dihosting olehnya. Wadah portlet tidak bertanggung jawab untuk mengumpulkan konten yang diproduksi oleh portlet; portal itu sendiri menangani agregasi.

Portal dan wadah portlet dapat dibangun bersama sebagai satu komponen suite aplikasi atau sebagai dua komponen terpisah dari aplikasi portal.

Konsep

Bagian ini menjelaskan konsep pemrograman dasar di JSR 168, seperti siklus hidup portlet, antarmuka, dan mode dan status jendela, serta akses sesi, akses penyimpanan persisten, dan cara menyertakan servlet dan halaman JSP.

Siklus hidup portlet

Siklus hidup portlet dasar dari portlet JSR 168 adalah:

  • Init: menginisialisasi portlet dan memasukkan portlet ke dalam layanan
  • Menangani permintaan: memproses berbagai jenis permintaan tindakan dan render
  • Hancurkan: lepaskan portlet dari layanan

Kontainer portlet mengatur siklus hidup portlet dan memanggil metode terkait pada antarmuka portlet.

Antarmuka portlet

Setiap portlet harus mengimplementasikan antarmuka portlet, atau memperluas kelas yang mengimplementasikan antarmuka portlet. Antarmuka portlet terdiri dari metode berikut:

  • init(PortletConfig config):untuk menginisialisasi portlet. Metode ini dipanggil hanya sekali setelah membuat contoh portlet. Metode ini dapat digunakan untuk membuat objek / sumber daya mahal yang digunakan oleh portlet.
  • processAction(ActionRequest request, ActionResponse response):untuk memberi tahu portlet bahwa pengguna telah memicu tindakan pada portlet ini. Hanya satu tindakan per permintaan klien yang dipicu. Dalam suatu tindakan, portlet dapat mengeluarkan pengalihan, mengubah mode portlet atau status jendela, mengubah status persistennya, atau menyetel parameter render.
  • render(RenderRequest request, RenderResponse response):untuk menghasilkan markup. Untuk setiap portlet di halaman saat ini, metode render dipanggil, dan portlet dapat menghasilkan markup yang mungkin bergantung pada mode portlet atau status jendela, parameter render, atribut permintaan, status persisten, data sesi, atau data backend.
  • destroy():untuk menunjukkan ke portlet akhir siklus hidup. Metode ini memungkinkan portlet untuk membebaskan sumber daya dan memperbarui data persisten apa pun yang dimiliki portlet ini.

Mode portlet

Mode portlet menunjukkan fungsi yang dilakukan portlet. Biasanya, portlet menjalankan tugas berbeda dan membuat konten berbeda bergantung pada fungsi yang mereka jalankan saat ini. Mode portlet memberi tahu portlet tugas apa yang harus dilakukan dan konten apa yang harus dihasilkan. Saat menjalankan portlet, kontainer portlet menyediakan mode portlet saat ini ke portlet. Portlet dapat mengubah mode secara terprogram saat memproses permintaan tindakan.

JSR 168 membagi mode portlet menjadi tiga kategori:

  1. Mode yang diperlukan: Setiap portal harus mendukung mode Edit, Help, dan View. Portlet setidaknya harus mendukung mode Tampilan yang digunakan untuk merender markup halaman. Mode Edit digunakan untuk mengubah pengaturan per pengguna untuk menyesuaikan markup portlet, dan mode Bantuan digunakan untuk menampilkan layar bantuan.
  2. Mode kustom opsional: Ini adalah mode yang dapat didukung oleh portal; sementara dalam mode opsional, portlet mungkin tidak dipanggil. Mode opsional mencakup mode Tentang untuk menampilkan pesan "tentang"; mode Config untuk membiarkan administrator mengkonfigurasi portlet; Edit_defaults mode untuk membiarkan administrator mengatur nilai mode Edit; mode Pratinjau untuk menampilkan pratinjau portlet; dan mode Cetak untuk membuat tampilan yang dapat dicetak dengan mudah.
  3. Mode khusus vendor portal: Mode ini tidak ditentukan dalam spesifikasi dan oleh karena itu khusus vendor.

Status jendela

Status jendela menunjukkan jumlah ruang halaman portal yang akan ditetapkan ke konten yang dihasilkan oleh portlet. Saat menjalankan portlet, kontainer portlet menyediakan status jendela saat ini ke portlet. Portlet dapat menggunakan status jendela untuk memutuskan berapa banyak informasi yang harus dirender. Portlet dapat secara terprogram mengubah status jendelanya saat memproses permintaan tindakan.

JSR 168 mendefinisikan status jendela berikut:

  • Normal: Menunjukkan bahwa portlet mungkin berbagi halaman dengan portlet lain. Ini adalah status jendela default.
  • Dimaksimalkan: Menunjukkan bahwa portlet mungkin satu-satunya portlet di halaman portal atau portlet memiliki lebih banyak ruang dibandingkan dengan portlet lain di halaman portal, dan oleh karena itu dapat menghasilkan konten yang lebih kaya daripada dalam keadaan jendela normal.
  • Diminimalkan: Menunjukkan bahwa portlet hanya menghasilkan keluaran minimal atau tidak ada keluaran sama sekali.

Selain status jendela ini, JSR 168 memungkinkan portal untuk menentukan status jendela khusus vendor.

Portlet dapat dipanggil di salah satu dari tiga status jendela ini, tetapi bebas untuk menghasilkan markup yang sama untuk ketiga status tersebut.

Toko persisten

Portlet dapat menyimpan data persisten untuk pengguna tertentu dengan menggunakan PortletPreferencesobjek. Preferensi dapat dibaca dan ditulis dalam fase tindakan, dan dibaca dalam fase render. Mode yang disukai untuk menulis preferensi adalah mode Edit, yang menyediakan layar penyesuaian bagi pengguna. Preferensi dapat berupa string atau nilai larik string yang terkait dengan kunci bertipe string. Preferensi dapat diatur sebelumnya dengan nilai default di deskriptor penerapan.

Preferensi dan definisi portlet dalam deskriptor penerapan bersama-sama menentukan portlet, terkadang disebut entitas portlet.

Sesi

Konsep sesi JSR 168 didasarkan pada yang HttpSessionditentukan untuk aplikasi Web. Karena aplikasi portlet adalah aplikasi Web, mereka menggunakan sesi yang sama dengan servlet. Untuk mengizinkan portlet menyimpan data sementara pribadi ke portlet, cakupan sesi default adalah cakupan portlet . Dalam cakupan ini, portlet dapat menyimpan informasi yang diperlukan di seluruh permintaan pengguna dan khusus untuk entitas portlet. Atribut yang disimpan dengan cakupan ini diawali dalam sesi oleh wadah portlet untuk menghindari dua portlet (atau dua entitas dengan definisi portlet yang sama) menimpa pengaturan satu sama lain.

Selain cakupan sesi portlet, JSR 168 mendukung cakupan sesi aplikasi Web . Dalam lingkup ini, setiap komponen aplikasi Web dapat mengakses informasi tersebut. Informasi dapat digunakan untuk berbagi status sementara di antara berbagai komponen aplikasi Web yang sama (misalnya, antara portlet, atau antara portlet dan servlet).

Termasuk halaman servlet / JSP

Untuk mendukung pola Model-View-Controller, portlet harus dapat menyertakan konten yang dihasilkan dari servlet dan halaman JSP. Dengan cara ini, portlet dapat bertindak sebagai pengontrol, mengisi kacang dengan data, dan menyertakan halaman JSP untuk membuat keluaran.

Di JSR 168, mekanisme include untuk servlet dan halaman JSP sama untuk Servlet API. Melalui konteks portlet, dispatcher permintaan diambil untuk jalur tertentu; yang include()metode kemudian meminta ini objek permintaan-operator:

PortletRequestDispatcher rd = getPortletContext (). GetRequestDispatcher (editJSP); rd.include (portletRequest, portletResponse);

Penyelarasan dengan WSRP

WSRP mengumpulkan konten yang dihasilkan oleh portlet yang dijalankan pada mesin jarak jauh yang menggunakan lingkungan pemrograman berbeda, seperti J2EE (Java 2 Platform, Enterprise Edition) dan .Net. Layanan WSRP adalah layanan Web yang berorientasi presentasi dan menghadap pengguna yang plug and play dengan portal atau aplikasi lain. Mereka mengizinkan bisnis menyediakan konten atau aplikasi tanpa memerlukan konten manual - atau adaptasi khusus aplikasi dengan menggunakan portal; portal dapat dengan mudah menggabungkan layanan WSRP tanpa upaya pemrograman.

Kelompok ahli JSR 168 secara hati-hati menyelaraskan konsep antara JSR 168 dan WSRP. Daftar berikut memperlihatkan seberapa banyak konsep utama telah diselaraskan antara kedua standar: