Passa ai contenuti principali

WSRP - Una Rapida Introduzione


La specifica WSRP è stata prodotta dal consorzio OASIS, organizzazione per la promozione di standard tecnici per l’interoperabilità, con l’obiettivo di definire una serie di interfacce per consentire il consumo inter-portale dei frammenti applicativi messi a disposizione da contenitori di portlet e consentire quindi l’interoperabilità fra portali consentendo l’implementazione con tecnologie eventualmente diverse.

Di seguito sono messe a confronto una architettura classica dei portali con una in un cui si fa utilizzo dello standard WSRP, nella prima sono coinvolti un fruitore rappresentato dal browser, una applicazione portale la quale utilizzando una comunicazione basata sullo stesso linguaggio del container recupera e successivamente aggrega i frammenti.

Nel secondo scenario  invece oltre che i meccanismi utilizzati nel precedente intervengono anche i seguenti componenti:
  •  Erogatore WSRP: è un servizio web che offre uno o più portlet e implementa WSRP varie interfacce/operazioni. A seconda dell'implementazione, un produttore può offrire solo un portlet, o può fornire un  contenitore per la distribuzione e la gestione di parecchi portlet.
  •   Fruitore WSRP: è un client del servizio web (in genere implementato come modulo in un portale) che richiama l’erogatore e fornisce un ambiente per gli utenti per interagire con portlet offerti da uno o più produttori


Come accennato in precedenza, WSRP definisce un insieme di interfacce comuni che tutti i produttori WSRP sono tenuti ad implementare e che i consumatori WSRP devono utilizzare per interagire con i portlet in remoto in esecuzione.

La standardizzazione di queste interfacce permette ad un portale di interagire con la portlet da remoto, la specifica WSRP richiede due implementazione obbligatorie e due opzionali:
  •  Service Description Interface (obbligatorio): consente ad un produttore WSRP di pubblicare dati sulle proprie capacità. Un consumatore WSRP può utilizzare questa interfaccia per interrogare un produttore e scoprire cosa offre il contenitore e metadati aggiuntivi su di questo. Questa interfaccia può agire come un meccanismo di rilevamento per determinare l'insieme di portlet offerti, ma soprattutto permette ai consumatori di determinare ulteriori informazioni sulla capacità tecnica del produttore.
  • Mark-up Interface (richiesto): L'interfaccia permette al WSRP consumatore di interagire con un portlet remoto in esecuzione su un produttore WSRP. E’ necessaria per l’interazione con la portlet, la gestione dello stato e l’invio di eventi,
  • Interfaccia di registrazione (opzionale): L'interfaccia di registrazione permette un produttore WSRP di richiedere che i consumatori WSRP eseguino una sorta di registrazione prima di poter interagire con il servizio attraverso la Mark-up interfacce. Attraverso questo meccanismo un produttore può personalizzare il proprio comportamento a un tipo specifico di consumatori.
  • Portlet Management Interface (opzionale): dà l'accesso al ciclo di vita della portlet in esecuzione in remoto. In modo da consentire la personalizzazione del comportamento di una portlet o addirittura distruggere l'istanza di una portlet in esecuzione in remoto.

Commenti

Posta un commento

Post popolari in questo blog

Install Mysql JDBC Driver on WildFly 8.2

The tutorial explains how to install a jdbc driver on RedHat WildFly application server a module, in the sample will be used the mysql driver but the proposed steps can be applied to any other driver libraryUsed technologies in the tutorial:Wild Fly 8.2.0.FinalMysql Connector 5.1.33 1. Create the jboss moduleEnter in the file path ${EAP_HOME}/modules/system/layers/base and create the directories com/mysql/driver/main.Into the folder main copy the driver library jar (link) and create a file module.xml as showed in the sample below<module xmlns="urn:jboss:module:1.3" name="com.mysql.driver"> <resources> <resource-root path="mysql-connector-java-5.1.33.jar" /> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>For an explanation about the meaning of the fields take a look at Jboss Module Documentation Page2. R…

Running Java Applications as a Windows Service with NSSM

Sometimes there is the request to run a Java Application as a windows service, for this scenario it is possible to use a java wrapper as NSSM. The example uses a java application that log on file the boot operation, the alive status every 10 seconds, and the exit operation. The code of the example can be downloaded with SVN from the repository https://subversion.assembla.com/svn/gma-sample/trunk/WindowsServiceTutorial. Java package org.gma.tutorial.nssm; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; import java.util.Date; /** * A Simple service to register as Windows Service, the program will log on a * file when it starts, ends and every 10 seconds it will log is alive state * * */ public class WindowsServiceTutorial { public static void main(String[] args) throws FileNotFoundException { /* Set the custom message to display */ String customMessage = "default"; if (args.leng…

org.w3c.dom.Document convertion Utils

How to convert an InputStream to a Document?
How to contert a Document to an InputStream? The snippet of code posted is an utility Java Class written in Java for org.w3c.dom.Document convertions, it supports:

Document to StringString to DocumentDocument to InputStreamInputStream to Document
package org.gma.util; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringWriter; import java.io.Writer; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.apache.xml.serialize.OutputFormat; import org.apache.xml.serialize.XMLSerializer; import org.w3c.dom.Document; import org.xml.sax.SAXException; public class DocumentUtils { /** * Convert a document to an Inputstream * @param document the document to convert * @param prettyPrint prettyPri…