jAPS 2.0 entando - Plugin SOA-Content

Do It The jAPS Way

Eugenio Santoboni

Revisore 
AgileTec s.r.l.

William Ghelfi

Revisore 
Tzente s.r.l.

Stefano Puddu

Redattore della prima versione italiana 
AgileTec s.r.l.

Legal Notice

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the Appendix entitled "GNU Free Documentation License".

The copyright holders make no representation about the suitability of this Document for any purpose. It is provided “as is” without expressed or implied warranty. If you modify this Document in any way, identify your resulting Document as a variant of this Document.

2011-02-24

Revision History
Revision 1.22011-02-24MEM

Revisione per il rilascio di jAPS 2.0 entando versione 2.2.0

Revision 1.12010-02-17MEM

Revisione per rilascio jAPS 2.0.10

Revision 1.02009-10-30SP

Prima versione pubblica

Abstract

Lo scopo di questo documento è quello di fornire una descrizione completa della struttura del Plugin SOA-Content.


Chapter 1. Scopo del documento

Introduzione

Lo scopo di questo documento è quello di fornire una descrizione completa della struttura del Plugin SOA-Content.

A chi è destinato

Questo documento è destinato a chi intende conoscere le funzionalità del jAPS Plugin SOA-Content, e sta prendendo in considerazione la eventuale integrazione in un Ambiente di Produzione già funzionante o nel proprio Ambiente di Sviluppo (Progetto in IDE Eclipse).

Il documento è indirizzato sia a Sistemisti (responsabili di installazioni di Applicazioni su base jAPS 2.0 entando) che a Java Developers (con una conoscenza base del Framework jAPS 2.0 entando).

Prerequisiti

Per poter utilizzare efficacemente le informazioni contenute in questo documento, occorre un po' di esperienza su alcune tecnologie del web base: la piattaforma Java, gli strumenti di sviluppo Eclipse, il servlet container Apache Tomcat, il database PostgreSQL, e del Framework jAPS 2.0 entando. E' inoltre necessario aver letto il documento jAPS 2.0 - Plugin Pattern.

Riferimenti

Ulteriori informazioni possono essere richieste attraverso la mailing list ufficiale Google Group "japs-platform".

Per mandare un messaggio ai membri della lista, invia una mail a .

È inoltre possibile consultare la documentazione presente in:

jAPS 2.0 entando Project - Sito per gli sviluppatori

Chapter 2. Caratteristiche del Plugin

Caratteristiche del Plugin

Il Plugin SOA-Content permette operazioni sui contenuti per mezzo di WebServices.

Nello specifico il plugin espone due metodi:

  • Un metodo che permette ad un client di aggiungere un contenuto all'interno del sistema

  • Un metodo che permette ad un client di richiedere un contenuto in base all'identificativo.

Table 2.1. Riassunto delle caratteristiche

CodiceNomeTipoVersione del PluginVersione di jAPS 2.0 entando
jpwscontentSOA-ContentModification1.22.2.0 -
jpwscontentSOA-ContentModification1.12.0.10
jpwscontentSOA-ContentModification1.02.0.8

Funzionalità

Il modulo fornisce l'infrastruttura server necessaria per le scambio dei contenuti con applicazioni terze di diverso tipo.

In particolare il plugin fornisce, attraverso l'interfaccia wsdl, due metodi in particolare: addContent e getContent.

Aggiunta di un contenuto da remoto

Tramite questa funzionalità (realizzata attraverso l'esposizione del metodo addContent) è possibile aggiungere nei contenuti del CMS di jAPS 2.0 entando, insieme a tutte le risorse ad esso correlate.

Per aggiungere un contenuto da remoto è sufficiente creare on oggetto WsContentEnvelope, contenente il contenuto che si desidera aggiungere sotto forma di stringa xml. Al termine dell'operazione il sistema restituisce un valore di ritorno. Il contenuto verrà dirattamente inserito tra l'insieme dei contenuti pubblici.

Se il contenuto che si sta aggiungendo ha delle risorse referenziate, è necessario aggiungere all'oggetto WsContentEnvelope le risorse sotto forma di array di oggetti WsResource. Se il portale che riceve l'oggetto envelope contiene già un file con lo stesso nome o una risorsa con lo stesso identificativo, il sistema provvederà ad assegnare un nuovo identificativo e/o rinominare il file.

Richiesta di un contenuto da remoto

Tramite questa funzionalità (realizzata attraverso l'esposizione del metodo getContent) è possibile richiedere un contenuto del CMS di jAPS 2.0 entando, insieme a tutte le eventuali risorse ad esso correlate.

Il sistema restituisce un oggetto WsContentEnvelope contente l'xml del contenuto richiesto, e nel caso siano presenti delle risorse referenziate, valorizza opportunamente l'array delle risorse sotto forma di oggetti WsResource.

Chapter 3. Installazione e Integrazione Plugin

Installazione e Integrazione Plugin

Caratteristiche tecniche

Il Plugin ha la caratteristica di Modification in quanto, in fase di installazione, necessita di una modifica al Deployment Descriptor (il file web.xml) per la definizione di nuove servlet.

Descrizione del Pacchetto

Il pacchetto del Plugin contiene l'insieme delle cartelle (cartelle doc ed src più il file Readme) definite nel documento di descrizione generale del jAPSPlugin Pattern.

In particolare, la directory src è strutturata come di seguito descritto:

  • Directory java. Contiene le sorgenti java complete e i test jUnit del Plugin.

    Directory webapp. Contiene i files di configurazione di Spring, Axis e il file wsdl.

Integrazione in Ambiente di Produzione

Da questo momento in poi ci si riferisce all'ambiente in produzione dove il plugin sta per essere installato come mioportale. Inoltre ci si riferisce al file compresso contenente tutti gli elementi del plugin come 'pacchetto' infine 'sistema' è sempre riferito all'installazione del framework jAPS 2.0 entando e non al sistema operativo su cui jAPS stesso viene eseguito.

Per eseguire l'installazione in una applicazione Web in produzione basata sulla versione di jAPS 2.0 entando dichiarata compatibile con il plugin, i passi da eseguire sono i seguenti:

  1. Interrompere l'esecuzione del servlet container

  2. Modificare il file web.xml, e inserire il listato sotto riportato subito dopo l'ultima dichiarazione dell'ultima servlet

    	  <servlet>
        <display-name>Apache-Axis Servlet</display-name>
        <servlet-name>AxisServlet</servlet-name>
        <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/servlet/AxisServlet</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>*.jws</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
      </servlet-mapping>
      <servlet>
        <display-name>Axis Admin Servlet</display-name>
        <servlet-name>AdminServlet</servlet-name>
        <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
        <load-on-startup>100</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>AdminServlet</servlet-name>
        <url-pattern>/servlet/AdminServlet</url-pattern>
      </servlet-mapping>
    	
  3. Nel caso che nella directory mioportale/WEB-INF non sia presente un file di nome server-config.wsdd, copiare il file presente nella cartella src/webapp/WEB-INF/plugins/jpwscontent del pacchetto dato in dotazione, sotto la directory mioportale/WEB-INF. Nel caso che nella directory mioportale/WEB-INF sia già presente un file di nome server-config.wsdd, inserire opportunamente la definizione del servizio (elemento xml di nome ns1:service e attributo name="WsContentEndpoint" del file src/webapp/WEB-INF/plugins/jpwscontent/server-config.wsdd del pacchetto dato in dotazione) nel file server-config.wsdd presente.

  4. Copiare il contenuto della directory src/webapp/WEB-INF/lib del pacchetto dato in dotazione, all'interno della directory mioportale/WEB-INF/lib/ in produzione.

  5. Copiare il contenuto della directory src/webapp/WEB-INF/plugins del pacchetto dato in dotazione, all'interno della directory mioportale/WEB-INF/plugins/ in produzione. Creare la directory plugins se non è presente.

  6. Copiare il contenuto della directory src/webapp/resources/plugins del pacchetto dato in dotazione, all'interno della directory mioportale/resources/plugins/ in produzione.

  7. A questo punto è possibile riavviare il servelet container.

Installazione in Ambiente di Sviluppo

Per eseguire l'installazione in un progetto Eclipse basato sulla versione di jAPS 2.0 entando dichiarata compatibile con il plugin, i passi da eseguire sono i seguenti:

  1. Modificare il file web.xml, e inserire il listato sotto riportato.

    	
    	  <servlet>
    	    <display-name>Apache-Axis Servlet</display-name>
    	    <servlet-name>AxisServlet</servlet-name>
    	    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
    	  </servlet>
    	  <servlet-mapping>
    	    <servlet-name>AxisServlet</servlet-name>
    	    <url-pattern>/servlet/AxisServlet</url-pattern>
    	  </servlet-mapping>
    	  <servlet-mapping>
    	    <servlet-name>AxisServlet</servlet-name>
    	    <url-pattern>*.jws</url-pattern>
    	  </servlet-mapping>
    	  <servlet-mapping>
    	    <servlet-name>AxisServlet</servlet-name>
    	    <url-pattern>/services/*</url-pattern>
    	  </servlet-mapping>
    	  <servlet>
    	    <display-name>Axis Admin Servlet</display-name>
    	    <servlet-name>AdminServlet</servlet-name>
    	    <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
    	    <load-on-startup>100</load-on-startup>
    	  </servlet>
    	  <servlet-mapping>
    	    <servlet-name>AdminServlet</servlet-name>
    	    <url-pattern>/servlet/AdminServlet</url-pattern>
    	  </servlet-mapping>
    	
    	
  2. Nel caso che nella directory mioprogetto/WebContent/WEB-INF non sia presente un file di nome server-config.wsdd, copiare il file presente nella cartella src/webapp/WEB-INF/plugins/jpwscontent del pacchetto dato in dotazione, sotto la directory mioprogetto/WebContent/WEB-INF. Nel caso che nella directory mioprogetto/WebContent/WEB-INF sia già presente un file di nome server-config.wsdd, inserire opportunamente la definizione del servizio (elemento xml di nome ns1:service e attributo name="WsContentEndpoint" del file src/webapp/WEB-INF/plugins/jpwscontent/server-config.wsdd del pacchetto dato in dotazione) nel file server-config.wsdd presente.

  3. Copiare il contenuto della directory src/webapp/WEB-INF/lib del pacchetto dato in dotazione, all'interno della directory mioprogetto/WebContent/WEB-INF/lib/, con l'esclusione del file jAPSPlugin-jpwscontent-1.1.jar.

  4. Assicurarsi dell'esistenza della directory plugins in src/webapp/WEB-INF/. In caso contrario crearla. Copiare il contenuto della directory src/webapp/WEB-INF/plugins del pacchetto dato in dotazione, all'interno della directory mioprogetto/WebContent/WEB-INF/plugins/.

  5. Copiare il contenuto della directory src/webapp/resources/plugins del pacchetto dato in dotazione, all'interno della directory mioprogetto/WebContent/resources/plugins/.

  6. Copiare il contenuto della directory src/java/main/com nella directory mioprogetto/src/com del proprio progetto.

  7. Copiare il contenuto della directory src/java/test/test nella directory mioprogetto/src/test del proprio progetto.

Una volta eseguiti i passi sopra descritti, far partire il progetto da Eclipse e verificare la presenza della voce specifica voce di menù nell'area di amministrazione del progetto.

Per eseguire i test, è necessario lanciare una istanza di PortalExample, con il plugin installato, con settati i database di test.

Per lanciare PortalExample con i database di test aprire il file PortalExample/WebContent/META-INF/context.xml

  • nelle risorse jdbc/portDataSource e jdbc/servDataSource cambiare la URL dei database puntati dai driver specificando il nome appropriato dei database di test (PortalExampletestPort and PortalExampletestServ nel caso di PortalExample).

  • nello stesso file, cambiare il valore di configVersion da 'production' a 'test'. <Environment name="configVersion" value="test" type="java.lang.String" override="false" />

Attenzione: è necessario ripulire manualmente il di test di PortalExample in quanto non è possibile effettuare la cancellazione tramite WebServices.

Chapter 4. Configurazione del plugin SOA-Content

Configurazione del plugin SOA-Content

Il Plugin non necessita di nessuna configurazione particolare.