Generare URL în WebSphere Portal

Generarea URL-urilor de Portal corect este unul din cele mai importante taskuri în programarea unei aplicaţii bazate pe WebSphere Portal Express. Există mai multe unelte de programare şi tehnici disponibile pentru generarea URL-urilor WebSphere Portal Express într-un cod personalizat. Următoarea secţiune introduce uneltele de programare disponibile şi discută când este mai adecvată utilizarea fiecăreia dintre unelte.

Tipuri de URL-uri de Portal

Există mai multe tipuri diferite de URL-uri Portal în funcţie de taskul pe care încercaţi să-l realizaţi.
URL-uri de randare
Acest tip de URL este folosit pentru extragerea unei vederi generale a unei pagini de Portal. Acest lucru nu include specific nicio acţiune de portlet şi nu determină nicio modificare de stare pe parte de server. Un URL de randare corespunde unei operaţii HTTP GET şi este idempotent, adică poate fi rulat de mai multe ori fără a nicio stricăciune. Navigarea normală pe pagina WebSphere Portal Express este făcută din URL-uri de randare.
URL-uri de acţiune
URL-urile de acţiune sunt folosite pentru activităţi din portleturi. URL-urile corespund cu HTTP POST sau PUT şi sunt adesea non-idempotente, ceea ce înseamnă că trebuie să fie rulate cel mult o dată. Un URL de acţiune ţinteşte tipic un anumit portlet şi poate cauza modificări de stare pe parte de server. Acţiunea de portlet şi portletul căruia îi este destinată acţiunea sunt duse ca parametri în documentul Stare de navigare.
URL-uri prietenoase
URL-ului prietenoase au şiruri ce pot fi citite în URL-ul care descrie calea către o pagină de Portal. Aceste şiruri ce pot fi citite corespund cu Numele URL prietenoase care sunt asociate cu pagini sau etichete. În plus, ar putea fi de asemenea jetoane Cale conţinut prietenos în URL. Jetoanele Cale conţinut prietenos sunt şirurile ce pot fi citite care descriu calea zonei de site la biblioteca Gestionare conţinut Web asociată cu pagina.
Notă: Un URL prietenos ar putea include de asemenea un document Stare de navigaţie codat. Dacă nu include, este un URL prietenos stateless. Există un API de programare specific pentru lucrul cu URL-uri prietenoase.
URL-urile de vanitate
URL-urile de vanitate sunt similare cu URL-urile prietenoase stateless, prin faptul că pot fi citite şi nu au un document Stare de navigaţie codat. Însă URL-urile de vanitate nu sunt legate de numele de URL-uri prietenoase asociate cu paginile Portal. În schimb, URL-urile de vanitate sunt intenţionate de a fi aliasuri care sunt simple, uşor de ţinut minte, şi uşor de introdus manual dacă este necesar. URL-urile de vanitate sunt similare cu URL-urile mapate care au fost introduse în ediţiile anterioare de WebSphere Portal. Sunt intenţionate doar ca punct de intrare iniţial, şi nu sunt persistente în bara adresei de browser după ce începe interacţiunea cu site-ul Portal. Există un API de programare specific pentru lucrul cu URL-uri de vanitate.
URL-uri Parte de conţinut
URL-urile Parte de conţinut (Piece-of-content) sau URL-urile PoC reprezintă un mecanism de legare ulterior care ţinteşte conţinut în locul artefactelor de Portal cum ar fi paginile. Utilizează un punct de intrare URL diferit în WebSphere Portal (de obicei mypoc sau mycontenthandler în loc de myportal). Un API de programare este disponibil pentru lucrul cu URL-uri Piece-of-Content.

Metode pentru generarea URL-urilor portal

Complexitatea unui URL WebSphere Portal Express face dificilă codarea hard, de aceea nu încercaţi să construiţi URL-uri Portal prin concatenarea de şir. Intenţia designului este aceea că majoritatea URL-urilor auto-referite din Portal sunt generate în cod la momentul rulării pentru evitarea legăturilor întrerupte şi pentru evitarea menţinerii manuale a legăturilor într-un site bazat pe Portal.

WebSphere Portal Express face mai multe opţiuni disponibile unui programator pentru generarea acestor URL-uri Portal complexe. Aceste opţiuni diferite sunt proiectate pentru a adresa diverse cazuri de utilizator, de la cele mai simple la cele mai complexe.
  • Metoda taguri JSP Portal este utilizată în Theme şi Skin JSPs.
  • JSR 286 Portlet API şi taguri JSP corespondente. Această metodă de generare URL adresează aproape toate cerinţele de generare URL într-un portlet standard.
    • Sau dacă este necesar atunci când modificaţi un portlet existent, şi actualizarea nu este o posibilitate, este utilizat API-ul JSR 168 Portlet mai vechi.
    • IBM® Portlet API nu mai este suportat. Portleturile mai vechi care sunt scrise la acest API trebuie migrate la standardul curent.
  • Parametri de randare publici definiţi de WebSphere Portal. Această metodă poate suporta mai multe cazuri de utilizare care au necesitat anterior utilizarea API-ului stare de navigare.
  • Metoda API URL prietenos este specifică pentru cazurile de utilizare care implică URL-uri prietenoase, inclusiv URL-uri care trebuie să fie stateless (nu au document Stare de navigare codat).
  • Metoda PoC URL API este specifică pentru crearea URL-urilor Piece-of-Content.
  • Metoda API URL-uri de vanitate este specifică pentru lucrul cu URL-uri de vanitate.
  • Metoda Navigational State API este cea mai adecvată şi unealta de programare generală pentru generarea de URL-uri, dar necesită cea mai profundă înţelegere şi competenţe de programare.

Atunci când creaţi portleturi de cooperare care necesită comunicaţie inter-portlet, mesageria inter-portlet ar putea fi transportată în URL-urile care sunt generate. Parametrii de randare aşa cum sunt suportaţi de JSR 286 sunt o cale de a realiza acest lucru, dar unelte de progamare suplimentare sunt de asemenea furnizate. Tehnicile JSR 286 pentru portleturile cooperative, precum şi uneltele suplimentare sunt descrise în detaliu în secţiunea Comunicaţie Portlet. Un exemplu de astfel de unealtă este Cooperative Portlet API pentru interoperabilitate între portleturile JSR 286 şi JSR 168.

Maparea cazurilor de utilizare la uneltele de programare disponbile.
Tabela 1. . Metode de Generare URL listate de la simple la complexe pentru diferite cazuri de utilizare.
Task (De la cel mai simplu la cel mai complex) Metodă de generare URL

Crearea legăturilor de navigare pagină între paginile Portal la nivelul temei. De exemplu, navigare pagini cu file standard.

Aceste URL-uri sunt de obicei URL-uri de randare simple. În JSP-uri, utilizaţi tagurile JSP <portal-navigation/>. Pentru informaţii suplimentare despre programarea unei teme Portal, vedeţi secţiunea Dezvoltarea temelor şi skin-urilor.

Un portlet JSR 286, auto-conţinut (nu este necesară comunicaţia inter-portlet), care generează URL-uri de acţiune către el însuşi şi setează proprii parametrii de randare.

  • JSR 286 defineşte o bibliotecă de taguri pentru utilizarea în JSP-uri. Această bibliotecă de taguri este expandată mult peste versiunea V1.0/JSR168. Are propriul spaţiu de nume pentru evitarea coliziunilor cu biblioteca V1.0.
    <%@ taglib uri="http://java.sun.com/portlet_2_0"
    Prefix="portlet"%>
    Exemple:
    • Pentru generarea unui URL de randare normal cu un parametru de randare:
      <a href="<portlet:renderURL>
      <portlet:param name="myRenderParameter"
      value="someValue"/>
      This is the text for the link</a>
    • Pentru generarea unui URL Acţiune de portlet, care vizează portletul curent pe pagina curentă:
      form method="POST"
      action="<portlet:actionURL/>">
      Notă: Un URL acţiune trebuie să aibă documentul Stare de navigare codat în el.
  • Pentru a realiza echivalentul în cod java în loc de utilizarea tagurilor JSP, utilizaţi JSR 286 Portlet API, care este în pachetul javax.portlet.* Pentru informaţii suplimentare, vedeţi legătura înrudită Pachet javax.portlet. În particular, vedeţi interfaţa RenderResponse. O RenderResponse este transmisă la metoda de randare a portletului de către containerul de portlet. RenderPesponse implementează MimeResponse, care oferă 3 metode pentru crearea de URL-uri auto-referite:
    • createRenderURL()
    • createActionURL()
    • createResourceURL()

Un portlet JSR 286, care necesită comunicaţie inter-portlet cu un alt portlet JSR 286, dar nu navigare pagină (Vizualizarea Portal rămâne pe pagina curentă).

Ar putea fi suficientă utilizarea suportului parametrului de randare JSR 286. Totuşi, există de asemenea alte tehnici. Pentru informaţii suplimentare, vedeţi secţiunea Comunicaţie Portlet.

Un portlet JSR 286, care trebuie să interopereze cu un portlet JSR 168.

Un portlet JSR168 care a funcţionat cu alte portleturi prin comunicaţia inter-portlet este scris pentru utilizarea API Portlet Cooperativ, de asemenea cunoscut ca broker de Proprietate. Broker-ul de proprietate a fost o extensie IBM la specificaţia JSR 168. JSR286 a introdus modelul de eveniment portlet, care a înlocuit Broker-ul de proprietate. Portleturile JSR286 şi portleturile JSR 168 pot interopera dacă sunt îndeplinite anumite condiţii. Pentru informaţii suplimentare, vedeţi secţiunea Interoperabilitatea dintre evenimentele de portlet JSR 286 şi portleturile cooperative JSR 168.

Un portlet JSR 286, care trebuie să
  • Generaţi o legătură de randare la altă pagină Portal (cauzează navigarea de pagină).
  • Controlaţi în mod opţional modul sau starea ferestrei portletului vizat.
  • Controlaţi în mod opţional starea Portal.
  • Controlaţi în mod opţional parametrii de randare ai portletului ţintit.
  • Controlaţi în mod opţional variabila locală pentru cererea generată.
Începând cu Portal 8.5 CF05 utilizaţi parametrii de randare publică definiţi de portal WebSphere Portal pentru toate aceste cazuri de utilizare şi altele. Aceşti parametrii de randare fac disponibile diverse aspecte ale contextului cererii curente, în timp ce publicul normal randează parametrii într-un spaţiu de nume WebSphere Portal specificat.
Pentru a citi valorile Stării de navigare ca parametri de randare:
Aceşti parametri de randare publici pot fi accesaţi prin JSR286 API normal renderResponse.getParameter(<parameter qualified name>).

Unde <parameter qualified name> este concatenarea NAMESPACE_URI cu unul dintre numele parametrului de randare, aşa cum este definit în secţiunea următoare. De exemplu, selecţia http://www.ibm.com/xmlns/prod/websphere/portal/publicparams.

Pentru setarea valorilor Stare de navigare prin utilizarea parametrilor de randare:
Pot fi setate de API-ul de portlet JSR286 normal baseURL.setParameter(<parameter qualified name>, <value>)

Prin setarea parametrilor de randare specifici prin utilizarea API-urilor JSR286 normale, sistemul codează setările de stare de navigare corecte la documentul Stare de navigare pe noul URL. Această setare face noile valori disponibile pe următoarea cerere care are ca rezultat randarea şi apăsarea din nou pe acel URL.

Note:
  • Acest suport necesită utilizarea URL-urilor de stare deoarece parametrii de randare sunt transportaţi doar în documentul codat Stare navigare.
  • Toate aceste valori sunt disponibile drept constante publice în clasa com.ibm.portal.PublicRenderParameters, care este un API public în componenta wp.model.api. Pentru detalii complete, vedeţi WebSphere Portal javadoc IBM WebSphere Portal Express, Versiunea 8.5.0.0 SPI Specification.
Spaţiul de nume al parametrului de randare public specificat WebSphere Portal Express este http://www.ibm.com/xmlns/prod/websphere/portal/publicparams (disponibil ca şi NAMESPACE_URI). Următoarele articole sunt parametrii de randare publici speciali pe care WebSphere Portal Express îi suportă:
  • selection (NAME_SELECTION)
  • uri (NAME_URI)
  • parameters (NAME_PARAMETERS)
  • locale (NAME_LOCALE)
  • themeTemplate (NAME_THEME_TEMPLATE)
  • labelMappings (NAME_LABEL_MAPPINGS)
  • screenTemplate (NAME_SCREEN_TEMPLATE)
  • themePolicy (NAME_THEME_POLICY)
  • solo (NAME_SOLO)
  • showTools (NAME_SHOW_TOOLS)
  • hiddenContent (NAME_HIDDEN_CONTENT)
  • hiddenPages (NAME_HIDDEN_PAGES)
  • statePartition (NAME_STATE_PARTITION)
  • path-info (NAME_PATH_INFO)
  • focus (NAME_FOCUS)
  • deviceClass (NAME_DEVICE_CLASS)
  • digest (NAME_DIGEST)
  • pageMode (NAME_PAGE_MODE)
  • editMode (NAME_PAGE_EDIT_MODE)
  • infoMode (NAME_PAGE_INFO_MODE)
  • helpMode (NAME_PAGE_HELP_MODE)
Există de asemenea un API de comoditate Generare URL Portal. Acest API de comoditate suportă numai URL-uri de randare. Nu pot fi generate modificări de stare (URL-uri de acţiune) utilizând acest API. Următoarele articole sunt clasele de cheie din acest API:
  • com.ibm.portal.portlet.service.url.PortalURLGenerationService
  • com.ibm.portal.portlet.service.url.PortalURLWriter
Per javadoc al pachetului com.ibm.portal.portlet.service.url , un programator:
  1. Obţine o instanţă a unui PortletServiceHome după căutarea JNDI.
  2. Pe acea interfaţă acasă, apelează getPortletService(PortalURLGenerationService.class).
  3. Pe acel serviciu, apelează getPortalURLWriter(request, response)
  4. Utilizează metode pe obiectul PortalURLWriter pentru a crea şi manipula URL-ul de randare.
Există un set echivalent de taguri JSP pentru API-ul de convenienţă Generare URL.
<%@ taglib uri="http://www.ibm.com/xmlns/prod/websphere/portal/v8/portlet/ibm-portlet-ext" prefix="portlet-ext" %> 
Pentru informaţii suplimentare, vedeţi Taguri JSP pentru portleturile standard. Un exemplu de creare a unui URL de randare prin utilizarea tagului Convenience API este<portlet-ext:portalRenderURL>.

URL prietenos

Un URL prietenos cunoscut de asemenea ca şi Nume de URL Prietenos, este un nume randabil de om pentru o pagină de portal. Este setat ca şi atribut al paginii şi fiecare pagină poate avea cel mult un URL Prietenos.
Note:
  • Dacă o pagină are un URL Prietenos configurat corect, atunci WebSphere Portal Express garantează că orice cerere care randează pagina, are URL-ul Prietenos. Cererea nu are un URL Prietenos doar dacă impunerea URL-ului Prietenos este implicit oprită prin utilizarea setării de configurare friendly.redirect.enabled.
  • URL-urile Prietenoase nu garantează că sunt libere de Starea de navigare. Dacă este necesar să înlăturaţi Starea de navigare, sunt disponibile mai multe tehnici. Este posibil să doriţi să exploraţi URL-uri Vanity sau Mapări de URL pentru aceste cazuri de utilizare.
Pentru a utiliza Friendly URL API, trebuie să obţineţi o instanţă FriendlyURLFactory. În funcţie de tipul de cod pe care îl scrieţi, puteţi obţine o instanţă FriendlyURLFactory într-unul din două moduri:
Dacă scrieţi un portlet:
  • Începeţi cu clasa com.ibm.portal.resolver.friendly.service.PortletFriendlySelectionServiceHome. Trebuie să obţineţi o instanţă a acelei clase în doi paşi:
    1. Efectuaţi o căutare JNDI utilizând constanta PortletFriendlySelectionServiceHome.JNDI_NAME. Această căutare JNDI returnează o instanţă a PortletServiceHome.
    2. La obiectul PortletServiceHome, apelaţi getPortletService(PortletFriendlySelectionServiceHome.class). Apelarea returnează o instanţă PortletFriendlySelectionServiceHome.
  • Pentru eficienţă, efectuaţi căutarea JNDI şi apelarea getPortletService din metoda init(PortletConfig) a portletului dumneavoastră, şi salvaţi instanţa PortletFriendlySelectionsServiceHome pentru a fi reutilizată. Nu este necesar să efectuaţi aceste apelări la nivelul fiecărei cereri în parte.
  • La o apelare la nivel de cerere, cum ar fi metoda doView(RenderRequest,RenderResponse) a portletului, utilizaţi PortletFriendlySelectionServiceHome salvat pentru a apela getPortletFriendlySelectionService(request,response). Apelarea returnează o instanţă PortletFriendlySelectionService.
    Notă: Această instanţă trebuie să fie dispusă prin apelarea dispose() înainte de a rămâne fără domeniu.
  • În instanţa returnată PortletFriendlySelectionService, apelaţi getURLFactory().
Dacă scrieţi cod de temă:
  • Începeţi cu clasa com.ibm.portal.resolver.friendly.service.PortalFriendlySelectionServiceHome. Efectuaţi căutarea JNDI prin utilizarea constantei PortalFriendlySelectionServiceHome.JNDI_NAME. Această căutare returnează o instanţă a PortalFriendlySelectionServiceHome.
  • Pentru eficienţă, efectuaţi căutarea JNDI în constructor sau altă metodă de iniţializare a clasei dumneavoastră şi salvaţi instanţa PortalFriendlySelectionServiceHome pentru a fi reutilizată. Nu este necesar să efectuaţi această apelare la nivelul fiecărei cereri.
  • La o apelare la nivel de cerere, utilizaţi PortalFriendlySelectionServiceHome salvat pentru a apela getPortalFriendlySelectionsService(HttpServletRequest,HttpServletResponse). Apelarea returnează o instanţă PortalFriendlySelectionService.
    Notă: Această instanţă trebuie să fie dispusă prin apelarea dispose() înainte de a rămâne fără domeniu.
  • În instanţa returnată PortalFriendlySelectionService, apelaţi getURLFactory().

După ce aveţi un FriendlyURLFactory, puteţi apela una dintre metodele newURL() pentru a obţine o instanţă FriendlyURL. O instanţă FriendlyURL poate fi setată prin utilizarea metodelor set*, care sunt scrise în răspuns prin utilizarea metodei writer(Writer). Writer este obţinut de la răspuns şi apoi este dispus prin apelarea dispose().

URL vanitate

Un URL vanitate este un URL simplu, uşor de reţinut pe care un utilizator îl poate introduce manual. URL-urile vanitate sunt gestionate de webmaster cu uneltele administrative WebSphere Portal Express, cum ar fi bara de unelte, portleturile administrative, sau scriptarea XMLAcces. Totuşi, uneori atunci când randaţi un răspuns, este necesar să produceţi o legătură URL vanitate.

Următoarea secţiune descrie modul în care să utilizaţi Vanity URL API pentru a obţine un VanityURLNode, care poate fi utilizat pentru randarea unei legături Vanity URL. În funcţie de tipul pachetului de cod pe care îl dezvoltaţi, utilizaţi una dintre cele 3 variante diferite pentru accesarea şi utilizarea API-ului URL vanitate.
Notă: Aveţi grijă să selectaţi pachetul SPI corect pentru codul care este dezvoltat.
Documentaţia de interfaţă necesară este în WebSphere Portal Express SPI javadoc.
Dacă scrieţi un portlet:
  • Localizaţi pachetul com.ibm.portal.portlet.service.model.
  • Începeţi cu interfaţa VanityURLModelProvider. Trebuie să obţineţi o instanţă a unei clase, care implementează acea interfaţă, în doi paşi:
    1. Obţineţi o instanţă a PortletServiceHome prin căutare JNDI utilizând constanta de nume VanityURLModelProvider.JNDI_NAME.
    2. În acel obiect PortletServiceHome, apelaţi getPortletService(VanityURLModelProvider.class).
  • Efectuaţi căutarea JNDI şi apelaţi getPortletService în metoda init() a portletului. Salvaţi instanţa returnată VanityURLModelProvider într-un câmp static din clasa dumneavoastră de portlet. Această instanţă de furnizor poate fi reutilizată pe cereri.
  • Pentru fiecare cerere, de exemplu în apelarea metodei doView() a portletului, apelaţi getVanityURLModel în instanţa salvată VanityURLModelProvider, trecând cererea şi răspunsul de portlet curent. Modelele trebuie să nu fie reutilizate de-a lungul cererilor.
  • În obiectul VanityURLModel, apelaţi getLocator().
  • În VanityURLModelLocator, puteţi apela oricare dintre metodele findBy, care returnează fie un singur VanityURLNode sau o listă IterableListModel<VanityURLNode>.
Dacă scrieţi cod de temă:
  • Localizaţi pachetul com.ibm.portal.model.
    Notă: Multe dintre numele de clase din acest set de instrucţiuni sunt identice cu numele de clase pentru utilizarea Sursei de date a Vanity URL API, dar numele pachetului este diferit.
  • Obţineţi o instanţă de clasă, care implementează VanityURLModelProvider, în doi paşi:
    1. Obţineţi o instanţă a VanityURLModelHome prin căutarea JNDI utilizând constanta de nume VanityURLModelHome.JNDI_NAME. Vedeţi com.ibm.portal.model.VanityURLModelHome javadoc pentru exemplu de cod.
    2. În acel obiect VanityURLModelHome, apelaţi getVanityURLModelProvider().
  • Efectuaţi căutarea şi apelarea JNDI getVanityURLModelProvider() în constructor sau o metodă init() a clasei dumneavoastră. Salvaţi instanţa returnată VanityURLModelProvider într-un câmp static din clasa dumneavoastră. Această instanţă furnizor poate fi reutilizată de-a lungul cererilor.
  • Pentru fiecare cerere, apelaţi getVanityURLModel în instanţa salvată VanityURLModelProvider, trecând cererea şi răspunsul de servlet curent. Modelele trebuie să nu fie reutilizate de-a lungul cererilor.
  • În obiectul VanityURLModel, apelaţi getLocator().
  • În VanityURLModelLocator, puteţi apela oricare dintre metodele findBy, care returnează fie un singur VanityURLNode sau o listă IterableListModel<VanityURLNode>.
Dacă scrieţi o Sursă de date:
  • Localizaţi pachetul com.ibm.portal.cor.service.
    Notă: Multe dintre numele de clasă din acest set de instrucţiuni sunt identice cu numele de clasă pentru utilizarea codului temă al API-ului URL vanitate, dar numele de pachet este diferit.
  • Obţineţi o instanţă a unei clase, care implementează VanityURLModelProvider, în doi paşi:
    1. Obţineţi o instanţă a unui VanityURLModelHome prin căutare JNDI utilizând constanta de nume VanityURLModelHome.JNDI_NAME. Vedeţi com.ibm.portal.cor.service.VanityURLModelHome javadoc pentru exemplu de cod.
    2. În acel obiect VanityURLModelHome, apelaţi getVanityURLModelProvider().
  • Efectuaţi căutarea şi apelarea JNDI getVanityURLModelProvider() în constructor sau o metodă init a clasei dumneavoastră şi salvaţi instanţa returnată VanityURLModelProvider într-un câmp static din clasa dumneavoastră. Această instanţă furnizor poate fi reutilizată de-a lungul cererilor.
  • Într-o metodă la nivel de cerere a DataSource, apelaţi modelProvider.getVanityURLModel(com.ibm.content.operations.registry.api.Context).

    Detaliu de programare pentru un DataSource: În majoritatea cazurilor, o DataSource este alocată de o fabrică dedicată. Fabrica este înregistrată cu cadrul de lucru resolver pentru manipularea cererilor pentru un URI specific. Atunci când o cerere pentru acel URI este primită, fabrica este pornită de cadrul de lucru rezolvator şi este trecut un obiect com.ibm.content.operations.registry.api.Context. Asiguraţi-vă că înţelegeţi diferenţa dintre acest obiect COR Context şi clasa javax.naming.Context utilizată de căutarea JNDI. Fabrica alocă o nouă instanţă DataSource (sau poate extrage una existentă din pool) şi apelările reset() din DataSource, trecând obiectul COR Context. Acest obiect şi ceilalţi parametrii pentru reset(), trebuiesc salvaţi în câmpurile instanţă din DataSource. Pot fi utilizaţi în apelările de metodă următoare până când, fie dispose() este apelat, fie reset() este apelat din nou. Utilizaţi obiectul COR Context într-o apelare către getVanityURLModel(com.ibm.content.operations.registry.api.Context).

  • În obiectul VanityURLModel, apelaţi getLocator().
  • În VanityURLModelLocator, puteţi apela oricare dintre metodele findBy, care returnează fie un singur VanityURLNode, fie o listă IterableListModel<VanityURLNode>.
După ce aveţi o instanţă VanityURLNode prin oricare dintre modurile corespunzătoare, puteţi apela diversele metode ale acelei interfeţe pentru a construi o reprezentare randată a VanityURL:
  • VanityURLnode.isSecure() anunţă dacă protocolul ţintă este http sau https.
  • VanityURLnode.isProtected() anunţă dacă maparea URL-ului ţintă este către /portal sau /myportal.
  • VanityURLnode.getHost() returnează numele gazdă care este asociat cu acest URL de vanitate.
  • VanityURLnode.getPort() returnează numărul de port care este asociat cu acest URL de vanitate.
  • VanityURLnode.getVpld() returnează Virtual Portal OID pentru acest URL de vanitate.
  • VanityURLnode.getPath() returnează şirul de cale pentru acest URL de vanitate. Acest şir cale este perceput ca şir URL de vanitate.

Creaţi actualizaţi sau ştergeţi URL-uri de vanitate.

Dacă scrieţi cod, intenţionat să creeze, actualizeze, sau să şteargă URL-urile vanitate, mai degrabă decât să le citească şi să le randeze, utilizaţi următoarele API-uri:
  • Localizaţi pachetul com.ibm.portal.model.controller.
  • Trebuie să obţineţi o instanţă a unei clase, care implementează VanityURLModelControllerHome prin căutare JNDI utilizând constanta de nume VanityURLModelControllerHome.JNDI_Name. Vedeţi com.ibm.portal.model.controller.VanityURLModelControllerHome javadoc pentru exemplu de cod.
  • În acel obiect VanityURLModelControllerHome, apelaţi getVanityURLModelControllerProvider().
  • Efectuaţi căutarea JNDI şi apelaţi getVanityURLModelControllerProvider() în constructor sau o metodă init a clasei dumneavoastră şi salvaţi instanţa returnată VanityURLModelControllerProvider într-un câmp static din clasa dumneavoastră. Această instanţă de furnizor poate fi reutilizată pe cereri.
  • Este posibil să trebuiască să obţineţi un VanityURLModelProvider, utilizând acelaşi cod aşa cum este descris în codul de scriere Temă.
  • Într-o metodă per-cerere,
    • În VanityURLModelProvider, apelaţi getVanityURLModel(request,response).
    • În obiectul VanityURLModelControllerProvider, apelaţi createVanityURLModelController(model) transmiţând modelul care este returnat de la apelare la getVanityURLModel.
  • Apelările următoare pentru crearea noului URL de vanitate şi setarea atributelor acestuia sunt documentate în javadoc pentru VanityURLModelController şi ModifiableVanityURLNode.

Un portlet JSR 286, care necesită generarea unui URL acţiune la un al doilea portlet specific, sau orice alt caz de utilizare care nu este listat aici.

API stare de navigare

URL Parte de conţinut

O parte componentă sau POC URL este un URL care ţinteşte o ursă de date sau un ResolutionService din cadrul de lucru Rezolvator. Dată fiind o astfel de Sursă de date sau ResolutionService, PoC URL API asistă programatorul pentru a crea un URL care duce la pornirea cadrului de lucru Rezolvator pentru corectarea Sursei de date sau a ResolutionService.

Pentru a lucra cu Piece-of-Content URL-uri, obţineţi o instanţă a com.ibm.portal.resolver.acessors.url.PocURLFactory. Similar cu alte URL API-uri, codul pentru obţinerea unei instanţe a URLFactory depinde dacă scrieţi un portlet un cod de temă sau dacă rulaţi deja un cod într-un cadru de lucru rezolvator.
Dacă scrieţi un portlet:
  • În Portal javadoc, localizaţi pachetul com.ibm.portal.resolver.servicer.service.
  • Obţineţi o instanţă PortletPocServiceHome în doi paşi:
    1. Faceţi o căutare JNDI pentru instanţa PorletServiceHome utilizând constanta de nume PortletPocServiceHome.JNDI_NAME. Vedeţi javadoc pentru PortletPocServiceHome pentru codul eşantion.
    2. În obiectul returnat PortletServiceHome, apelaţi getPortletService(PortletPocServiceHome.class).
  • Faceţi căutarea JNDI şi apelaţi getPortletService în metoda init(PortletContig) portletului dumneavoastră şi salvaţi instanţa rezultantă PortletPocServiceHome într-o variabilă a instanţei de clasă. Nu este necesar să refaceţi aceste apelări pentru fiecare cerere care este deservită de portlet.
  • Într-o metodă per cerere, cum ar fi render(RenderRequest,RenderResponse), apelaţi metoda corespunzătoare PortletPocServiceHome.getPortletPocService() în funcţie de metoda specifică, care este implementată şi tipul de cerere şi răspuns care sunt transmise. Există versiuni ale acestei metode pentru Acţiune, Eveniment, Randare, Resursă şi PortletRequest şi Răspuns.
    Notă: Este necesar să apelaţi dispose() în instanţa de serviciu returnat înainte să rămână fără domeniu.
  • În PortletPocService sau în subclasa corespunzătoare, apelaţi getURLFactory().
Dacă scrieţi cod de temă:
  • În Portal javadoc, localizaţi pachetul com.ibm.portal.resolver.service.
  • Faceţi o căutare JNDI pentru PortalPocServiceHome, utilizând constanta de nume PortalPocServiceHome.JNDI_NAME.
  • Salvaţi instanţa rezultantă PortalPocServiceHome într-un câmp de instanţă de clasă. Nu este necesar să faceţi o căutare JNDI pentru fiecare cerere.
  • În metoda per cerere a clasei dumneavoastră, în instanţa salvată PortalPocServiceHome apelaţi getPortalPocService care transmite HttpServletRequest şi HttpServletResponse.
    Notă: Este necesar să apelaţi dispose() în instanţa de serviciu returnat înainte să rămână fără domeniu.
  • În instanţa rezultantă PortalPocService, apelaţi getURLFactory().
Dacă scrieţi cod care rulează ca şi DataSource sau ResolutionService:
  • În Portal javadoc, localizaţi pachetul com.ibm.portal.resolver.service.
  • Faceţi o căutare JNDI pentru CorPocServiceHome, utilizând constanta de nume CorPocServiceHome.JNDI_NAME.
  • Salvaţi instanţa rezultantă CorPocServiceHome într-un câmp instanţă de clasă. Nu este necesar să faceţi o căutare JNDI pentru fiecare cerere.
  • În metoda per cerere a clasei dumneavoastră, în apelarea de instanţă salvată CorPocServiceHome getCorPocService(com.ibm.content.operations. registry.api.Context).
    Notă: Este necesar să apelaţi dispose() în interfaţa de serviciu returnat înainte să rămână fără domeniu.

    Detaliu de programare pentru un DataSource: În majoritatea cazurilor, o DataSource este alocată de o fabrică dedicată. Fabrica este înregistrată cu cadrul de lucru resolver pentru manipularea cererilor pentru un URI specific. Atunci când o cerere pentru acel URI este primită, fabrica este pornită de cadrul de lucru al rezolvatorului, şi îi este transmisă o com.ibm.content.operations.registry.api.Context object. Asiguraţi-vă că înţelegeţi diferenţa dintre acest obiect COR Context şi clasa javax.naming.Context care este utilizată de căutarea JNDI. Fabrica alocă o nouă instanţă DataSource (sau poate extrage una existentă dintr-un pool) şi apelează reset() în DataSource, transmiţând obiectul COR Context. Acest obiect şi ceilalţi parametrii pentru reset(), trebuiesc salvaţi în câmpurile de instanţă din DataSource. Pot fi utilizaţi în apelările de metodă următoare până când, fie dispose() este apelat, fie reset() este apelat din nou. Utilizaţi obiectul COR Context în apelarea către getCorPocService (com.ibm.content.operations.registry.api.Context).

  • În instanţa rezultantă CorPocService, apelaţi getURLFactory().
După ce obţineţi un PocURLFactory:
  • Apelaţi una dintre metodele newURL, pentru a instanţia tipul dorit de PocURL.
  • În instanţa rezultantă PocURL, apelaţi metodele setXXX pentru a vă defini atributele dumneavoastră URL.
  • Canalizaţi URL-ul către răspuns şi dispuneţi instanţa PocURL prin apelarea writeDispose(). Instanţa Scriitor pentru utilizare de către writeDispose trebuie obţinută din argumentul de răspuns pentru metodă.