Ohjelmointi

Esittely Portlet-spesifikaatio, osa 1

Yhä useamman yritysportaalien myötä eri toimittajat ovat luoneet erilaisia ​​sovellusliittymiä portaalikomponenteille, nimeltään portlet-sovellukset. Tämä erilainen yhteensopimaton käyttöliittymä aiheuttaa ongelmia sovellusten tarjoajille, portaaliasiakkaille ja portaalipalvelimen toimittajille. Näiden ongelmien voittamiseksi aloitettiin JSR (Java Specification Request) 168, portlet-spesifikaatio, tarjoamaan yhteentoimivuutta portlet-sovellusten ja portaalien välillä.

JSR 168 määrittelee portlet-sovellukset Java-pohjaisiksi web-komponenteiksi, joita hallinnoi portlet-sovellussäiliö, jotka prosessoivat pyyntöjä ja tuottavat dynaamista sisältöä. Portaalit käyttävät portlet-sovelluksia liitettävinä käyttöliittymäkomponenteina, jotka tarjoavat esityskerroksen tietojärjestelmille.

JSR 168: n tavoitteet ovat seuraavat:

  • Määritä portlet-sovellusten ajo-ympäristö tai portlet-sovelluksen säilö
  • Määritä portlet-sovelluksen säilön ja portlet-sovellusten välinen sovellusliittymä
  • Tarjoa mekanismeja ohimenevän ja pysyvän datan tallentamiseksi portlet-sovelluksiin
  • Tarjoa mekanismi, jonka avulla portlet-sovellukset voivat sisältää servlet-sovelluksia ja JSP: tä (JavaServer Pages)
  • Määritä portlet-sovellusten pakkaus käyttöönoton helpottamiseksi
  • Salli binäärisen portlet-sovelluksen siirrettävyys JSR 168 -portaalien kesken
  • Suorita JSR 168 -portlet-sovellukset etäportletina käyttämällä Web Services for Remote Portlet (WSRP) -protokollaa

Tietotekniikkateollisuus on laajalti hyväksynyt JSR 168. Kaikki portaalitilan suurimmat yritykset ovat osa JSR 168 -asiantuntijaryhmää: Apache, ATG, BEA, Boeing, Borland, Broadvision, Citrix, EDS, Fujitsu, Hitachi, IBM, Novell, Oracle , SAP, SAS-instituutti, Sun Microsystems, Sybase, TIBCO ja vinjetti. Luettelo virallisista kannattajista on vielä pidempi.

Tällä hetkellä JSR 168 on julkisessa tarkastelussa ja lopullinen versio on suunniteltu syyskuuhun 2003.

Tässä artikkelissa määritellään ensin portaalit ja portlet-sovellukset, sitten selitetään JSR 168: n käyttöön ottamat käsitteet, mukaan lukien API: n perusobjektit. Seuraavaksi tutkimme JSR: n edistyneempiä toimintoja, kuten käyttäjätietoja, lokalisointia ja välimuistia. Sitten katamme laajennuskohdat, joiden avulla portaalin toimittajat voivat laajentaa portlet-sovelluksen määritelmän tällä hetkellä määritettyä toimintoa. Artikkelin lopussa on kuvaus portlet-sovelluksen pakkaamisesta ja käyttöönotosta.

Lue koko sarja Portlet-spesifikaatiosta:

  • Osa 1: Märkää jalkasi eritelmän taustalla olevilla termeillä ja käsitteillä
  • Osa 2: Portlet-sovellusliittymän viitetoteutus paljastaa salaisuutensa

Perusmäärittelyt

Tässä osassa selitämme portlet-sovelluksen määrityksissä käytetyt perusmäärittelyt, mukaan lukien portaalin perusarkkitehtuuri, portlet-sovelluksen säilö ja portaalisivu.

Portaali

A portaali on verkkopohjainen sovellus, joka tarjoaa räätälöinnin, kertakirjautumisen ja sisällön yhdistämisen eri lähteistä ja isännöi tietojärjestelmien esityskerrosta. Yhteenveto on prosessi eri lähteistä peräisin olevan sisällön integroimiseksi verkkosivulle. Portaalissa voi olla kehittyneitä mukauttamisominaisuuksia räätälöidyn sisällön tarjoamiseksi käyttäjille. Portaalisivuilla voi olla eri joukko portlet-sovelluksia, jotka luovat sisältöä eri käyttäjille.

Kuva 1 kuvaa portaalin perusarkkitehtuuria. Portaalin verkkosovellus käsittelee asiakaspyynnön, hakee portlet-sovellukset käyttäjän nykyiseltä sivulta ja kutsuu sitten portlet-sovelluksen säilöön hakemaan kunkin portlet-sovelluksen sisällön. Portlet-sovelluskontti tarjoaa portlet-sovellusten ajonaikaisen ympäristön ja kutsuu portlet-sovellukset Portlet-sovellusliittymän kautta. Portlet-sovelluksen kontti kutsutaan portaalista Portlet Invoker -sovellusliittymän kautta; säilö hakee portaalin tiedot Portlet Provider SPI: n (Service Provider Interface) avulla.

Sivu

Kuva 2 kuvaa portaalisivun peruskomponentit. Portaalisivu itsessään edustaa täydellistä merkintäasiakirjaa ja yhdistää useita portlet-ikkunoita. Portlet-sovellusten lisäksi sivu voi koostua myös navigointialueista ja bannereista. Portlet-ikkuna koostuu otsikkopalkista, jossa on portlet-sovelluksen otsikko, koristeet ja portlet-sovelluksen tuottama sisältö. Koristeet voivat sisältää painikkeita portlet-sovelluksen ikkunan tilan ja tilan muuttamiseksi (selitämme nämä käsitteet myöhemmin).

Portlet

Kuten edellä mainittiin, portlet-sovellus on Java-pohjainen verkkokomponentti, joka käsittelee pyynnöt ja tuottaa dynaamista sisältöä. Portlet-sovelluksen luomaa sisältöä kutsutaan a kappale, pala merkintöjä (esim. HTML, XHTML tai WML (langaton merkintäkieli)), joka noudattaa tiettyjä sääntöjä. Fragmentti voidaan koota muiden fragmenttien kanssa muodostaakseen täydellinen asiakirja, kuten kuvassa 3 on esitetty. Portlet-sovelluksen sisältö aggregoituu normaalisti muiden portlet-sovellusten kanssa muodostaen portaalisivun. Portlet-sovelluksen säilö hallinnoi portlet-sovelluksen elinkaarta.

Verkkoasiakkaat ovat vuorovaikutuksessa portlet-sovellusten kanssa portaalin toteuttaman pyyntö / vastaus-paradigman kautta. Yleensä käyttäjät ovat vuorovaikutuksessa portlet-sovellusten tuottaman sisällön kanssa esimerkiksi seuraamalla linkkejä tai lähettämällä lomakkeita, minkä seurauksena portaali vastaanottaa portlet-sovelluksen toiminnot, jotka sitten siirtyvät käyttäjän vuorovaikutuksen kohteena oleviin portlet-sovelluksiin.

Portlet-sovelluksen luoma sisältö voi vaihdella käyttäjittäin portlet-sovelluksen käyttäjän kokoonpanosta riippuen.

Portlet-säiliö

A portlet-sovelluksen säiliö suorittaa portlet-sovelluksia ja tarjoaa tarvittavan ajonaikaisen ympäristön. Portlet-sovellussäiliö sisältää portlet-sovelluksia ja hallinnoi niiden elinkaaria. Se tarjoaa myös pysyvät tallennusmekanismit portlet-sovelluksen asetuksiin. Portlet-sovelluskontti vastaanottaa portaalilta pyyntöjä toteuttaa pyyntöjä sen isännöimissä portlet-sovelluksissa. Portlet-sovellussäiliö ei ole vastuussa portlet-sovellusten tuottaman sisällön kokoamisesta; portaali itse hoitaa yhdistämisen.

Portaali ja portlet-sovellussäiliö voidaan rakentaa yhdessä sovelluskokonaisuuden yhtenä komponenttina tai portaalisovelluksen kahtena erillisenä komponenttina.

Käsitteet

Tässä osassa selitetään JSR 168: n ohjelmoinnin peruskäsitteet, kuten portlet-sovelluksen elinkaari, käyttöliittymä, tilat ja ikkunatilat, istunnon käyttöoikeudet, pysyvä tallennusoikeus ja kuinka sisällyttää servletit ja JSP-sivut.

Portlet-sovelluksen elinkaari

JSR 168 -portlet-sovelluksen perusportlet-elinkaari on:

  • Sen sisällä: alusta portlet-sovellus ja ota se käyttöön
  • Käsittele pyyntöjä: käsitellä erilaisia ​​toiminto- ja renderöintipyyntöjä
  • Tuhota: laittaa portlet-sovellus pois käytöstä

Portlet-sovelluksen säilö hallinnoi portlet-sovelluksen elinkaarta ja kutsuu vastaavat menetelmät portlet-käyttöliittymässä.

Portlet-käyttöliittymä

Jokaisen portlet-sovelluksen on toteutettava portlet-käyttöliittymä tai laajennettava luokka, joka toteuttaa portlet-käyttöliittymän. Portlet-käyttöliittymä koostuu seuraavista menetelmistä:

  • init (PortletConfig-määritys): alustaa portlet-sovellus. Tätä menetelmää kutsutaan vain kerran portlet-sovelluksen instantioinnin jälkeen. Tätä menetelmää voidaan käyttää portlet-sovelluksen käyttämien kalliiden objektien / resurssien luomiseen.
  • processAction (ActionRequest-pyyntö, ActionResponse-vastaus): ilmoittaa portlet-sovellukselle, että käyttäjä on käynnistänyt toiminnon tällä portlet-sovelluksella. Vain yksi toiminto asiakaskyselyä kohden käynnistyy. Toiminnossa portlet-sovellus voi lähettää uudelleenohjauksen, muuttaa portlet-sovelluksen tilaa tai ikkunan tilaa, muuttaa sen pysyvää tilaa tai asettaa renderöintiparametreja.
  • renderöinti (RenderRequest-pyyntö, RenderResponse-vastaus): luoda merkintä. Jokaiselle nykyisen sivun portlet-sovellukselle kutsutaan renderöintimenetelmä, ja portlet-sovellus voi tuottaa merkinnän, joka voi riippua portlet-sovelluksen tilasta tai ikkunan tilasta, renderöintiparametreista, pyyntöattribuuteista, pysyvästä tilasta, istuntotiedoista tai taustatiedoista.
  • tuhota(): osoittaa portletille elinkaaren loppu. Tämän menetelmän avulla portlet-sovellus voi vapauttaa resursseja ja päivittää kaikki tähän portlet-sovellukseen kuuluvat pysyvät tiedot.

Portlet-tilat

Portlet-tila osoittaa toiminnon, jota portlet-sovellus suorittaa. Yleensä portlet-sovellukset suorittavat erilaisia ​​tehtäviä ja luovat erilaista sisältöä niiden suorittamien toimintojen mukaan. Portlet-tila neuvoo portlet-sovellusta, minkä tehtävän sen tulisi suorittaa ja mitä sisältöä sen tulisi luoda. Kun kutsutaan portlet-sovellusta, portlet-sovelluksen säilö antaa nykyisen portlet-tilan portlet-sovellukselle. Portlet-sovellukset voivat muuttaa tilaansa ohjelmallisesti, kun ne käsittelevät toimintopyyntöä.

JSR 168 jakaa portlet-sovellustilat kolmeen luokkaan:

  1. Vaaditut tilat: Jokaisen portaalin on tuettava Edit-, Help- ja View-tiloja. Portlet-sovelluksen on tuettava ainakin näkymää, jota käytetään sivun merkintöjen hahmontamiseen. Muokkaustilaa käytetään muuttamaan käyttäjäkohtaisia ​​asetuksia portlet-sovelluksen merkintöjen mukauttamiseksi, ja ohjetilaa käytetään ohjenäytön näyttämiseen.
  2. Valinnaiset mukautetut tilat: Nämä ovat tiloja, joita portaali voi tukea; kun valinnainen tila, portlet-sovellusta ei ehkä kutsuta. Valinnaiset tilat sisältävät Tietoja-tilan "noin" -viestin näyttämiseksi. Config-tila, jonka avulla järjestelmänvalvojat voivat määrittää portlet-sovelluksen; Edit_defaults-tila antaa järjestelmänvalvojan asettaa ennalta muokkaustilan arvot; esikatselutila näyttää portlet-sovelluksen esikatselun; ja Tulosta-tila, jotta näkymä voidaan tulostaa helposti.
  3. Portaalitoimittajakohtaiset tilat: Näitä tiloja ei ole määritelty eritelmässä, ja ne ovat siksi myyjäkohtaisia.

Ikkunatilat

Ikkunan tila osoittaa portaalisivutilan määrän, joka osoitetaan portlet-sovelluksen luomalle sisällölle. Käynnistettäessä portlet-sovellusta portlet-sovelluksen säilö antaa nykyisen ikkunan tilan portlet-sovellukselle. Portlet-sovellus voi käyttää ikkunatilaa päättääkseen, kuinka paljon tietoja sen pitäisi tehdä. Portlet-sovellukset voivat ohjelmallisesti muuttaa ikkunan tilaa käsittelypyyntöä käsitellessään.

JSR 168 määrittelee seuraavat ikkunatilat:

  • Normaali: Osoittaa, että portlet-sovellus voi jakaa sivun muiden portlet-sovellusten kanssa. Tämä on oletusikkunan tila.
  • Maksimoitu: Osoittaa, että portlet-sovellus voi olla ainoa portaali portaalisivulla tai että portlet-sovelluksessa on enemmän tilaa verrattuna muihin portaalisivun portlet-sovelluksiin, ja siksi se voi tuottaa rikkaampaa sisältöä kuin normaalissa ikkunatilassa.
  • Pienennetty: Osoittaa, että portlet-sovelluksen pitäisi tuottaa vain vähän tai ei ollenkaan tulostusta.

Näiden ikkunatilojen lisäksi JSR 168 antaa portaalin määrittää toimittajakohtaiset ikkunatilat.

Portlet-sovellusta voidaan kutsua missä tahansa näistä kolmesta ikkunatilasta, mutta se voi vapaasti tuottaa saman merkinnän kaikille kolmelle tilalle.

Pysyvä myymälä

Portlet-sovellus voi tallentaa pysyvää tietoa tietylle käyttäjälle käyttämällä Portlet-asetukset esine. Asetukset voidaan lukea ja kirjoittaa toimintavaiheessa ja lukea renderöintivaiheessa. Ensisijainen tila asetusten kirjoittamiseen on muokkaustila, joka tarjoaa käyttäjälle mukautusnäytön. Asetukset voivat olla joko merkkijonoja tai merkkijonoryhmäarvoja, jotka liittyvät tyyppiseen merkkijonoon. Asetukset voidaan esiasettaa oletusarvoilla käyttöönoton kuvauksessa.

Asetukset ja portlet-sovelluksen määritys käyttöönottokuvaajassa määrittelevät yhdessä portlet-sovelluksen, jota joskus kutsutaan nimellä a portlet-kokonaisuus.

Istunnot

JSR 168: n istuntokonsepti perustuu HttpSession määritelty Web-sovelluksille. Koska portlet-sovellukset ovat verkkosovelluksia, ne käyttävät samaa istuntoa kuin servlet-sovellukset. Jotta portlet-sovellukset voivat tallentaa väliaikaisia ​​tietoja yksityisesti portlet-sovelluksiin, istunnon oletusala on portlet-sovelluksen soveltamisala. Tässä laajuudessa portlet-sovellus voi tallentaa tietoja, joita tarvitaan käyttäjien pyyntöihin ja jotka ovat erityisiä portlet-sovellukselle. Portlet-sovellussäiliö lisää etuliitteeseen tässä laajuudessa tallennetut määritteet istunnossa, jotta vältetään kahden portlet-sovelluksen (tai kahden saman portlet-sovelluksen määritelmän olion) korvaaminen toistensa asetuksissa.

Portlet-istunnon laajuuden lisäksi JSR 168 tukee verkkosovellus istunnon laajuus. Tässä laajuudessa kaikki verkkosovelluksen komponentit voivat käyttää tietoja. Tietoja voidaan käyttää tilapäisen tilan jakamiseen saman Web-sovelluksen eri komponenttien välillä (esim. Portlet-sovellusten välillä tai portlet-sovelluksen ja servlet-sovelluksen välillä).

Sisältää servletit / JSP-sivut

Model-View-Controller-mallin tukemiseksi portlet-sovelluksen on voitava sisällyttää sisältöä, joka on luotu servlet- ja JSP-sivuilta. Tällä tavalla portlet-sovellus voi toimia ohjaimena, täyttää pavun datalla ja sisällyttää JSP-sivun tuloksen renderoimiseksi.

JSR 168: ssa servlet- ja JSP-sivujen sisällyttämismekanismi on sama Servlet-sovellusliittymälle. Portlet-sovelluskontekstin kautta haetaan tietylle polulle pyyntöjen välittäjä; sisältää() menetelmä kutsutaan sitten tähän pyynnön lähettäjälle:

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

Kohdistus WSRP: n kanssa

WSRP kokoaa sisältöä, jonka tuottavat erillisissä koneissa käytettävät portlet-sovellukset, jotka käyttävät erilaisia ​​ohjelmointiympäristöjä, kuten J2EE (Java 2 Platform, Enterprise Edition) ja .Net. WSRP-palvelut ovat esityskeskeisiä, käyttäjäkohtaisia ​​verkkopalveluja, jotka kytketään ja toistetaan portaalien tai muiden sovellusten kanssa. Ne antavat yritysten tarjota sisältöä tai sovelluksia ilman manuaalista sisältö- tai sovelluskohtaista mukauttamista kuluttamalla portaaleja. portaalit voivat helposti yhdistää WSRP-palvelut ilman ohjelmointiponnistuksia.

JSR 168 -asiantuntijaryhmä yhdisti huolellisesti käsitteet JSR 168: n ja WSRP: n välille. Seuraava luettelo kuvaa, kuinka tärkeimmät käsitteet on yhdenmukaistettu molempien standardien välillä:

$config[zx-auto] not found$config[zx-overlay] not found