Memperkenalkan Spesifikasi Portlet, Bahagian 1

Dengan munculnya jumlah portal perusahaan yang semakin meningkat, pelbagai vendor telah membuat API yang berbeza untuk komponen portal, yang disebut portlet. Pelbagai antara muka yang tidak serasi ini menimbulkan masalah bagi penyedia aplikasi, pelanggan portal, dan vendor pelayan portal. Untuk mengatasi masalah ini, JSR (Permintaan Spesifikasi Java) 168, Spesifikasi Portlet, mulai menyediakan interoperabilitas antara portlet dan portal.

JSR 168 mendefinisikan portlet sebagai komponen Web berasaskan Java, yang dikelola oleh wadah portlet, yang memproses permintaan dan menghasilkan konten dinamis. Portal menggunakan portlet sebagai komponen antara muka pengguna yang dapat dipasang yang menyediakan lapisan persembahan kepada sistem maklumat.

Matlamat JSR 168 adalah berikut:

  • Tentukan persekitaran runtime, atau bekas portlet, untuk portlet
  • Tentukan API antara bekas portlet dan portlet
  • Sediakan mekanisme untuk menyimpan data sementara dan berterusan untuk portlet
  • Sediakan mekanisme yang membolehkan portlet memasukkan servlet dan JSP (JavaServer Pages)
  • Tentukan pembungkusan portlet untuk membolehkan penggunaan mudah
  • Benarkan portabiliti binari portabel di antara portal JSR 168
  • Jalankan portlet JSR 168 sebagai portlet jauh menggunakan protokol Perkhidmatan Web untuk Portlet Jauh (WSRP)

Industri IT telah menerima JSR 168 secara meluas. Semua syarikat utama di ruang portal adalah sebahagian daripada kumpulan 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. Senarai penyokong rasmi lebih panjang.

Pada masa ini, JSR 168 sedang dalam tinjauan umum dan versi terakhir dirancang untuk September 2003.

Dalam artikel ini, pertama-tama kita menentukan portal dan portlet, kemudian menerangkan konsep yang diperkenalkan JSR 168, termasuk objek asas API. Selanjutnya, kita menyelami fungsi JSR yang lebih maju, seperti maklumat pengguna, penyetempatan, dan cache. Kami kemudian merangkumi titik peluasan yang membolehkan vendor portal memperluaskan fungsi yang ditentukan sekarang dalam spesifikasi portlet. Artikel ini diakhiri dengan penerangan mengenai pembungkusan dan penyebaran aplikasi portlet.

Baca keseluruhan siri pada Spesifikasi Portlet:

  • Bahagian 1: Basahkan kaki anda dengan syarat dan konsep asas spesifikasi
  • Bahagian 2: Pelaksanaan rujukan API Portlet mengungkap rahsianya

Definisi asas

Dalam bahagian ini, kami menerangkan definisi asas yang digunakan dalam spesifikasi portlet, termasuk seni bina asas portal, wadah portlet, dan halaman portal.

Portal

A portal adalah aplikasi berasaskan web yang menyediakan peribadi, single sign-on, dan pengumpulan kandungan daripada pelbagai sumber, dan tuan rumah lapisan persembahan sistem maklumat. Agregasi adalah proses mengintegrasikan kandungan dari sumber yang berlainan dalam Halaman Web. Portal mungkin mempunyai ciri pemperibadian yang canggih untuk menyediakan kandungan yang disesuaikan kepada pengguna. Halaman portal mungkin mempunyai set portlet yang berbeza yang membuat kandungan untuk pengguna yang berbeza.

Gambar 1 menggambarkan seni bina asas portal. Aplikasi Web portal memproses permintaan klien, mengambil portlet pada halaman semasa pengguna, dan kemudian memanggil wadah portlet untuk mengambil kandungan setiap portlet. Wadah portlet menyediakan persekitaran runtime untuk portlet dan memanggil portlet melalui Portlet API. Kontena portlet dipanggil dari portal melalui Portlet Invoker API; kontena mengambil maklumat mengenai portal menggunakan Portlet Provider SPI (Antaramuka Penyedia Perkhidmatan).

Halaman

Rajah 2 menggambarkan komponen halaman portal asas. Halaman portal itu sendiri mewakili dokumen markup yang lengkap dan mengumpulkan beberapa tetingkap portlet. Selain portlet, halaman juga boleh terdiri dari kawasan navigasi dan sepanduk. Tetingkap portlet terdiri daripada bar tajuk dengan tajuk, hiasan, dan kandungan yang dihasilkan oleh portlet. Dekorasi boleh merangkumi butang untuk mengubah keadaan dan mod tetingkap portlet (kami menerangkan konsep ini kemudian).

Portlet

Seperti disebutkan di atas, portlet adalah komponen Web berbasis Java yang memproses permintaan dan menghasilkan konten dinamis. Kandungan yang dihasilkan oleh portlet disebut fragmen, potongan markup (misalnya, HTML, XHTML, atau WML (Wireless Markup Language)) yang mematuhi peraturan tertentu. Fragmen dapat digabungkan dengan fragmen lain untuk membentuk dokumen lengkap, seperti yang ditunjukkan pada Gambar 3. Kandungan portlet biasanya bergabung dengan kandungan portlet lain untuk membentuk halaman portal. Bekas portlet menguruskan kitaran hidup portlet.

Pelanggan web berinteraksi dengan portlet melalui paradigma permintaan / respons yang dilaksanakan oleh portal. Biasanya, pengguna berinteraksi dengan kandungan yang dihasilkan oleh portlet, misalnya, dengan mengikuti pautan atau menghantar borang, sehingga tindakan portlet diterima oleh portal, yang kemudian meneruskan ke portlet yang disasarkan oleh interaksi pengguna.

Kandungan yang dihasilkan oleh portlet mungkin berbeza dari satu pengguna ke pengguna yang lain bergantung pada konfigurasi pengguna portlet.

Bekas portlet

A bekas portlet berjalan portlets dan menyediakan mereka dengan persekitaran runtime yang diperlukan. Bekas portlet mengandungi portlet dan menguruskan kitaran hidupnya. Ia juga menyediakan mekanisme penyimpanan berterusan untuk pilihan portlet. Kontena portlet menerima permintaan dari portal untuk melaksanakan permintaan pada portlet yang dihoskan olehnya. Wadah portlet tidak bertanggungjawab untuk mengumpulkan kandungan yang dihasilkan oleh portlet; portal itu sendiri menangani pengagregatan.

Portal dan wadah portlet dapat dibina bersama sebagai komponen tunggal dari aplikasi aplikasi atau sebagai dua komponen yang terpisah dari aplikasi portal.

Konsep

Bahagian ini menerangkan konsep pengaturcaraan asas dalam JSR 168, seperti kitaran hayat portlet, antara muka, dan mod dan keadaan tetingkap, serta akses sesi, akses penyimpanan berterusan, dan cara memasukkan servlet dan halaman JSP.

Kitaran hidup portlet

Kitaran hidup portlet asas portlet JSR 168 adalah:

  • Init: mulakan portlet dan masukkan portlet ke dalam perkhidmatan
  • Mengendalikan permintaan: memproses berbagai jenis permintaan- dan permintaan-permintaan
  • Hancurkan: letakkan portlet tidak berfungsi

Kontena portlet menguruskan kitaran hidup portlet dan memanggil kaedah yang sesuai pada antara muka portlet.

Antara muka portlet

Setiap portlet mesti melaksanakan antara muka portlet, atau memperluas kelas yang menerapkan antara muka portlet. Antaramuka portlet terdiri daripada kaedah berikut:

  • init(PortletConfig config):untuk memulakan portlet. Kaedah ini dipanggil hanya sekali setelah membuat portlet. Kaedah ini boleh digunakan untuk membuat objek / sumber mahal yang digunakan oleh portlet.
  • processAction(ActionRequest request, ActionResponse response):untuk memberitahu portlet bahawa pengguna telah mencetuskan tindakan pada portlet ini. Hanya satu tindakan setiap permintaan pelanggan dicetuskan. Dalam tindakan, portlet dapat mengeluarkan pengalihan, mengubah mod portlet atau keadaan tetingkapnya, mengubah keadaan tetap, atau menetapkan 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 keadaan jendela, parameter render, atribut permintaan, keadaan berterusan, data sesi, atau data backend.
  • destroy():untuk menunjukkan kepada portlet akhir kitaran hidup. Kaedah ini membolehkan portlet membebaskan sumber dan mengemas kini data berterusan yang terdapat dalam portlet ini.

Mod portlet

Mod portlet menunjukkan fungsi yang dilakukan portlet. Biasanya, portlet menjalankan tugas yang berbeza dan membuat kandungan yang berbeza bergantung pada fungsi yang mereka lakukan sekarang. Mod portlet menasihati portlet apa tugas yang harus dilakukannya dan kandungan apa yang harus dihasilkannya. Semasa memanggil portlet, bekas portlet menyediakan mod portlet semasa ke portlet. Portlet dapat mengubah mod mereka secara terprogram ketika memproses permintaan tindakan.

JSR 168 membahagikan mod portlet kepada tiga kategori:

  1. Mod yang diperlukan: Setiap portal mesti menyokong mod Edit, Help, dan View. Portlet sekurang-kurangnya mesti menyokong mod Tampilan yang digunakan untuk membuat penanda halaman. Mod Edit digunakan untuk mengubah tetapan per pengguna untuk menyesuaikan markup portlet, dan mode Bantuan digunakan untuk menunjukkan layar bantuan.
  2. Mod tersuai pilihan: Ini adalah mod yang mungkin disokong oleh portal; semasa dalam mod pilihan, portlet mungkin tidak dipanggil. Mod pilihan merangkumi mod Tentang untuk memaparkan mesej "tentang"; mod Config untuk membolehkan pentadbir mengkonfigurasi portlet; Mod Edit_defaults untuk membolehkan pentadbir menetapkan nilai mod Edit; mod Pratonton untuk menunjukkan pratonton portlet; dan mod Cetak untuk memberikan pandangan yang boleh dicetak dengan mudah.
  3. Mod khusus vendor portal: Mod ini tidak ditentukan dalam spesifikasi dan oleh itu khusus vendor.

Tetingkap menyatakan

Keadaan tetingkap menunjukkan jumlah ruang halaman portal yang akan diberikan kepada kandungan yang dihasilkan oleh portlet. Semasa memanggil portlet, bekas portlet memberikan keadaan tetingkap semasa ke portlet. Portlet mungkin menggunakan keadaan tetingkap untuk menentukan berapa banyak maklumat yang harus diberikan. Portlet dapat secara teratur mengubah keadaan tetingkap mereka ketika memproses permintaan tindakan.

JSR 168 menentukan keadaan tetingkap berikut:

  • Normal: Menunjukkan bahawa portlet dapat berkongsi halaman dengan portlet lain. Ini adalah keadaan tetingkap lalai.
  • Dimaksimumkan: Menunjukkan bahawa portlet mungkin satu-satunya portlet di halaman portal atau bahawa portlet mempunyai lebih banyak ruang berbanding portlet lain di halaman portal, dan oleh itu dapat menghasilkan kandungan yang lebih kaya daripada dalam keadaan tetingkap biasa.
  • Minimized: Menunjukkan bahawa portlet hanya boleh menghasilkan output minimum atau tidak ada output sama sekali.

Sebagai tambahan kepada keadaan tetingkap ini, JSR 168 membenarkan portal menentukan keadaan tetingkap khusus vendor.

Portlet boleh dipanggil di salah satu daripada tiga keadaan tetingkap ini, tetapi bebas menghasilkan markup yang sama untuk ketiga-tiga keadaan.

Kedai berterusan

Portlet dapat menyimpan data berterusan untuk pengguna tertentu dengan menggunakan PortletPreferencesobjek. Pilihan boleh dibaca dan ditulis dalam fasa tindakan, dan dibaca dalam fasa rendering. Mod pilihan untuk menulis pilihan adalah mod Edit, yang menyediakan skrin penyesuaian pengguna. Keutamaan boleh berupa rentetan atau nilai array rentetan yang dikaitkan dengan kunci rentetan jenis. Keutamaan boleh ditetapkan dengan nilai lalai dalam deskriptor penyebaran.

Keutamaan dan definisi portlet dalam deskriptor penyebaran bersama-sama menentukan portlet, kadang-kadang disebut entiti portlet.

Sesi

Konsep sesi JSR 168 didasarkan pada yang HttpSessionditentukan untuk aplikasi Web. Oleh kerana aplikasi portlet adalah aplikasi Web, mereka menggunakan sesi yang sama dengan servlet. Untuk membolehkan portlet menyimpan data sementara secara peribadi ke portlet, skop sesi lalai adalah skop portlet . Dalam skop ini, portlet dapat menyimpan maklumat yang diperlukan di seluruh permintaan pengguna dan khusus untuk entitas portlet. Atribut yang disimpan dengan skop ini diawali dalam sesi oleh wadah portlet untuk mengelakkan dua portlet (atau dua entiti definisi portlet yang sama) menimpa tetapan satu sama lain.

Sebagai tambahan kepada skop sesi portlet, JSR 168 menyokong skop sesi aplikasi Web . Dalam ruang lingkup ini, setiap komponen aplikasi Web dapat mengakses maklumat. Maklumat tersebut dapat digunakan untuk berbagi keadaan sementara antara komponen yang berbeza dari aplikasi Web yang sama (misalnya, antara portlet, atau antara portlet dan servlet).

Termasuk servlet / halaman JSP

Untuk menyokong corak Model-View-Controller, portlet harus dapat memasukkan kandungan yang dihasilkan dari servlet dan halaman JSP. Dengan cara ini, portlet dapat bertindak sebagai pengawal, mengisi kacang dengan data, dan menyertakan halaman JSP untuk menghasilkan output.

Dalam JSR 168, mekanisme sertakan untuk servlet dan halaman JSP adalah sama untuk Servlet API. Melalui konteks portlet, penghantar permintaan diambil untuk jalan tertentu; yang include()kaedah kemudiannya dipanggil atas permintaan-orang yg objek ini:

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

Keselarasan dengan WSRP

WSRP mengumpulkan kandungan yang dihasilkan oleh portlet yang berjalan pada mesin jarak jauh yang menggunakan persekitaran pengaturcaraan yang berbeza, seperti J2EE (Java 2 Platform, Enterprise Edition) dan .Net. Perkhidmatan WSRP berorientasikan persembahan, perkhidmatan Web yang menghadap pengguna yang menyambung dan bermain dengan portal atau aplikasi lain. Mereka membiarkan perniagaan menyediakan kandungan atau aplikasi tanpa memerlukan penyesuaian kandungan manual atau khusus aplikasi dengan menggunakan portal; portal dapat mengumpulkan perkhidmatan WSRP dengan mudah tanpa usaha pengaturcaraan.

Kumpulan pakar JSR 168 menyelaraskan konsep dengan teliti antara JSR 168 dan WSRP. Senarai berikut meninjau berapa banyak konsep utama yang telah diselaraskan antara kedua-dua standard: