Tutorial di configurazione e programmazione OpenSPCoop. Tutorial di configurazione e programmazione OpenSPCoop
|
|
|
- Giordano Orlando
- 9 anni fa
- Visualizzazioni
Transcript
1 Tutorial di configurazione e programmazione OpenSPCoop i Tutorial di configurazione e programmazione OpenSPCoop
2 Tutorial di configurazione e programmazione OpenSPCoop ii Copyright Link.it s.r.l.
3 Tutorial di configurazione e programmazione OpenSPCoop iii Indice 1 Introduzione 1 2 Presentazione degli scenari di esempio 1 3 Tutorial per SPCoop Comunicazione Variazione (Oneway) Descrizione formale dell Accordo di Servizio: WSDL Configurazione Porta di Dominio Configurazioni comuni a tutti gli esempi del tutorial SPCoop Configurazione del registro dei servizi della PdD Programmazione Fruitore: Servizio Applicativo del Comune Modalità Proxy Transparent Modalità via Integration Manager Erogatore: Servizio Applicativo del CentroAnagrafico Esecuzione e Verifica Stato Famiglia (sincrono) Descrizione formale dell Accordo di Servizio: WSDL Configurazione Porta di Dominio Programmazione Esecuzione e Verifica Stampa Documento (AsincronoAsimmetrico) Descrizione formale dell Accordo di Servizio: WSDL Configurazione Porta di Dominio Programmazione Esecuzione e Verifica Identifica Soggetto (AsincronoSimmetrico) Descrizione formale dell Accordo di Servizio: WSDL Configurazione Porta di Dominio Programmazione Esecuzione e Verifica Tutorial per il protocollo trasparente RichiestaStatoFamiglia Proxy Erogazione SOAP1.1 (sincrono trasparente) Descrizione formale dell Accordo di Servizio: WSDL Configurazione Porta di Dominio Esecuzione e Verifica I rimanenti scenari del protocollo trasparente
4 Tutorial di configurazione e programmazione OpenSPCoop iv Elenco delle tabelle 1 Dati autenticazione PddConsole Dati Soggetto Fruitore Connettore del Soggetto fruitore Dati Servizio Applicativo Fruitore Dati del Soggetto erogatore Connettore del Soggetto erogatore Dati Accordo di Servizio Parte Comune Dati Servizio dell Accordo Dati delle azioni del servizio Dati Servizio Applicativo Dati invocazione Servizio Applicativo Dati dell Accordo di Servizio Parte Specifica Dati Accordo di Servizio Parte Comune Dati Servizio dell Accordo Dati delle azioni del servizio Dati Servizio Applicativo Dati invocazione Servizio Applicativo Dati Accordo di Servizio Parte Specifica Dati Accordo di Servizio Parte Comune Dati Servizio dell Accordo Dati delle azioni del servizio Dati Servizio Applicativo Dati invocazione Servizio Applicativo Dati invocazione Risposta Asincrona Dati Accordo di Servizio Parte Specifica Dati Servizio Applicativo Erogatore Dati Servizio Applicativo Fruitore Dati invocazione Servizio Applicativo erogatore Dati risposta asincrona Servizio Applicativo fruitore Dati Accordo di Servizio Parte Comune Dati Servizio Asincrono Simmetrico nell accordo di servizio Dati Servizio Asincrono Simmetrico Correlato nell accordo di servizio Dati Accordo di Servizio Parte Specifica Dati Accordo di Servizio Parte Specifica correlato Dati del Soggetto erogatore Dati Soggetto Fruitore Dati Servizio Applicativo Fruitore
5 Tutorial di configurazione e programmazione OpenSPCoop v 38 Dati invocazione Servizio Applicativo erogatore Dati Accordo di Servizio Parte Comune Dati Servizio dell Accordo Dati delle azioni del servizio Dati dell Accordo di Servizio Parte Specifica
6 Tutorial di configurazione e programmazione OpenSPCoop 1 / 74 1 Introduzione Lo scopo del presente tutorial è quello di mostrare, tramite semplici casi d uso realistici, i diversi aspetti legati all adozione della Porta di Dominio OpenSPCoop-v2. Gli aspetti illustrati riguardano la configurazione della PdD, gli aspetti implementativi relativi all integrazione degli applicativi, l esecuzione e le verifiche di funzionamento sulla PdD degli stessi. Come ampiamente descritto nella documentazione del prodotto, OpenSPCoop nasce come implementazione della Porta di Dominio per la gestione del protocollo SPCoop. Con OpenSPCoop-v2 si è voluta superare la limitazione al solo protocollo SPCoop, estendendo le funzionalità della Porta di Dominio alla gestione di un qualunque protocollo di comunicazione in ambito SOA. La PdD OpenSPCoop2 supporta built-in, oltre ad SPCoop, il protocollo trasparente. Questo protocollo non prevede alcun header SOAP aggiuntivo per la comunicazione tra le PdD che svolgono quindi il compito di proxy trasparenti garantendo gli usuali servizi: tracciamento, autenticazione, autorizzazione, validazione, gestione security, ecc. Per l aggiunta di ulteriori protocolli è necessario sviluppare dei plugin seguendo l approccio descritto nel Manuale SDK di OpenSPCoop2. Il tutorial, dopo aver presentato i casi d uso adottati negli scenari di esempio, prosegue differenziandosi in due sezioni distinte relative ai casi del protocollo SPCoop e di quello Trasparente. 2 Presentazione degli scenari di esempio Per la descrizione dei casi d uso esemplificativi ipotizziamo l esistenza dei seguenti Enti Amministrativi, vale a dire Soggetti SPCoop: CentroAnagrafico, che rappresenta un ipotetico Centro Operativo che eroga servizi anagrafici con tecnologia SOA oriented (soggetto erogatore). Comune, che rappresenta lo sportello anagrafico di una generica amministrazione locale che richiede dei servizi anagrafici al CentroAnagrafico (soggetto fruitore). Elenchiamo i servizi di esempio: ComunicazioneVariazione: con questa operazione il soggetto Comune invia i dati anagrafici aggiornati di una persona fisica al soggetto CentroAnagrafico. La ricezione del messaggio comporta l aggiornamento della posizione anagrafica. Non richiede alcuna risposta (profilo di cooperazione Oneway). RichiestaStatoFamiglia: con questa operazione il soggetto Comune richiede al soggetto CentroAnagrafico i dati anagrafici che compongono lo stato di famiglia di una persona fisica. Nella richiesta viene inserito il codice fiscale della persona e nella risposta saranno inclusi i dati richiesti (profilo di cooperazione Sincrono). StampaDocumento: viene usato per richiedere la stampa di un documento. Poiché è un operazione che può richiedere un tempo indefinito e non immediato per essere portata a termine, la richiesta di stampa e il messaggio che conferma il completamento sono consegnati su connessioni distinte. Immaginiamo inoltre che per questa particolare operazione l infrastruttura del CentroAnagrafico non consenta connessioni in uscita, quindi entrambe le connessioni saranno aperte dal Comune (profilo di cooperazione AsincronoAsimmetrico). IdentificaSoggetto: quest operazione permette di risalire ad un soggetto con i dati di un documento qualora non si disponesse di un codice fiscale. Anche in questo caso l operazione può essere lunga da portare a termine, quindi richiesta e risposta vengono comunicate su differenti connessioni. A differenza dell operazione StampaDocumento, immaginiamo che l infrastruttura del CentroAnagrafico consenta connessioni in ingresso e in uscita (profilo di cooperazione AsincronoSimmetrico). Nelle sezioni successive vedremo in dettaglio come realizzare gli scenari appena descritti analizzando la progettazione dei descrittori dell Accordo di Servizio, i passi di configurazione della Porta di Dominio, la fase di programmazione dei servizi di fruizione ed erogazione ed infine come effettuare un test di verifica complessivo. Se si è interessati al tutorial per SPCoop si può procedere con la lettura della sezione seguente. Il materiale di esempio, illustrato nel tutorial, contenente le descrizioni formali (wsdl) dei servizi e l implementazione delle applicazioni è reperibile nell archivio relativo alla distribuzione di OpenSPCoop2 al percorso protocolli/spcoop/example/tutorial. Per il tutorial sul protocollo trasparente e la PdD in modalità Proxy proseguire con la lettura della [?title]. Il materiale di esempio, illustrato nel tutorial, relativo a questo tipo di protocollo è reperibile nell archivio relativo alla distribuzione di OpenSPCoop2 al percorso protocolli/trasparente/example/tutorial.
7 Tutorial di configurazione e programmazione OpenSPCoop 2 / 74 3 Tutorial per SPCoop Nel caso del protocollo SPCoop lo scenario previsto è quello che vede i due domini organizzativi, CentroAnagrafico e Comune, interoperare con la mediazione delle rispettive Porte di Dominio in base agli accordi di servizio presenti sul Registro dei Servizi. La figura che segue mostra le entità che collaborano nell interazione tra due servizi applicativi in accordo allo standard SPCoop. Nella figura proposta sono identificabili i due domini che intendono scambiare messaggi tra i rispettivi Servizi Applicativi. Le Porte di Dominio fanno da interfaccia pubblica a tali servizi, comunicando tra loro tramite messaggi in accordo alle specifiche e-gov. Gli aspetti di cooperazione delle Porte di Dominio coinvolte sono specificati in un Accordo di Servizio, contenuto nel Registro dei Servizi. Questo Registro contiene infatti l elenco dei Soggetti abilitati alle comunicazioni SPCoop, l elenco dei servizi erogati da ogni Soggetto e i relativi accordi di servizio. Per la messa in opera degli scenari di esempio trattati in questo tutorial si assume che l installazione standard (binary release) di OpenSPCoop2 sia stata completata correttamente e che quindi i servizi della porta di dominio, PD, PA e IntegrationManager, siano raggiungibili e che si disponga dell accesso all interfaccia di gestione web pddconsole per la configurazione della Porta di Dominio. Nota Per semplificare l esecuzione degli esempi di scenario ed evitare di dover installare una seconda porta di dominio o creare numerosi soggetti cooperanti, si è scelto di utilizzare due soggetti, uno erogatore e l altro fruitore, gestiti entrambi dalla medesima porta di dominio (modalità loopback). Il fatto di realizzare gli esempi utilizzando la medesima porta di dominio in fruizione ed erogazione è un dettaglio trascurabile che non modifica sostanzialmente il modus operandi nel caso in cui fruitore ed erogatore fossero appartenenti a domini distinti con Porte di Dominio distinte. Assumiamo che si siano adottate le impostazioni di default per l installazione di JBoss e che quindi l indirizzo di ricezione delle buste egov della porta di dominio sia uguale a: Essendo i due soggetti entrambi interni al dominio, possiamo assumere che questa url corrisponda al loro connettore. La figura seguente schematizza il flusso di una richiesta gestita dalla Porta di Dominio configurata in modalità loopback.
8 Tutorial di configurazione e programmazione OpenSPCoop 3 / 74 Nei paragrafi seguenti passiamo ad illustrare i 4 servizi di esempio che corrispondono agli altrettanti profili di cooperazione previsti dal protocollo SPCoop. 3.1 Comunicazione Variazione (Oneway) Descrizione formale dell Accordo di Servizio: WSDL Il primo passo sarà, per l erogatore del servizio, quello di fornire il WSDL che descrive il servizio che si intende erogare. Il WSDL poi dovrà essere partizionato, secondo le specifiche del CNIPA, in definitorio, concettuale, logico fruitore/erogatore e implementativo fruitore/erogatore. WSDL Definitorio (/protocolli/spcoop/example/tutorial/oneway/configurazionepdd/wsdl/definitorio.xsd) Contiene le definizioni dei tipi di dato utilizzati per la codifica dei messaggi. <xs:schema xmlns:so=" xmlns:xs=" xmlns:xsd=" targetnamespace=" <xs:element name="comunicazionevariazione"> <xs:complextype> <xs:complexcontent> <xs:extension base="so:personatype"> <xs:attribute name="cf" type="so:codicefiscaletype" use="required" /> </xs:extension> </xs:complexcontent> </xs:complextype> </xs:element> <xs:simpletype name="codicefiscaletype"> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z]{6}\d\d[a-za-z]\d\d[a-za-z]\d\d\d[a-za-z]" /> </xs:restriction> </xs:simpletype> <xs:complextype name="personatype"> <xs:sequence> <xs:element name="nome" type="xs:string" /> <xs:element name="cognome" type="xs:string" /> <xs:element name="codicefiscale" type="so:codicefiscaletype" /> <xs:element name="nascita" type="xs:date" /> <xs:element name="statocivile" type="xs:string" /> </xs:sequence> </xs:complextype> </xs:schema>
9 Tutorial di configurazione e programmazione OpenSPCoop 4 / 74 WSDL Concettuale (/protocolli/spcoop/example/tutorial/oneway/configurazionepdd/wsdl/concettuale.wsdl) Specifica l interfaccia completa dell accordo di servizio indipendentemente da chi espone i servizi. <wsdl:definitions targetnamespace=" ComunicazioneVariazione" xmlns:xsd=" xmlns:soap="http ://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" ComunicazioneVariazione" xmlns:wsdl=" <wsdl:import namespace=" " location="definitorio.xsd"> </wsdl:import> <wsdl:message name="comunicazionevariazionerequest"> <wsdl:part name="comunicazionevariazionepart" element="spc:comunicazionevariazione"> </wsdl:part> </wsdl:message> <wsdl:porttype name="comunicazionevariazione"> <wsdl:operation name="notifica"> <wsdl:input message="spc:comunicazionevariazionerequest"> </wsdl:input> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Logico Erogatore (/protocolli/spcoop/example/tutorial/oneway/configurazionepdd/wsdl/logicoerogatore.wsdl) Specifica l interfaccia di servizi e operazioni esposte dal soggetto erogatore. <wsdl:definitions targetnamespace=" xmlns:xsd=" xmlns:soap=" soap/" xmlns:spc=" xmlns:wsdl=" <wsdl:import namespace=" location="definitorio.xsd"> </wsdl:import> <wsdl:message name="comunicazionevariazionerequest"> <wsdl:part name="comunicazionevariazionepart" element="spc:comunicazionevariazione"> </wsdl:part> </wsdl:message> <wsdl:porttype name="comunicazionevariazione"> <wsdl:operation name="notifica"> <wsdl:input message="spc:comunicazionevariazionerequest"> </wsdl:input> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Logico Fruitore Specifica le interfacce di servizi e operazioni esposte dal soggetto fruitore. Il fruitore, per realizzare questo scenario, non ha bisogno di esporre nessun servizio, quindi non è presente il WSDL Logico Fruitore. WSDL Implementativo Erogatore (/protocolli/spcoop/example/tutorial/oneway/configurazionepdd/wsdl/implementativoerogato Specifica i dettagli di protocollo e porti di accesso per servizi e operazioni esposti dal soggetto erogatore. <wsdl:definitions targetnamespace=" ComunicazioneVariazione" xmlns:xsd=" xmlns:soap=" soap/" xmlns:spc=" xmlns:wsdl =" <wsdl:import namespace=" " location="logicoerogatore.wsdl">
10 Tutorial di configurazione e programmazione OpenSPCoop 5 / 74 </wsdl:import> <wsdl:binding name="comunicazionevariazionebinding" type="spc:comunicazionevariazione"> <soap:binding style="document" transport=" /> <wsdl:operation name="notifica"> <wsdl:input> <soap:body use="literal" /> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="comunicazionevariazioneservice"> <wsdl:port name="comunicazionevariazioneinterfaceendpoint" binding="spc:comunicazionevariazionebinding"> <soap:address location=" /> </wsdl:port> </wsdl:service> </wsdl:definitions> WSDL Implementativo Fruitore Specifica i dettagli di protocollo e porti di accesso per servizi e operazioni esposti dal soggetto erogatore. Come per il WSDL Logico Fruitore, non ci sono servizi da implementare per il fruitore del servizio in questo scenario Configurazione Porta di Dominio Configurazioni comuni a tutti gli esempi del tutorial SPCoop Le operazioni descritte in questo paragrafo forniscono entità (soggetti, servizi...) utili per tutti i profili di collaborazione che verranno configurati successivamente. 1. Configuriamo il registro dei servizi attraverso l interfaccia web di gestione pddconsole. Identifichiamoci con diritti di amministratore: Login Password amministratore secret Tabella 1: Dati autenticazione PddConsole Una volta effettuato il login, nel menù a sinistra sono elencate le operazioni di modifica e visualizzazione della configurazione. 2. Creazione del Soggetto SPC/Comune avente il ruolo di fruitore negli esempi del tutorial: Aggiungiamo il soggetto che fruirà del servizio ComunicazioneVariazione. Comune Tabella 2: Dati Soggetto Fruitore
11 Tutorial di configurazione e programmazione OpenSPCoop 6 / 74 (a) Selezionare aggiungi nel menù Soggetti (b) Utilizzare il form presentato per inserire i parametri del soggetto fruitore del servizio Nota Se non viene indicato il nome della Porta di dominio che ospita il soggetto, viene usato il valore di default: [_Soggetto]SPCoopIT. (c) Premere il pulsante Invia 3. Impostazione del connettore, cioè l indirizzo della porta di dominio per la ricezione delle richieste indirizzate ad un determinato soggetto, relativo al Soggetto SPC/Comune. URL Tabella 3: Connettore del Soggetto fruitore (a) Dalla lista dei soggetti selezionare visualizza relativamente alla riga del soggetto SPC/Comune in corrispondenza della colonna Connettore (b) Abilitare quindi il connettore dall apposito checkbox e Utilizzare il campo testo sottostante per inserire il valore del connettore (c) Premere il pulsante Invia 4. Creazione del Servizio Applicativo Comune_SA utilizzato per l integrazione del client fruitore nei primi tre scenari: (a) Selezionare aggiungi nel menù Servizi Applicativi (b) Utilizzare il form presentato per inserire i parametri del servizio applicativo fruitore (c) Premere il pulsante Invia
12 Tutorial di configurazione e programmazione OpenSPCoop 7 / 74 Comune_SA Soggetto SPC/Comune Invocazione porta / Credenziale di accesso basic Utente Comune_SA Password Modalità di fault soap Sbustamento Informazioni di Protocollo abilitato Tabella 4: Dati Servizio Applicativo Fruitore 5. Creazione del Soggetto SPC/CentroAnagrafico avente il ruolo di erogatore dei servizi di esempio del tutorial. CentroAnagrafico Tabella 5: Dati del Soggetto erogatore (a) Selezionare aggiungi nel menù Soggetti (b) Utilizzare la form per inserire i parametri del soggetto erogatore del servizio
13 Tutorial di configurazione e programmazione OpenSPCoop 8 / 74 Nota Se non viene indicato il nome della Porta di dominio che ospita il soggetto, viene usato il valore di default: [_Soggetto]SPCoopIT. (c) Premere il pulsante Invia 6. Impostazione del connettore relativo al Soggetto SPC/CentroAnagrafico. URL Tabella 6: Connettore del Soggetto erogatore (a) Dalla lista dei soggetti selezionare visualizza relativamente alla riga del soggetto SPC/CentroAnagrafico in corrispondenza della colonna Connettore (b) Utilizzare il form presentato per inserire il valore del connettore (c) Premere il pulsante Invia Configurazione del registro dei servizi della PdD Una volta creati i descrittori (WSDL) del servizio, possiamo procedere con la creazione dell Accordo di Servizio Parte Comune nella pddconsole. 1. Creazione dell Accordo di Servizio Parte Comune AS_ComunicazioneVariazione Soggetto Referente SPC/CentroAnagrafico Versione 1 WSDL Definitorio definitorio.xsd WSDL Concettuale concettuale.wsdl WSDL Logico Erogatore logicoerogatore.wsdl Tabella 7: Dati Accordo di Servizio Parte Comune (a) Selezionare aggiungi nel menù Accordi Servizio Parte Comune (b) Utilizzare il form presentato per inserire i vari parametri dell Accordo
14 Tutorial di configurazione e programmazione OpenSPCoop 9 / Aggiungiamo il Servizio generico all Accordo: il nome del servizio dovrà avere lo stesso nome del PortType indicato nel WSDL Concettuale. Profilo ComunicazioneVariazione oneway Tabella 8: Dati Servizio dell Accordo (a) Dalla lista degli Accordi di Servizio Parte Comune, selezionare visualizza nella colonna Servizi in corrispondenza dell Accordo creato al punto precedente. (b) Premere il pulsante Aggiungi e completare il form per l aggiunta di un nuovo servizio. 3. Specifichiamo le azioni del Servizio: le azioni del Servizio corrispondono alle Operation specificate nel WSDL Notifica Tabella 9: Dati delle azioni del servizio
15 Tutorial di configurazione e programmazione OpenSPCoop 10 / 74 (a) Selezionare visualizza nella colonna Azioni in corrispondenza del servizio ComunicazioneVariazione appena creato. (b) Premere il pulsante Aggiungi e completare il form per l aggiunta di una nuova azione. 4. Aggiungere il Servizio Applicativo Erogatore: Soggetto Credenziale di accesso Modalità fault Sbustamento Informazioni di Protocollo ComunicazioneVariazione_SA CentroAnagrafico nessuna soap abilitato Tabella 10: Dati Servizio Applicativo (a) Selezionare Visualizza nella sezione Servizi Applicativi del menu di sinistra. (b) Premere il pulsante Aggiungi presente sotto la lista dei Servizi Applicativi (c) Utilizzare il form per inserire i parametri del Servizio Applicativo. (d) Premere il pulsante Invia 5. Impostare i parametri di invocazione del Servizio Applicativo: Sbustamento SOAP Sbustamento Informazioni di Protocollo Salvataggio in Message Box Connettore abilitato Url connettore Tipo credenziali d accesso ComunicazioneVariazione_SA disabilitato abilitato disabilitato si nessuna Tabella 11: Dati invocazione Servizio Applicativo
16 Tutorial di configurazione e programmazione OpenSPCoop 11 / 74 (a) Abilitare l invocazione del servizio applicativo ComunicazioneServizio_SA dall elenco dei Servizi Applicativi (selezionare disabilitato nella colonna Invocazione servizio) (b) Utilizzare il form presentato per inserire i parametri del Servizio Applicativo. (c) Premere il pulsante Invia 6. Aggiungere l Accordo di Servizio Parte Specifica: Soggetto Erogatore Accordo di Servizio Parte Comune Servizio Applicativo Erogatore Servizio WSDL Implementativo Erogatore SPC/CentroAnagrafico AS_ComunicazioneVariazione ComunicazioneVariazione_SA ComunicazioneVariazione implementativoerogatore.wsdl Tabella 12: Dati dell Accordo di Servizio Parte Specifica (a) Nella sezione Accordi Servizio Parte Specifica selezionare Aggiungi. (b) Utilizzare il form presentato per inserire i parametri della parte specifica dell accordo di servizio
17 Tutorial di configurazione e programmazione OpenSPCoop 12 / 74 (c) Premere il pulsante Invia Nota Si tenga presente che l operazione descritta in questo passaggio comporta la creazione automatica di una porta applicativa, con il nome e il servizio applicativo indicati nel form, associata al soggetto erogatore dell accordo di servizio parte specifica appena creato. La porta applicativa creata per default è unica per tutte le azioni del servizio e viene inizializzata con dei valori di default che vanno bene in molti casi. Se si vogliono modificare tali impostazioni (ad esempio una porta applicativa diversa per azione) si deve procedere con la modifica della porta applicativa individuabile nella lista delle porte applicative relative al soggetto erogatore. 7. Aggiungere il soggetto fruitore alla lista dei soggetti che possono fruire del servizio: l installazione standard di OpenSP- Coop2 attiva di default l autorizzazione basata sul Registro che attiva il controllo da parte della porta applicativa che il soggetto che invoca un servizio sia un fruitore autorizzato. Per superare questo controllo dobbiamo quindi aggiungere il soggetto SPC/Comune ai fruitori del servizio ComunicazioneVariazione. (a) Nell elenco degli Accordi Servizio Parte Specifica individuare ComunicazioneVariazione e selezionare visualizza nella colonna Fruitori: (b) Selezionare Aggiungi ed utilizzare il form per inserire i parametri del soggetto fruitore del servizio (c) Premere il pulsante Invia
18 Tutorial di configurazione e programmazione OpenSPCoop 13 / 74 Nota Si tenga presente che l operazione descritta in questo passaggio comporta la creazione automatica di una porta delegata associata al soggetto fruitore appena associato al servizio. La porta delegata viene inizializzata con dei valori di default che vanno bene in molti casi. Se si vogliono modificare tali impostazioni si deve procedere con la modifica della porta delegata individuabile nella lista delle porte delegata relative al soggetto fruitore. 8. Autorizzare il servizio applicativo fruitore all invocazione della porta delegata appena creata. (a) Dall elenco dei fruitori del servizio, in corrispondenza del soggetto SPC/Comune, nella colonna Servizi Applicativi Autorizzati selezionare visualizza, quindi il pulsante Aggiungi (b) Compilare il form selezionando il servizio applicativo Comune_SA dalla lista a discesa e confermando con il pulsante Invia (c) Premere il pulsante Invia Nota L operazione descritta in questo passaggio, creerà automaticamente un associazione tra il servizio applicativo e la porta delegata creata automaticamente al passo precedente Programmazione Completata la configurazione della Porta di Dominio, si passa alla fase di integrazione degli applicativi tramite l implementazione delle componenti relative ai servizi applicativi erogatore e fruitore Fruitore: Servizio Applicativo del Comune Modalità Proxy Transparent Cominciamo con la programmazione del fruitore. Per completare gli esempi sono stati utilizzati gli stub generati dal tool wsdl2java fornito da CXF. L approccio in modalità Proxy Transparent prevede che l invocazione del servizio avvenga tramite l interfaccia descritta nel WSDL dell accordo di servizio. ComunicazioneVariazioneService ss = new ComunicazioneVariazioneService(wsdlURL, SERVICE_NAME); ComunicazioneVariazione port = ss.getcomunicazionevariazioneinterfaceendpoint(); /* * Imposto la url della porta di dominio come destinazione * Imposto username e password per l autenticazione */ ((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, SOAPUrl); ((BindingProvider)port).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username); ((BindingProvider)port).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password); org.openspcoop.example.comunicazionevariazione_type _notifica_comunicazionevariazionepart = new ComunicazioneVariazione_Type();
19 Tutorial di configurazione e programmazione OpenSPCoop 14 / 74 _notifica_comunicazionevariazionepart.setcf("bbbccc11f11f111f"); port.notifica(_notifica_comunicazionevariazionepart); Modalità via Integration Manager Un altro modo per inviare i messaggi alla Porta di Dominio è quello di utilizzare il servizio PD di Integration Manager. Generiamo gli stub partendo dal wsdl del servizio: wsdl2java -all ottenuti gli stub possiamo inviare il messaggio di richiesta: QName SERVICE_NAME = new QName(" " IntegrationManagerService"); try{ URL wsdlurl = new URL(...); } catch (MalformedURLException e) { e.printstacktrace(); } try{ String file = "request.xml"; String portadelegata = "/SPCComune/SPCCentroAnagrafico/ SPCComunicazioneVariazione/Notifica"; /* * Creo il port per l IntegrationManager */ PDService ss = new PDService(wsdlURL, SERVICE_NAME); PD port = ss.getpd(); /* * Invoco il servizio invocaportadelegata */ java.lang.string _invocaportadelegata_portadelegata = portadelegata; IntegrationManagerMessage _invocaportadelegata_msg = new IntegrationManagerMessage(); File xmlmessage = new File(file); byte[] msg = new byte[(int)xmlmessage.length()]; FileInputStream strm = new FileInputStream(xmlMessage); strm.read(msg); _invocaportadelegata_msg.setmessage(msg); System.out.println("Invocazione Comunicazione Variazione via Integration Manager..."); System.out.println("Request Message:"); System.out.println(new String(_invocaPortaDelegata_msg.getMessage())); try { IntegrationManagerMessage _invocaportadelegata return = port. invocaportadelegata(_invocaportadelegata_portadelegata, _invocaportadelegata_msg); System.out.println("\n Response Message:");
20 Tutorial di configurazione e programmazione OpenSPCoop 15 / 74 System.out.println(new String(_invocaPortaDelegata return.getmessage())) ; } catch (IntegrationManagerException_Exception e) { System.out.println("Expected exception: IntegrationManagerException has occurred."); System.out.println(e.toString()); return; } } catch(exception e){ System.out.println("Errore::::" + e); return; } Erogatore: Servizio Applicativo del CentroAnagrafico Il Servizio Applicativo del Centro Anagrafico deve ricevere il messaggio SOAP senza mandare una risposta. un implementazione con gli skeleton generati dal tool wsdl2java di CXF. package org.openspcoop.example; servicename = "ComunicazioneVariazioneService", portname = "ComunicazioneVariazioneInterfaceEndpoint", targetnamespace = " wsdllocation = "file:comunicazionevariazione.wsdl", endpointinterface = "org.openspcoop.example.comunicazionevariazione") public class ComunicazioneVariazioneImpl implements ComunicazioneVariazione { public void notifica(comunicazionevariazione_type comunicazionevariazionepart) { try { System.out.println("========== Ricevuta Comunicazione Variazione ==============") ; System.out.println("== Codice fiscale da modificare: " + comunicazionevariazionepart. getcf()); System.out.println(); System.out.println("== Nuovo nome: " + comunicazionevariazionepart.get()); System.out.println("== Nuovo cognome: " + comunicazionevariazionepart.getcognome()); System.out.println("== Nuovo codice fiscale: " + comunicazionevariazionepart. getcodicefiscale()); System.out.println("== Nuova data di nascita: " + comunicazionevariazionepart. getnascita()); System.out.println("== Nuovo stato civile: " + comunicazionevariazionepart. getstatocivile()); } catch (Exception ex) { ex.printstacktrace(); throw new RuntimeException(ex); } } }
21 Tutorial di configurazione e programmazione OpenSPCoop 16 / Esecuzione e Verifica La visione d insieme dell intero flusso di invocazione è mostrata nella figura seguente, tenendo presente però che, nel caso del tutorial, la PdD è unica per entrambi i soggetti per semplificare le configurazioni. Il Client invia il messaggio di richiesta alla Porta Delegata (Messaggio 1 in figura). La Porta di Dominio si occupa quindi di imbustare la richiesta ed inviarla alla Porta di Dominio destinataria, nel nostro caso a se stessa, arricchita dell header e-gov (Messaggio 2 in figura). La Porta di Dominio destinataria recupera le informazioni necessarie alla gestione della richiesta, riconosce che il tipo di comunicazione è Oneway e si occupa quindi di consegnare il messaggio applicativo al servizio erogatore (Messaggio 3 in figura) e quindi inviare la risposta alla PdD mittente con payload vuoto (come previsto nei profili oneway, Messaggio 5 in figura). La PdD mittente quindi invia anch essa la risposta con payload vuoto al servizio applicativo fruitore del soggetto Comune. (Messaggio 6 in figura). Per l esecuzione delle applicazioni di esempio si può utilizzare l ambiente presente nella distribuzione di openspcoop2 al percorso: protocolli/spcoop/example/tutorial/oneway eseguendo i seguenti passi: Configurare l applicazione client editando il file Client.properties. Ecco un esempio di possibili valori di configurazione: invocazionetramitepdd=true # Invocazione diretta del servizio # endpoint= # Invocazione tramite PdD portadidominio= portadelegata=spccomune/spccentroanagrafico/spccomunicazionevariazione/notifica # Credenziali http basic username=comune_sa password= Configurare l applicazione server editando il file Server.properties. In questo caso si tratterà di impostare semplicemente l endpoint del servizio esposto: endpoint= Avviare il Server tramite il comando ant run_server. L output ottenuto sarà: [root@ws5 oneway]# ant run_server Buildfile: /home/papandrea/work/openspcoop2/0.2.dev/protocolli/spcoop/example/tutorial/ oneway/build.xml _run_server_spcoop_tutorial_oneway: [java] ************************************** [java] Starting Server [java] Jul 12, :59:31 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl
22 Tutorial di configurazione e programmazione OpenSPCoop 17 / 74 [java] INFO: Creating Service { ComunicazioneVariazione}ComunicazioneVariazioneService from WSDL: file: configurazionepdd/wsdl/implementazioneerogatore.wsdl [java] Jul 12, :59:31 PM org.apache.cxf.endpoint.serverimpl initdestination [java] INFO: Setting the server s publish address to be tutorial/oneway [java] Server ready... [java] :59:31.787:INFO:oejs.Server:jetty v [java] :59:31.831:INFO:oejs.AbstractConnector:Started SelectChannelConnector@localhost:8888 Avviare il Client tramite il comando ant run_client. L output ottenuto sarà: [root@ws5 oneway]# ant run_client Buildfile: /home/papandrea/work/openspcoop2/0.2.dev/protocolli/spcoop/example/tutorial/ oneway/build.xml _run_client_spcoop_tutorial_oneway: [java] Jul 12, :26:07 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { ComunicazioneVariazione}ComunicazioneVariazioneService from WSDL: file: configurazionepdd/wsdl/implementazioneerogatore.wsdl [java] Invoking notifica... run_client: BUILD SUCCESSFUL Total time: 3 seconds Contestualmente l output della console su cui è stato avviato il server mostra il seguente output: [java] ========== Ricevuta Comunicazione Variazione ============== [java] == Codice fiscale da modificare: BBBCCC11F11F111F [java] [java] == Nuovo nome: Mario [java] == Nuovo cognome: Rossi [java] == Nuovo codice fiscale: DDDFFF22G22G222G [java] == Nuova data di nascita: Z [java] == Nuovo stato civile: Celibe Per verificare il corretto funzionamento si possono consultare i messaggi diagnostici presenti nella directory configurata in openspcoop2 ed in particolare il file openspcoop2.log: <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T16 :01:29.463> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _16:01 PD: SPCComune/SPCCentroAnagrafico/SPCComunicazioneVariazione SA:Comune_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ComunicazioneVariazione A:Notifica Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/ SPCComunicazioneVariazione <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T16 :01:30.386> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _16:01 PD: SPCComune/SPCCentroAnagrafico/SPCComunicazioneVariazione SA:Comune_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ComunicazioneVariazione A:Notifica Connessione verso il servizio applicativo terminata con codice di trasporto: 200
23 Tutorial di configurazione e programmazione OpenSPCoop 18 / 74 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T16:01:30.709> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _16:01 PD:SPCComune/ SPCCentroAnagrafico/SPCComunicazioneVariazione SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/ComunicazioneVariazione A:Notifica Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _16:01] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T16:01:31.019> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _16:01 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ComunicazioneVariazione A:Notifica Ricevuto messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _16:01] inviata dalla parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T16:01:31.087> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _16:01 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ComunicazioneVariazione A:Notifica Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _16:01] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/ComunicazioneVariazione:1--Notifica]... <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T16:01:31.091> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _16:01 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ComunicazioneVariazione A:Notifica Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _16:01] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/ComunicazioneVariazione:1--Notifica]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico Sbustamento < T16 :01:31.176> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _16:01 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ComunicazioneVariazione A:Notifica Ricevuta Busta [Comune_ComuneSPCoopIT_ _ _16:01] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T16:01:31.263> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _16:01 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ComunicazioneVariazione A:Notifica Connessione verso la porta di dominio mittente terminata con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T16:01:31.322> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _16:01 PD:SPCComune/ SPCCentroAnagrafico/SPCComunicazioneVariazione SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/ComunicazioneVariazione A:Notifica Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _16 :01] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: con codice di trasporto: 200 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T16:01:31.341> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _16 :01 SA:ComunicazioneVariazione_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ ComunicazioneVariazione A:Notifica Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _16:01] in corso (location:
24 Tutorial di configurazione e programmazione OpenSPCoop 19 / 74 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T16:01:32.002> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _16 :01 SA:ComunicazioneVariazione_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ ComunicazioneVariazione A:Notifica Messaggio applicativo con ID [Comune_ComuneSPCoopIT_ _ _16:01], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [ComunicazioneVariazione_SA] mediante connettore [http] (location: con codice di trasporto: Stato Famiglia (sincrono) Descrizione formale dell Accordo di Servizio: WSDL Come per il servizio ComunicazioneVariazione, creiamo un accordo di servizio fornendo i wsdl che descrivono il servizio applicativo in questione. I wsdl in questione sono forniti insieme ai sorgenti degli esempi: WSDL Definitorio (/protocolli/spcoop/example/tutorial/sincrono/configurazionepdd/wsdl/definitorio.xsd) Contiene le definizioni dei tipi di dato utilizzati per la codifica dei messaggi. <xs:schema xmlns:so=" xmlns:xs=" xmlns:xsd=" XMLSchema" targetnamespace=" RichiestaStatoFamiglia"> <xs:simpletype name="codicefiscaletype"> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z]{6}\d\d[a-za-z]\d\d[a-za-z]\d\d\d[a-za-z]"/> </xs:restriction> </xs:simpletype> <xs:complextype name="personatype"> <xs:sequence> <xs:element name="nome" type="xs:string"/> <xs:element name="cognome" type="xs:string"/> <xs:element name="codicefiscale" type="so:codicefiscaletype"/> <xs:element name="nascita" type="xs:date"/> <xs:element name="statocivile" type="xs:string"/> </xs:sequence> </xs:complextype> <xs:element name="richiestastatofamiglia" type="so:codicefiscaletype"/> <xs:element name="statofamiglia" type="so:personatype"/> </xs:schema> WSDL Concettuale (/protocolli/spcoop/example/tutorial/sincrono/configurazionepdd/wsdl/concettuale.wsdl) Specifica l interfaccia completa dell accordo di servizio indipendentemente da chi espone i servizi. <wsdl:definitions targetnamespace=" RichiestaStatoFamiglia" xmlns:xsd=" xmlns:soap=" schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" RichiestaStatoFamiglia" xmlns:wsdl=" <wsdl:import namespace=" location="definitorio.xsd"> </wsdl:import> <wsdl:message name="statofamigliaresponse"> <wsdl:part name="statofamigliaresponsepart" element="spc:statofamiglia"> </wsdl:part> </wsdl:message> <wsdl:message name="statofamigliarequest"> <wsdl:part name="statofamigliarequestpart" element="spc:richiestastatofamiglia"> </wsdl:part>
25 Tutorial di configurazione e programmazione OpenSPCoop 20 / 74 </wsdl:message> <wsdl:porttype name="richiestastatofamiglia"> <wsdl:operation name="acquisisci"> <wsdl:input message="spc:statofamigliarequest"> </wsdl:input> <wsdl:output message="spc:statofamigliaresponse"> </wsdl:output> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Logico Erogatore (/protocolli/spcoop/example/tutorial/sincrono/configurazionepdd/wsdl/logicoerogatore.wsdl) Specifica l interfaccia di servizi e operazioni esposte dal soggetto erogatore. <wsdl:definitions targetnamespace=" RichiestaStatoFamiglia" xmlns:xsd=" xmlns:soap=" schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" RichiestaStatoFamiglia" xmlns:wsdl=" <wsdl:import namespace=" location="definitorio.xsd"> </wsdl:import> <wsdl:message name="statofamigliaresponse"> <wsdl:part name="statofamigliaresponsepart" element="spc:statofamiglia"> </wsdl:part> </wsdl:message> <wsdl:message name="statofamigliarequest"> <wsdl:part name="statofamigliarequestpart" element="spc:richiestastatofamiglia"> </wsdl:part> </wsdl:message> <wsdl:porttype name="richiestastatofamiglia"> <wsdl:operation name="acquisisci"> <wsdl:input message="spc:statofamigliarequest"> </wsdl:input> <wsdl:output message="spc:statofamigliaresponse"> </wsdl:output> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Logico Fruitore Il fruitore, per realizzare questo scenario, non ha bisogno di esporre nessun servizio, quindi non ha un WSDL che lo descrive. WSDL Implementativo Erogatore (/protocolli/spcoop/example/tutorial/sincrono/configurazionepdd/wsdl/implementativoerogat Specifica i dettagli di protocollo e porti di accesso per servizi e operazioni esposti dal soggetto erogatore. <wsdl:definitions targetnamespace=" RichiestaStatoFamiglia" xmlns:xsd=" xmlns:soap=" schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" RichiestaStatoFamiglia" xmlns:wsdl=" <wsdl:import namespace=" location="logicoerogatore.wsdl"> </wsdl:import> <wsdl:binding name="richiestastatofamigliabinding" type="spc:richiestastatofamiglia"> <soap:binding style="document" transport=" <wsdl:operation name="acquisisci"> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation>
26 Tutorial di configurazione e programmazione OpenSPCoop 21 / 74 </wsdl:binding> <wsdl:service name="richiestastatofamigliaservice"> <wsdl:port name="richiestastatofamigliainterfaceendpoint" binding="spc: RichiestaStatoFamigliaBinding"> <soap:address location=" </wsdl:port> </wsdl:service> </wsdl:definitions> WSDL Implementativo Fruitore Come per il WSDL Logico Fruitore, non ci sono servizi da implementare per il fruitore del servizio in questo scenario Configurazione Porta di Dominio Eseguiamo la configurazione sulla pddconsole sulla falsariga di quanto fatto per lo scenario oneway visto in precedenza. Una volta creati i descrittori WSDL del servizio, possiamo procedere con la creazione dell accordo di servizio. 1. Creazione dell Accordo di Servizio Parte Comune con i dati riportati in Tabella 13. Referente WSDL Definitorio WSDL Concettuale WSDL Logico Erogatore AS_RichiestaStatoFamiglia SPC/CentroAnagrafico definitorio.xsd concettuale.wsdl logicoerogatore.wsdl Tabella 13: Dati Accordo di Servizio Parte Comune 2. Aggiungiamo il Servizio Generico all Accordo: il nome del servizio dovrà avere lo stesso nome del PortType indicato nel WSDL Concettuale. Profilo RichiestaStatoFamiglia sincrono Tabella 14: Dati Servizio dell Accordo 3. Specifichiamo le azioni del Servizio: le azioni del Servizio corrispondono alle Operation specificate nel WSDL Acquisisci Tabella 15: Dati delle azioni del servizio 4. Aggiungere il Servizio Applicativo Erogatore: 5. Impostare i parametri di invocazione del Servizio Applicativo, per la consegna trasparente delle richieste al servizio, con i valori riportati in Tabella 17: 6. Aggiungere l Accordo di Servizio Parte Specifica con i dati riportati in Tabella Aggiungere il soggetto fruitore alla lista dei soggetti che possono fruire della parte specifica appena creata: avendo attiva di default l autenticazione basata sul Registro dobbiamo aggiungere il soggetto SPC/Comune ai fruitori del servizio RichiestaStatoFamiglia
27 Tutorial di configurazione e programmazione OpenSPCoop 22 / 74 Soggetto Credenziale di accesso Modalità fault RichiestaStatoFamiglia_SA CentroAnagrafico nessuna soap Tabella 16: Dati Servizio Applicativo Sbustamento SOAP Sbustamento Informazioni di Protocollo Salvataggio in Message Box Connettore abilitato Url connettore Tipo credenziali d accesso RichiestaStatoFamiglia_SA disabilitato abilitato disabilitato si nessuna Tabella 17: Dati invocazione Servizio Applicativo 8. Inserire il servizio applicativo tra quelli autorizzati ad invocare il servizio. Questo passaggio attiva l autorizzazione del servizio applicativo fruitore all invocazione della porta delegata generata al passo precedente. (a) Dall elenco dei fruitori del servizio, in corrispondenza del soggetto SPC/Comune, nella colonna Servizi Applicativi Autorizzati selezionare visualizza, quindi il pulsante Aggiungi (b) Compilare il form selezionando il servizio applicativo Comune_SA dalla lista a discesa e confermando con il pulsante Invia Nota L operazione descritta in questo passaggio, creerà automaticamente un associazione tra il servizio applicativo e la porta delegata creata automaticamente al passo precedente Programmazione Gli aspetti di programmazione di un servizio e relativo client, per il profilo sincrono, sono molto simili al caso del profilo Oneway, tranne per il fatto che il servizio in questo caso restituisce un messaggio SOAP di risposta che deve essere gestita dal chiamante. Nella programmazione dei servizi a livello di operazioni, questo si traduce in un operazione con un oggetto di ritorno invece di void. public interface RichiestaStatoFamiglia = "statofamiglia", targetnamespace = " ", partname = = "Acquisisci") Soggetto Accordo Servizio Parte Comune Servizio Servizio Applicativo Erogatore WSDL Implementativo Erogatore SPC/CentroAnagrafico AS_RichiestaStatoFamiglia RichiestaStatoFamiglia RichiestaStatoFamiglia_SA implementativoerogatore.wsdl Tabella 18: Dati Accordo di Servizio Parte Specifica
28 Tutorial di configurazione e programmazione OpenSPCoop 23 / 74 } public PersonaType = "statofamigliarequestpart", name = "richiestastatofamiglia", targetnamespace = " java.lang.string statofamigliarequestpart ); Esecuzione e Verifica La visione d insieme dell intero flusso di invocazione è mostrata nella figura seguente, tenendo presente però che, nel caso del tutorial, la PdD è unica per entrambi i soggetti per semplificare le configurazioni. Il Client invia il messaggio di richiesta alla Porta Delegata (Messaggio 1 in figura) La Porta di Dominio si occupa quindi di imbustare la richiesta ed inviarla alla Porta di Dominio destinataria, nel nostro caso a se stessa, arricchita dell header e-gov (Messaggio 2 in figura). La Porta di Dominio destinataria recupera le informazioni necessarie alla gestione della richiesta, riconosce che il tipo di comunicazione è Sincrona e si occupa quindi di consegnare il messaggio applicativo al servizio erogatore (Messaggio 3 in figura) e quindi inviare il messaggio di risposta alla PdD mittente (Messaggio 5 in figura). La PdD mittente quindi invia la risposta al servizio applicativo fruitore del soggetto SPC/Comune (Messaggio 6 in figura). Per l esecuzione delle applicazioni di esempio si può utilizzare l ambiente presente nella distribuzione di openspcoop2 al percorso: protocolli/spcoop/example/tutorial/sincrono eseguendo i seguenti passi: Configurare l applicazione client editando il file Client.properties. Ecco un esempio di possibili valori di configurazione: invocazionetramitepdd=true # Invocazione diretta del servizio endpoint= # Invocazione tramite PdD portadidominio= portadelegata=spccomune/spccentroanagrafico/spcrichiestastatofamiglia/acquisisci # Credenziali http basic username=comune_sa password= Configurare l applicazione server editando il file Server.properties. In questo caso si tratterà di impostare semplicemente l endpoint del servizio esposto: endpoint= Avviare il Server tramite il comando ant run_server. L output ottenuto sarà: [root@ws5 sincrono]# ant run_server Buildfile: /home/papandrea/work/openspcoop2/0.2.dev/protocolli/spcoop/example/tutorial/ sincrono/build.xml
29 Tutorial di configurazione e programmazione OpenSPCoop 24 / 74 _run_server_spcoop_tutorial_sincrono: [java] Starting Server [java] Jul 12, :27:02 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { RichiestaStatoFamiglia}RichiestaStatoFamigliaService from WSDL: file: configurazionepdd/wsdl/implementazioneerogatore.wsdl [java] Jul 12, :27:02 PM org.apache.cxf.endpoint.serverimpl initdestination [java] INFO: Setting the server s publish address to be tutorial/sincrono [java] Server ready... [java] :27:02.924:INFO:oejs.Server:jetty v [java] :27:02.965:INFO:oejs.AbstractConnector:Started SelectChannelConnector@localhost:8888 Avviare il Client tramite il comando ant run_client. L output ottenuto sarà: [root@ws5 sincrono]# ant run_client Buildfile: /home/papandrea/work/openspcoop2/0.2.dev/protocolli/spcoop/example/tutorial/ sincrono/build.xml _run_client_spcoop_tutorial_sincrono: [java] Jul 12, :27:12 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { RichiestaStatoFamiglia}RichiestaStatoFamigliaService from WSDL: file: configurazionepdd/wsdl/implementazioneerogatore.wsdl [java] Invoking acquisisci... Contestualmente l output della console su cui è stato avviato il server mostra il seguente output: [java] Richiesto Stato Famiglia per cf:dddfff22g22g222g e quindi l output del client mostra: [java] ========== Ricevuti dati del Soggetto ============== [java] == Nuovo nome: Mario [java] == Nuovo cognome: Rossi [java] == Nuovo codice fiscale: DDDFFF22G22G222G [java] == Nuova data di nascita: Z [java] == Nuovo stato civile: Celibe Per verificare il corretto funzionamento si possono consultare i messaggi diagnostici presenti nella directory configurata in openspcoop2 ed in particolare il file openspcoop2.log: ComuneSPCoopIT.RicezioneContenutiApplicativiWS < T15:29:25.889> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_ _ _15:29 PD:SPCComune/SPCCentroAnagrafico/ SPCRichiestaStatoFamiglia SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ RichiestaStatoFamiglia_Acquisisci Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/ SPCRichiestaStatoFamiglia ComuneSPCoopIT.InoltroBusteEGov < T15:29:25.960> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_ _ _15:29 PD:SPCComune/SPCCentroAnagrafico/ SPCRichiestaStatoFamiglia SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ RichiestaStatoFamiglia_Acquisisci Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_ _ _15:29] in corso (location:
30 Tutorial di configurazione e programmazione OpenSPCoop 25 / 74 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS < T15:29:26.161> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_ _ _15:29 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Ricevuto messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_ _ _15 :29] inviata dalla parte mittente [SPC/Comune] CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS < T15:29:26.169> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_ _ _15:29 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_ _ _15:29] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci]... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS < T15:29:26.213> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_ _ _15:29 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_ _ _15:29] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) CentroAnagraficoSPCoopIT.Sbustamento < T15:29:26.220> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_ _ _15:29 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Ricevuta Busta EGov [Comune_ComuneSPCoopIT_ _ _15:29] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi < T15:29:26.235> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_ _ _15:29 SA:RichiestaStatoFamiglia_SA FR: SPC/Comune -> S:SPC/CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_ _ _15:29] in corso (location: CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi < T15:29:26.528> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_ _ _15:29 SA:RichiestaStatoFamiglia_SA FR: SPC/Comune -> S:SPC/CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Messaggio applicativo con ID [Comune_ComuneSPCoopIT_ _ _15:29], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [RichiestaStatoFamiglia_SA] mediante connettore [http] (location: con codiceconsegna: 200 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS < T15:29:26.599> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_ _ _15:29 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Generato messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _15:29] inviato alla parte destinataria [SPC/Comune] ComuneSPCoopIT.InoltroBusteEGov < T15:29:26.616> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_ _ _15:29 PD:SPCComune/SPCCentroAnagrafico/ SPCRichiestaStatoFamiglia SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ RichiestaStatoFamiglia_Acquisisci
31 Tutorial di configurazione e programmazione OpenSPCoop 26 / 74 Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_ _ _15:29] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: con codiceconsegna: 200 ComuneSPCoopIT.InoltroBusteEGov < T15:29:26.713> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_ _ _15:29 PD:SPCComune/SPCCentroAnagrafico/ SPCRichiestaStatoFamiglia SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ RichiestaStatoFamiglia_Acquisisci Ricevuto messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _15:29] inviata dalla parte mittente [SPC/CentroAnagrafico] ComuneSPCoopIT.SbustamentoRisposte < T15:29:26.735> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_ _ _15:29 PD:SPCComune/SPCCentroAnagrafico/ SPCRichiestaStatoFamiglia SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ RichiestaStatoFamiglia_Acquisisci Ricevuta Busta EGov [CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _15:29] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute ComuneSPCoopIT.RicezioneContenutiApplicativiWS < T15:29:26.738> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_ _ _15:29 PD:SPCComune/SPCCentroAnagrafico/ SPCRichiestaStatoFamiglia SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ RichiestaStatoFamiglia_Acquisisci Consegna contenuto applicativo, della risposta applicativa sincrona, effettuata 3.3 Stampa Documento (AsincronoAsimmetrico) Descrizione formale dell Accordo di Servizio: WSDL Creiamo un accordo di servizio fornendo i wsdl che descrivono il servizio applicativo in questione. I wsdl in questione sono forniti insieme ai sorgenti degli esempi: WSDL Definitorio (/protocolli/spcoop/example/tutorial/asincronoasimmetrico/configurazionepdd/wsdl/definitorio.xsd) Contiene le definizioni dei tipi di dato utilizzati per la codifica dei messaggi. <xs:schema xmlns:xs=" targetnamespace=" xmlns:so=" <xs:simpletype name="codicefiscaletype"> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z]{6}\d\d[a-za-z]\d\d[a-za-z]\d\d\d[a-za-z]"/> </xs:restriction> </xs:simpletype> <xs:complextype name="richiestadocumento"> <xs:sequence> <xs:element name="codicedocumento" type="xs:string"/> </xs:sequence> </xs:complextype> <xs:element name="stampadocumento"> <xs:complextype> <xs:complexcontent> <xs:extension base="so:richiestadocumento">
32 Tutorial di configurazione e programmazione OpenSPCoop 27 / 74 <xs:attribute name="cf" type="so:codicefiscaletype" use="required"/> </xs:extension> </xs:complexcontent> </xs:complextype> </xs:element> <xs:element name="presaconsegnastampa"> <xs:complextype> <xs:sequence> <xs:element name="idstampa" type="xs:long"/> <xs:element name="stimacompletamento" type="xs:date"/> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="statodocumento" type="xs:long"/> <xs:element name="esito" type="xs:string"/> </xs:schema> WSDL Concettuale (/protocolli/spcoop/example/tutorial/asincronoasimmetrico/configurazionepdd/wsdl/concettuale.wsdl) Specifica l interfaccia completa dell accordo di servizio indipendentemente da chi espone i servizi. <wsdl:definitions xmlns:wsdl=" xmlns:xsd=" xmlns:soap=" soap/" xmlns:spc=" targetnamespace=" <wsdl:import namespace=" location="definitorio.xsd"> </wsdl:import> <wsdl:message name="stampadocumentoresponse"> <wsdl:part name="stampadocumentoresponsepart" element="spc:presaconsegnastampa"> </wsdl:part> </wsdl:message> <wsdl:message name="statodocumentorequest"> <wsdl:part name="statodocumentorequestpart" element="spc:statodocumento"> </wsdl:part> </wsdl:message> <wsdl:message name="stampadocumentorequest"> <wsdl:part name="stampadocumentorequestpart" element="spc:stampadocumento"> </wsdl:part> </wsdl:message> <wsdl:message name="statodocumentoresponse"> <wsdl:part name="statodocumentoresponsepart" element="spc:esito"> </wsdl:part> </wsdl:message> <wsdl:porttype name="stampadocumento"> <wsdl:operation name="stampa"> <wsdl:input message="spc:stampadocumentorequest"> </wsdl:input> <wsdl:output message="spc:stampadocumentoresponse"> </wsdl:output> </wsdl:operation> <wsdl:operation name="stato"> <wsdl:input message="spc:statodocumentorequest"> </wsdl:input> <wsdl:output message="spc:statodocumentoresponse"> </wsdl:output>
33 Tutorial di configurazione e programmazione OpenSPCoop 28 / 74 </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Logico Erogatore (/protocolli/spcoop/example/tutorial/asincronoasimmetrico/configurazionepdd/wsdl/logicoerogatore.w Specifica l interfaccia di servizi e operazioni esposte dal soggetto erogatore. <wsdl:definitions xmlns:wsdl=" xmlns:xsd=" xmlns:soap=" soap/" xmlns:spc=" targetnamespace=" <wsdl:import namespace=" location="definitorio.xsd"> </wsdl:import> <wsdl:message name="stampadocumentoresponse"> <wsdl:part name="stampadocumentoresponsepart" element="spc:presaconsegnastampa"> </wsdl:part> </wsdl:message> <wsdl:message name="statodocumentorequest"> <wsdl:part name="statodocumentorequestpart" element="spc:statodocumento"> </wsdl:part> </wsdl:message> <wsdl:message name="stampadocumentorequest"> <wsdl:part name="stampadocumentorequestpart" element="spc:stampadocumento"> </wsdl:part> </wsdl:message> <wsdl:message name="statodocumentoresponse"> <wsdl:part name="statodocumentoresponsepart" element="spc:esito"> </wsdl:part> </wsdl:message> <wsdl:porttype name="stampadocumento"> <wsdl:operation name="stampa"> <wsdl:input message="spc:stampadocumentorequest"> </wsdl:input> <wsdl:output message="spc:stampadocumentoresponse"> </wsdl:output> </wsdl:operation> <wsdl:operation name="stato"> <wsdl:input message="spc:statodocumentorequest"> </wsdl:input> <wsdl:output message="spc:statodocumentoresponse"> </wsdl:output> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Logico Fruitore Il fruitore, per realizzare questo scenario, non ha bisogno di esporre nessun servizio, quindi non ha un WSDL che lo descrive. WSDL Implementativo Erogatore (/protocolli/spcoop/example/tutorial/asincronoasimmetrico/configurazionepdd/wsdl/impleme Specifica i dettagli di protocollo e porti di accesso per servizi e operazioni esposti dal soggetto erogatore. <wsdl:definitions xmlns:wsdl=" xmlns:xsd=" xmlns:soap=" soap/" xmlns:spc=" targetnamespace=" <wsdl:import namespace=" location="logicoerogatore.wsdl">
34 Tutorial di configurazione e programmazione OpenSPCoop 29 / 74 </wsdl:import> <wsdl:binding name="stampadocumentobinding" type="spc:stampadocumento"> <soap:binding style="document" transport=" <wsdl:operation name="stampa"> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="stato"> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="stampadocumentoservice"> <wsdl:port name="stampadocumentointerfaceendpoint" binding="spc:stampadocumentobinding "> <soap:address location=" </wsdl:port> </wsdl:service> </wsdl:definitions> WSDL Implementativo Fruitore Come per il WSDL Logico Fruitore, non ci sono servizi da implementare per il fruitore del servizio in questo scenario Configurazione Porta di Dominio Una volta creati i descrittori del servizio, possiamo procedere con la creazione dell accordo di servizio. 1. Creazione dell Accordo di Servizio Parte Comune Referente WSDL Definitorio WSDL Concettuale WSDL Logico Erogatore AS_StampaDocumento SPC/CentroAnagrafico definitorio.xsd concettuale.wsdl logicoerogatore.wsdl Tabella 19: Dati Accordo di Servizio Parte Comune 2. Aggiungiamo il Servizio all Accordo: il nome del servizio dovrà avere lo stesso nome del PortType indicato nel WSDL Concettuale. Profilo StampaDocumento asincronoasimmetrico Tabella 20: Dati Servizio dell Accordo
35 Tutorial di configurazione e programmazione OpenSPCoop 30 / 74 Stampa Stato Tabella 21: Dati delle azioni del servizio 3. Specifichiamo le azioni del Servizio: le azioni del Servizio corrispondono alle Operation specificate nel WSDL A differenza dei profili di collaborazione esaminati in precedenza, nel caso dell asincronoasimmetrico abbiamo due azioni per lo stesso servizio, uno per consegnare la richiesta ed uno per richiedere la risposta. Dobbiamo quindi informare la Porta di Dominio che le due operazioni sono correlate al momento della creazione della seconda azione: 4. Aggiungere il Servizio Applicativo con i dati riportati in Tabella 22: Soggetto Credenziale d accesso Modalità fault StampaDocumento_SA CentroAnagrafico nessuna soap Tabella 22: Dati Servizio Applicativo 5. Impostare i parametri di invocazione del Servizio Applicativo con i valori riportati in Tabella 23. Questi dati serviranno alla PdD per la consegna della richiesta al servizio applicativo erogatore. Sbustamento SOAP Sbustamento Informazioni di Protocollo Salvataggio in Message Box Connettore abilitato Url connettore Tipo credenziali d accesso StampaDocumento_SA disabilitato abilitato disabilitato si nessuna Tabella 23: Dati invocazione Servizio Applicativo 6. Impostare i parametri di invocazione per la Risposta Asincrona per la consegna della richiesta stato (correlata) con i valori riportati in Tabella Aggiungere l Accordo di Servizio Parte Specifica: 8. Aggiungere il soggetto fruitore alla lista dei soggetti che possono fruire del servizio: avendo attiva di default l autenticazione basata sul Registro dobbiamo aggiungere il soggetto SPC/Comune ai fruitori del servizio StampaDocumento
36 Tutorial di configurazione e programmazione OpenSPCoop 31 / 74 Sbustamento SOAP Sbustamento Informazioni di Protocollo Salvataggio in Message Box Connettore abilitato Url connettore Tipo credenziali d accesso StampaDocumento_SA disabilitato abilitato disabilitato si nessuna Tabella 24: Dati invocazione Risposta Asincrona Soggetto Accordo Servizio Parte Comune Servizio Servizio Applicativo Erogatore WSDL Implementativo Erogatore SPC/CentroAnagrafico AS_StampaDocumento StampaDocumento StampaDocumento_SA implementazioneerogatore.wsdl Tabella 25: Dati Accordo di Servizio Parte Specifica 9. Inserire il servizio applicativo tra quelli autorizzati ad invocare il servizio. Questo passaggio è essenziale ai fini dell autenticazione da parte del servizio applicativo in fase di invocazione della porta delegata. (a) Dall elenco dei fruitori del servizio, in corrispondenza del soggetto SPC/Comune, nella colonna Servizi Applicativi Autorizzati selezionare visualizza, quindi il pulsante Aggiungi (b) Compilare il form selezionando il servizio applicativo Comune_SA dalla lista a discesa e confermando con il pulsante Invia Nota L operazione descritta in questo passaggio, creerà automaticamente un associazione tra il servizio applicativo e la porta delegata creata automaticamente al passo precedente Programmazione La fruizione di un servizio asincronoasimmetrico è dal punto di vista logico equivalente ad due richieste sincrone consecutive. Le due richieste, oltre al payload, differiscono per la url invocata che rispecchia la diversa operazione richiesta. Per la richiesta, l operazione da invocare è Stampa, mentre per la risposta Stato. Per correlare i due messaggi, dobbiamo includere nell header HTTP della risposta, l id del messaggio ritornato dalla richiesta. In CXF un modo per reperire l id del messaggio dall header X-OpenSPCoop2-IdMessaggio della richiesta è quello di aggiungere un Interceptor nella catena di input: Client client = org.apache.cxf.frontend.clientproxy.getclient(port); client.getininterceptors().add((new StampaDocumento_StampaDocumentoInterfaceEndpoint_Client ()).new SPCoopIdInInterceptor()); dove la classe SPCoopIdInInterceptor è così definita: public class SPCoopIdInInterceptor extends AbstractPhaseInterceptor<Message> { public SPCoopIdInInterceptor() { super(phase.receive); } public void handlemessage(message message) { Map<String, List<String>> headers = CastUtils.cast((Map)message.get(Message. PROTOCOL_HEADERS));
37 Tutorial di configurazione e programmazione OpenSPCoop 32 / 74 } riferimento = headers.get("x-openspcoop2-idmessaggio").get(0); } public void handlefault(message messageparam) { } a questo punto non resta che aggiungere questo parametro nella successiva risposta con nome X-OpenSPCoop2-RiferimentoMessaggio inserendolo ad esempio nella url di invocazione Esecuzione e Verifica La visione d insieme dell intero flusso di invocazione è mostrata nella figura seguente, tenendo presente però che, nel caso del tutorial, la PdD è unica per entrambi i soggetti per semplificare le configurazioni. Inizialmente il client invoca l azione Stampa (Messaggio 1 in figura). Dopo aver ricevuto la risposta (Messaggio 6 in figura), il servizio applicativo preleva il valore X-OpenSPCoop2-IdMessaggio, in questo caso con valore Comune_ComuneSPCoopIT_ _ _18:16 per utilizzarlo come id di correlazione per le richieste successive. Quindi eseguirà un ciclo per verificare la disponibilità della risposta e quindi riceverla (Messaggio 7 in figura). Se la risposta non è ancora disponibile, il servizio applicativo riceve in risposta un errore (Messaggio 12 in figura). Quando la risposta sarà disponibile verrà restituita al fruitore (Messaggio 12 in figura): Per l esecuzione delle applicazioni di esempio si può utilizzare l ambiente presente nella distribuzione di openspcoop2 al percorso: protocolli/spcoop/example/tutorial/asincronoasimmetrico eseguendo i seguenti passi: Configurare l applicazione client editando il file Client.properties. Ecco un esempio di possibili valori di configurazione: invocazionetramitepdd=true # Invocazione diretta del servizio #endpoint= # Invocazione tramite PdD portadidominio= portadelegata.stampa=spccomune/spccentroanagrafico/spcstampadocumento/stampa portadelegata.stato=spccomune/spccentroanagrafico/spcstampadocumento/stato informazioniintegrazione.identificativoegov=x-openspcoop2-idmessaggio informazioniintegrazione.riferimentoasincrono=openspcoop2riferimentomessaggio # Credenziali http basic username=comune_sa password=123456
38 Tutorial di configurazione e programmazione OpenSPCoop 33 / 74 Configurare l applicazione server editando il file Server.properties. In questo caso si tratterà di impostare semplicemente l endpoint del servizio esposto: endpoint= Avviare il Server tramite il comando ant run_server. L output ottenuto sarà: [root@ws5 asincronoasimmetrico]# ant run_server Buildfile: /home/papandrea/work/openspcoop2/0.2.dev/protocolli/spcoop/example/tutorial/ asincronoasimmetrico/build.xml _run_server_spcoop_tutorial_asincronoasimmetrico: [java] Starting Server [java] Jul 12, :03:36 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { StampaDocumento}StampaDocumentoService from WSDL: file:configurazionepdd/wsdl/ implementazioneerogatore.wsdl [java] Jul 12, :03:37 PM org.apache.cxf.endpoint.serverimpl initdestination [java] INFO: Setting the server s publish address to be tutorial/asincronoasimmetrico [java] :03:37.918:INFO:oejs.Server:jetty v [java] Server ready... [java] :03:38.117:INFO:oejs.AbstractConnector:Started SelectChannelConnector@localhost:8888 Avviare il Client tramite il comando ant run_client. L output ottenuto sarà: [root@ws5 asincronoasimmetrico]# ant run_client Buildfile: /home/papandrea/work/openspcoop2/0.2.dev/protocolli/spcoop/example/tutorial/ asincronoasimmetrico/build.xml _run_client_spcoop_tutorial_asincronoasimmetrico: [java] Jul 12, :04:07 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { StampaDocumento}StampaDocumentoService from WSDL: file:configurazionepdd/wsdl/ implementazioneerogatore.wsdl [java] Richiedo stampa della carta d Identita per il cf : DDDFFF22G22G222G [java] Stampa in corso con id = [java] Data stimata di completamento = :00 Contestualmente l output della console su cui è stato avviato il server mostra il seguente testo: [java] Richiesta stampa di CartaIdentita per cf = DDDFFF22G22G222G A questo punto il client effettua un loop fino a quando il server gli restituisce la risposta asincrona e quindi l output mostrato è: [java] Richiedo stato di stampa per documento con id = Comune_ComuneSPCoopIT_ _ _19:04 [java] Stampa del documento Incompleto [java] Richiedo stato di stampa per documento con id = Comune_ComuneSPCoopIT_ _ _19:04 [java] Stampa del documento Incompleto [java] Richiedo stato di stampa per documento con id = Comune_ComuneSPCoopIT_ _ _19:04 [java] Stampa del documento Incompleto [java] Richiedo stato di stampa per documento con id = Comune_ComuneSPCoopIT_ _ _19:04 [java] Stampa del documento Completato Al quale corrisponde sul server il seguente output:
39 Tutorial di configurazione e programmazione OpenSPCoop 34 / 74 [java] Richiesto stato documento n [java] Richiesto stato documento n [java] Richiesto stato documento n [java] Richiesto stato documento n Per verificare il corretto funzionamento si possono consultare i messaggi diagnostici presenti nella directory configurata in openspcoop2 ed in particolare il file openspcoop2.log: <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:09.176> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCStampaDocumento <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:09.464> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:09.506> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Ricevuto messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] inviata dalla parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:09.521> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _19:04] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/StampaDocumento:1--Stampa]... <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:09.523> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _19:04] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/StampaDocumento:1--Stampa]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico Sbustamento < T19 :04:09.545> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Ricevuta Busta [Comune_ComuneSPCoopIT_ _ _19:04] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T19:04:09.587> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19 :04 SA:StampaDocumento_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ StampaDocumento A:Stampa
40 Tutorial di configurazione e programmazione OpenSPCoop 35 / 74 Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T19:04:10.112> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19 :04 SA:StampaDocumento_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ StampaDocumento A:Stampa Messaggio applicativo con ID [Comune_ComuneSPCoopIT_ _ _19:04], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [StampaDocumento_SA] mediante connettore [http] (location: con codice di trasporto: 200 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:10.134> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Generato messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] in consegna verso la parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:10.197> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Risposta consegnata alla porta di dominio mittente con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:10.202> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19 :04] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:10.215> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Ricevuto messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] inviata dalla parte mittente [SPC/CentroAnagrafico] <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T19:04:10.221> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Ricevuta Busta [CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T19:04:10.223> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Validazione ricevuta di una richiesta asincrona asimmetrica
41 Tutorial di configurazione e programmazione OpenSPCoop 36 / 74 <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:10.253> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Contenuto applicativo di una ricevuta di una richiesta asincrona asimmetrica in consegna al servizio applicativo <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:10.256> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Risposta applicativa consegnata al servizio applicativo con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:10.375> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCStampaDocumento <spcoop> ComuneSPCoopIT.SPC/Comune Imbustamento < T19:04:10.378> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Generazione richiesta stato asincrona asimmetrica correlata ad una richiesta con id [ Comune_ComuneSPCoopIT_ _ _19:04] <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:10.413> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:10.496> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuto messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] inviata dalla parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:10.500> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _19:04] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/StampaDocumento:1--Stato]... <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:10.502> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _19:04] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/StampaDocumento:1--Stato]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop)
42 Tutorial di configurazione e programmazione OpenSPCoop 37 / 74 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico Sbustamento < T19 :04:10.505> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta Busta [Comune_ComuneSPCoopIT_ _ _19:04] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T19:04:10.547> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19 :04 SA:StampaDocumento_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ StampaDocumento A:Stato Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T19:04:10.568> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19 :04 SA:StampaDocumento_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ StampaDocumento A:Stato Messaggio applicativo con ID [Comune_ComuneSPCoopIT_ _ _19:04], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [StampaDocumento_SA] mediante connettore [http] (location: con codice di trasporto: 200 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:10.576> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Generato messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] in consegna verso la parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:10.596> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Risposta consegnata alla porta di dominio mittente con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:10.602> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19 :04] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:10.614> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuto messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] inviata dalla parte mittente [SPC/CentroAnagrafico]
43 Tutorial di configurazione e programmazione OpenSPCoop 38 / 74 <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T19:04:10.620> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta Busta [CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T19:04:10.622> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Validazione ricevuta di una risposta asincrona asimmetrica contenente l esito della richiesta stato <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:10.628> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Contenuto applicativo di una ricevuta di una risposta asincrona asimmetrica in consegna al servizio applicativo <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:10.631> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Risposta applicativa consegnata al servizio applicativo con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:11.646> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCStampaDocumento <spcoop> ComuneSPCoopIT.SPC/Comune Imbustamento < T19:04:11.648> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Generazione richiesta stato asincrona asimmetrica correlata ad una richiesta con id [ Comune_ComuneSPCoopIT_ _ _19:04] <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:11.689> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:11.728> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuto messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] inviata dalla parte mittente [SPC/Comune]
44 Tutorial di configurazione e programmazione OpenSPCoop 39 / 74 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:11.732> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _19:04] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/StampaDocumento:1--Stato]... <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:11.744> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _19:04] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/StampaDocumento:1--Stato]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico Sbustamento < T19 :04:11.748> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta Busta [Comune_ComuneSPCoopIT_ _ _19:04] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T19:04:11.769> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19 :04 SA:StampaDocumento_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ StampaDocumento A:Stato Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T19:04:11.783> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19 :04 SA:StampaDocumento_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ StampaDocumento A:Stato Messaggio applicativo con ID [Comune_ComuneSPCoopIT_ _ _19:04], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [StampaDocumento_SA] mediante connettore [http] (location: con codice di trasporto: 200 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:11.921> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Generato messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] in consegna verso la parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:11.937> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Risposta consegnata alla porta di dominio mittente con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:11.941> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/
45 Tutorial di configurazione e programmazione OpenSPCoop 40 / 74 CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19 :04] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:11.954> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuto messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] inviata dalla parte mittente [SPC/CentroAnagrafico] <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T19:04:11.959> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta Busta [CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T19:04:11.961> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Validazione ricevuta di una risposta asincrona asimmetrica contenente l esito della richiesta stato <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:11.977> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Contenuto applicativo di una ricevuta di una risposta asincrona asimmetrica in consegna al servizio applicativo <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:11.980> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Risposta applicativa consegnata al servizio applicativo con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:12.998> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCStampaDocumento <spcoop> ComuneSPCoopIT.SPC/Comune Imbustamento < T19:04:13.001> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Generazione richiesta stato asincrona asimmetrica correlata ad una richiesta con id [ Comune_ComuneSPCoopIT_ _ _19:04]
46 Tutorial di configurazione e programmazione OpenSPCoop 41 / 74 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:13.046> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:13.070> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuto messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] inviata dalla parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:13.074> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _19:04] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/StampaDocumento:1--Stato]... <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:13.076> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _19:04] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/StampaDocumento:1--Stato]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico Sbustamento < T19 :04:13.079> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta Busta [Comune_ComuneSPCoopIT_ _ _19:04] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T19:04:13.094> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19 :04 SA:StampaDocumento_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ StampaDocumento A:Stato Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T19:04:13.107> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19 :04 SA:StampaDocumento_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ StampaDocumento A:Stato Messaggio applicativo con ID [Comune_ComuneSPCoopIT_ _ _19:04], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [StampaDocumento_SA] mediante connettore [http] (location: con codice di trasporto: 200 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:13.116> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/
47 Tutorial di configurazione e programmazione OpenSPCoop 42 / 74 Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Generato messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] in consegna verso la parte mittente [SPC/Comune] <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:13.133> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19 :04] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: con codice di trasporto: 200 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:13.128> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Risposta consegnata alla porta di dominio mittente con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:13.145> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuto messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] inviata dalla parte mittente [SPC/CentroAnagrafico] <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T19:04:13.172> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta Busta [CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T19:04:13.174> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Validazione ricevuta di una risposta asincrona asimmetrica contenente l esito della richiesta stato <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:13.193> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Contenuto applicativo di una ricevuta di una risposta asincrona asimmetrica in consegna al servizio applicativo <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:13.196> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Risposta applicativa consegnata al servizio applicativo con codice di trasporto: 200
48 Tutorial di configurazione e programmazione OpenSPCoop 43 / 74 <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:14.210> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCStampaDocumento <spcoop> ComuneSPCoopIT.SPC/Comune Imbustamento < T19:04:14.212> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Generazione richiesta stato asincrona asimmetrica correlata ad una richiesta con id [ Comune_ComuneSPCoopIT_ _ _19:04] <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:14.294> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:14.349> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuto messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] inviata dalla parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:14.352> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _19:04] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/StampaDocumento:1--Stato]... <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:14.353> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _19:04] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/StampaDocumento:1--Stato]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico Sbustamento < T19 :04:14.423> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta Busta [Comune_ComuneSPCoopIT_ _ _19:04] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T19:04:14.444> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19 :04 SA:StampaDocumento_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ StampaDocumento A:Stato Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19:04] in corso (location:
49 Tutorial di configurazione e programmazione OpenSPCoop 44 / <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T19:04:14.457> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19 :04 SA:StampaDocumento_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ StampaDocumento A:Stato Messaggio applicativo con ID [Comune_ComuneSPCoopIT_ _ _19:04], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [StampaDocumento_SA] mediante connettore [http] (location: con codice di trasporto: 200 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:14.465> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Generato messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] in consegna verso la parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T19:04:14.478> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/StampaDocumento A:Stampa Risposta consegnata alla porta di dominio mittente con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:14.483> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _19 :04] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T19:04:14.494> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuto messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] inviata dalla parte mittente [SPC/CentroAnagrafico] <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T19:04:14.509> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Ricevuta Busta [CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _19:04] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T19:04:14.511> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD:SPCComune/ SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Validazione ricevuta di una risposta asincrona asimmetrica contenente l esito della richiesta stato
50 Tutorial di configurazione e programmazione OpenSPCoop 45 / 74 <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:14.518> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Contenuto applicativo di una ricevuta di una risposta asincrona asimmetrica in consegna al servizio applicativo <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T19 :04:14.520> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _19:04 PD: SPCComune/SPCCentroAnagrafico/SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> ER:SPC/ CentroAnagrafico S(v1):SPC/StampaDocumento A:Stato Risposta applicativa consegnata al servizio applicativo con codice di trasporto: Identifica Soggetto (AsincronoSimmetrico) Descrizione formale dell Accordo di Servizio: WSDL Creiamo un accordo di servizio fornendo i wsdl che descrivono il servizio applicativo in questione. I wsdl in questione sono forniti insieme ai sorgenti degli esempi: WSDL Definitorio (/protocolli/spcoop/example/tutorial/asincronosimmetrico/configurazionepdd/wsdl/definitorio.xsd) Contiene le definizioni dei tipi di dato utilizzati per la codifica dei messaggi. <xs:schema xmlns:xs=" targetnamespace=" IdentificaSoggetto" xmlns:so=" IdentificaSoggetto"> <xs:element name="identifica"> <xs:complextype> <xs:sequence maxoccurs="1"> <xs:element name="tipodocumento" type="xs:string"/> <xs:element name="codicedocumento" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="presaconsegnaidentifica" type="xs:string"/> <xs:simpletype name="codicefiscaletype"> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z]{6}\d\d[a-za-z]\d\d[a-za-z]\d\d\d[a-za-z]"/> </xs:restriction> </xs:simpletype> <xs:complextype name="personatype"> <xs:sequence> <xs:element name="nome" type="xs:string"/> <xs:element name="cognome" type="xs:string"/> <xs:element name="codicefiscale" type="so:codicefiscaletype"/> <xs:element name="nascita" type="xs:date"/> <xs:element name="statocivile" type="xs:string"/> </xs:sequence> </xs:complextype> <xs:element name="risultato" type="so:personatype"/>
51 Tutorial di configurazione e programmazione OpenSPCoop 46 / 74 </xs:schema> <xs:element name="risultatoresponse" type="xs:string"/> WSDL Concettuale (/protocolli/spcoop/example/tutorial/asincronosimmetrico/configurazionepdd/wsdl/concettuale.wsdl) Specifica l interfaccia completa dell accordo di servizio indipendentemente da chi espone i servizi. <wsdl:definitions xmlns:wsdl=" xmlns:xsd=" xmlns:soap=" /wsdl/soap/" xmlns:spc=" targetnamespace=" <wsdl:import namespace=" location="definitorio.xsd"> </wsdl:import> <wsdl:message name="identificaresponse"> <wsdl:part name="identificaresponsepart" element="spc:presaconsegnaidentifica"> </wsdl:part> </wsdl:message> <wsdl:message name="identificarequest"> <wsdl:part name="identificarequestpart" element="spc:identifica"> </wsdl:part> </wsdl:message> <wsdl:message name="risultatoidentificarequest"> <wsdl:part name="identificarequestpart" element="spc:risultato"> </wsdl:part> </wsdl:message> <wsdl:message name="risultatoidentificaresponse"> <wsdl:part name="risultatoidentificaresponse" element="spc:risultatoresponse"> </wsdl:part> </wsdl:message> <wsdl:porttype name="identificasoggetto"> <wsdl:operation name="cerca"> <wsdl:input message="spc:identificarequest"> </wsdl:input> <wsdl:output message="spc:identificaresponse"> </wsdl:output> </wsdl:operation> </wsdl:porttype> <wsdl:porttype name="esitoidentificazione"> <wsdl:operation name="risultato"> <wsdl:input message="spc:risultatoidentificarequest"> </wsdl:input> <wsdl:output message="spc:risultatoidentificaresponse"> </wsdl:output> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Logico Erogatore (/protocolli/spcoop/example/tutorial/asincronosimmetrico/configurazionepdd/wsdl/logicoerogatore.ws Specifica l interfaccia di servizi e operazioni esposte dal soggetto erogatore. <wsdl:definitions xmlns:wsdl=" xmlns:xsd=" xmlns:soap=" /wsdl/soap/" xmlns:spc="
52 Tutorial di configurazione e programmazione OpenSPCoop 47 / 74 targetnamespace=" <wsdl:import namespace=" location="definitorio.xsd"> </wsdl:import> <wsdl:message name="identificaresponse"> <wsdl:part name="identificaresponsepart" element="spc:presaconsegnaidentifica"> </wsdl:part> </wsdl:message> <wsdl:message name="identificarequest"> <wsdl:part name="identificarequestpart" element="spc:identifica"> </wsdl:part> </wsdl:message> <wsdl:porttype name="identificasoggetto"> <wsdl:operation name="cerca"> <wsdl:input message="spc:identificarequest"> </wsdl:input> <wsdl:output message="spc:identificaresponse"> </wsdl:output> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Logico Fruitore (/protocolli/spcoop/example/tutorial/asincronosimmetrico/configurazionepdd/wsdl/logicofruitore.wsdl) Specifica l interfaccia di servizi e operazioni esposte dal soggetto fruitore. <wsdl:definitions xmlns:wsdl=" xmlns:xsd=" xmlns:soap=" /wsdl/soap/" xmlns:spc=" targetnamespace=" <wsdl:import namespace=" location="definitorio.xsd"> </wsdl:import> <wsdl:message name="risultatoidentificarequest"> <wsdl:part name="identificarequestpart" element="spc:risultato"> </wsdl:part> </wsdl:message> <wsdl:message name="risultatoidentificaresponse"> <wsdl:part name="risultatoidentificaresponse" element="spc:risultatoresponse"> </wsdl:part> </wsdl:message> <wsdl:porttype name="esitoidentificazione"> <wsdl:operation name="risultato"> <wsdl:input message="spc:risultatoidentificarequest"> </wsdl:input> <wsdl:output message="spc:risultatoidentificaresponse"> </wsdl:output> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Implementativo Erogatore (/protocolli/spcoop/example/tutorial/asincronosimmetrico/configurazionepdd/wsdl/implemen Specifica i dettagli di protocollo e porti di accesso per servizi e operazioni esposti dal soggetto erogatore.
53 Tutorial di configurazione e programmazione OpenSPCoop 48 / 74 <wsdl:definitions xmlns:wsdl=" xmlns:xsd=" xmlns:soap=" /wsdl/soap/" xmlns:spc=" targetnamespace=" <wsdl:import namespace=" location="logicoerogatore.wsdl"> </wsdl:import> <wsdl:binding name="identificasoggettobinding" type="spc:identificasoggetto"> <soap:binding style="document" transport=" <wsdl:operation name="cerca"> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="identificasoggettoservice"> <wsdl:port name="identificasoggettointerfaceendpoint" binding="spc: IdentificaSoggettoBinding"> <soap:address location=" "/> </wsdl:port> </wsdl:service> </wsdl:definitions> WSDL Implementativo Fruitore (/protocolli/spcoop/example/tutorial/asincronosimmetrico/configurazionepdd/wsdl/implementa Specifica i dettagli di protocollo e porti di accesso per servizi e operazioni esposti dal soggetto fruitore. <wsdl:definitions xmlns:wsdl=" xmlns:xsd=" xmlns:soap=" /wsdl/soap/" xmlns:spc=" targetnamespace=" <wsdl:import namespace=" location="logicofruitore.wsdl"> </wsdl:import> <wsdl:binding name="esitoidentificazionebinding" type="spc:esitoidentificazione"> <soap:binding style="document" transport=" <wsdl:operation name="risultato"> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="esitoidentificazioneservice"> <wsdl:port name="esitoidentificazioneinterfaceendpoint" binding="spc: EsitoIdentificazioneBinding"> <soap:address location="
54 Tutorial di configurazione e programmazione OpenSPCoop 49 / 74 </wsdl:port> </wsdl:service> </wsdl:definitions> WSBL Concettuale (/protocolli/spcoop/example/tutorial/asincronosimmetrico/configurazionepdd/wsbl/conversazioneconcettu Specifica il flusso di invocazione delle operazioni asincrone indipendentemente dal ruolo dei soggetti. <wsbl:conceptualbehavior xmlns:xsi=" xmlns:wsbl=" xsi:schemalocation=" wsbl. xsd"> <name>esempio di profilo asincrono simmetrico</name> <states> <state-initial name="transazionerichiestaasincronasimmetrica"/> <state-final name="transazioneasincronasimmetricaterminata"/> <state name="transazionerispostaasincronasimmetrica"/> </states> <transitions> <transition name="t1" source="transazionerichiestaasincronasimmetrica" target=" TransazioneRispostaAsincronaSimmetrica"> <activationmode>explicit</activationmode> <completionmode> <mode>definitive</mode> </completionmode> <events> <event name="identificasoggetto_cerca"/> </events> </transition> <transition name="t2" source="transazionerispostaasincronasimmetrica" target=" TransazioneAsincronaSimmetricaTerminata"> <activationmode>implicit</activationmode> <completionmode> <mode>effectless</mode> </completionmode> <events> <event name="esitoidentificazione_risultato"/> </events> <temporalcondition> <predicate>m-invoke</predicate> <boolop>geq</boolop> <data>end(t1)+10</data> <description></description> </temporalcondition> </transition> </transitions> </wsbl:conceptualbehavior> WSBL Logico Erogatore (/protocolli/spcoop/example/tutorial/asincronosimmetrico/configurazionepdd/wsbl/conversazionelog Specifica il flusso di invocazione delle operazioni asincrone dal punto di vista del soggetto erogatore. <wsbl:messagebehavior xmlns:xsi=" xmlns:wsbl=" xmlns:spc=" IdentificaSoggetto" xsi:schemalocation=" wsbl.xsd"> <name>servizioasincronosimmetricoerogatore</name> <states> <state-initial name="transazionerichiestaasincronasimmetrica"/> <state-final name="transazioneasincronasimmetricaterminata"/> <state name="invioricevutarichiestaasincrona"/> <state name="transazionerispostaasincronasimmetrica"/> <state name="ricezionericevutarispostaasincrona"/> </states> <messages>
55 Tutorial di configurazione e programmazione OpenSPCoop 50 / 74 <message name="spc:identificarequest" source="transazionerichiestaasincronasimmetrica" target="invioricevutarichiestaasincrona" type="receive"/> <message name="spc:identificaresponse" source="invioricevutarichiestaasincrona" target ="TransazioneRispostaAsincronaSimmetrica" type="send"/> <message name="spc:risultatoidentificarequest" source=" TransazioneRispostaAsincronaSimmetrica" target="ricezionericevutarispostaasincrona" type="send"/> <message name="spc:risultatoidentificaresponse" source=" ricezionericevutarispostaasincrona" target="transazioneasincronasimmetricaterminata" type="receive"/> </messages> </wsbl:messagebehavior> WSBL Logico Fruitore (/protocolli/spcoop/example/tutorial/asincronosimmetrico/configurazionepdd/wsbl/conversazionelogic Specifica il flusso di invocazione delle operazioni asincrone dal punto di vista del soggetto fruitore. <wsbl:messagebehavior xmlns:xsi=" xmlns:wsbl=" xmlns:spc=" IdentificaSoggetto" xsi:schemalocation=" wsbl.xsd"> <name>servizioasincronosimmetricofruitore</name> <states> <state-initial name="transazionerichiestaasincronasimmetrica"/> <state-final name="transazioneasincronasimmetricaterminata"/> <state name="ricezionericevutarichiestaasincrona"/> <state name="transazionerispostaasincronasimmetrica"/> <state name="invioricevutarispostaasincrona"/> </states> <messages> <message name="spc:identificarequest" source="transazionerichiestaasincronasimmetrica" target="ricezionericevutarichiestaasincrona" type="send"/> <message name="spc:identificaresponse" source="ricezionericevutarichiestaasincrona" target="transazionerispostaasincronasimmetrica" type="receive"/> <message name="spc:risultatoidentificarequest" source=" TransazioneRispostaAsincronaSimmetrica" target="invioricevutarispostaasincrona" type ="RECEIVE"/> <message name="spc:risultatoidentificaresponse" source="invioricevutarispostaasincrona" target="transazioneasincronasimmetricaterminata" type="send"/> </messages> </wsbl:messagebehavior> Configurazione Porta di Dominio Una volta in possesso dei descrittori del servizio e delle conversazioni, possiamo procedere con la configurazione della porta di dominio. 1. Creiamo i Servizi Applicativi erogatore e fruitore con i valori riportati in Tabella 26 e Tabella 27. IdentificaSoggetto_SA Soggetto CentroAnagrafico Credenziale d accesso basic Utente IdentificaSoggetto_SA Password Modalità fault soap Tabella 26: Dati Servizio Applicativo Erogatore
56 Tutorial di configurazione e programmazione OpenSPCoop 51 / 74 IdentificaSoggettoComune_SA Soggetto Comune Credenziale d accesso basic Utente IdentificaSoggettoComune_SA Password Modalità fault soap Tabella 27: Dati Servizio Applicativo Fruitore Sbustamento SOAP Sbustamento Informazioni di Protocollo Salva in Message Box Connettore abilitato Url connettore Tipo credenziali d accesso IdentificaSoggetto_SA disabilitato abilitato disabilitato si nessuna Tabella 28: Dati invocazione Servizio Applicativo erogatore 2. Impostare i parametri di invocazione del Servizio Applicativo con i valori riportati in Tabella 28. Impostare la Risposta Asincrona per il Servizio Applicativo fruitore con i valori riportati in Tabella 29. Sbustamento SOAP Sbustamento Informazioni di Protocollo Salva in Message Box Connettore abilitato Url connettore Tipo credenziali d accesso IdentificaSoggettoComune_SA disabilitato abilitato disabilitato si nessuna Tabella 29: Dati risposta asincrona Servizio Applicativo fruitore 3. Creazione dell Accordo di Servizio Parte Comune
57 Tutorial di configurazione e programmazione OpenSPCoop 52 / 74 Referente WSDL Definitorio WSDL Concettuale WSDL Logico Fruitore WSDL Logico Erogatore WSBL Concettuale WSBL Logico Erogatore WSBL Logico Fruitore AS_IdentificaSoggetto SPC/CentroAnagrafico definitorio.xsd concettuale.wsdl logicofruitore.wsdl logicoerogatore.wsdl ConversazioneConcettuale.wsbl ConversazioneLogicaLatoErogatore.wsbl ConversazioneLogicaLatoFruitore.wsbl Tabella 30: Dati Accordo di Servizio Parte Comune 4. Aggiungiamo i due servizi all accordo di Servizio Parte Comune: i nomi dei servizio dovranno avere lo stesso nome del PortType indicato nel WSDL Concettuale. Per ciascun servizio aggiungiamo le azioni ad essi associate, corrispondenti alle Operation specificate nel WSDL. Facciamo riferimento ai valori riportati in Tabella 31 e Tabella 32 Azione Profilo IdentificaSoggetto Cerca asincronosimmetrico Tabella 31: Dati Servizio Asincrono Simmetrico nell accordo di servizio Dopo aver inserito i due servizi e le relative azioni, l interfaccia mostra la seguente schermata
58 Tutorial di configurazione e programmazione OpenSPCoop 53 / 74 Azione Profilo Correlata al servizio Correlata all azione EsitoIdentificazione Risultato asincronosimmetrico IdentificaSoggetto Cerca Tabella 32: Dati Servizio Asincrono Simmetrico Correlato nell accordo di servizio L azione Risultato deve essere creata specificando il servizio IdentificaSoggetto e l azione Cerca come informazioni di correlazione 5. Aggiungere l Accordo di Servizio Parte Specifica e il suo correlato erogato dal soggetto fruitore con i dati riportati in Tabella 33 e in Tabella 34: Soggetto Accordo Servizio Servizio Servizio Applicativo Erogatore WSDL Implementativo Erogatore SPC/CentroAnagrafico AS_IdentificaSoggetto IdentificaSoggetto IdentificaSoggetto_SA implementazioneerogatore.wsdl Tabella 33: Dati Accordo di Servizio Parte Specifica Soggetto Accordo Servizio Servizio Servizio Applicativo Erogatore WSDL Implementativo Fruitore SPC/Comune AS_IdentificaSoggetto EsitoIdentificazione IdentificaSoggettoComune_SA implementazionefruitore.wsdl Tabella 34: Dati Accordo di Servizio Parte Specifica correlato 6. Aggiungere il soggetto fruitore alla lista dei soggetti che possono fruire del servizio: avendo attiva di default l autorizzazione basata sul Registro dobbiamo aggiungere il soggetto SPC/Comune ai fruitori del servizio IdentificaSoggetto e il soggetto CentroAnagrafico ai fruitori del servizio EsitoIdentificazione. 7. Inserire tra gli autorizzati i servizi applicativi creati ai primi due passi. Questo passaggio è essenziale ai fini dell autorizzazione da parte del servizio applicativo in fase di invocazione della porta delegata. (a) Dall elenco dei fruitori del servizio IdentificaSoggetto, in corrispondenza del soggetto SPC/Comune, nella colonna Servizi Applicativi Autorizzati selezionare visualizza, quindi il pulsante Aggiungi. (b) Compilare il form selezionando il servizio applicativo IdentificaSoggettoComune_SA dalla lista a discesa e confermando con il pulsante Invia
59 Tutorial di configurazione e programmazione OpenSPCoop 54 / 74 (c) Dall elenco dei fruitori del servizio EsitoIdentificazione, in corrispondenza del soggetto CentroAnagrafico, nella colonna Servizi Applicativi Autorizzati selezionare visualizza, quindi il pulsante Aggiungi (d) Compilare il form selezionando il servizio applicativo IdentificaSoggetto_SA dalla lista a discesa e confermando con il pulsante Invia. Nota L operazione descritta in questo passaggio, creerà automaticamente un associazione tra i servizi applicativi e le porte delegate create automaticamente al passo precedente Programmazione La fruizione di un servizio asincronosimmetrico è dal punto di vista logico equivalente ad due richieste sincrone consecutive a ruoli invertiti. Abbiamo quindi che entrambi i soggetti sono sia erogatori che fruitori. Come per l asincrono Asimmetrico, per correlare la richiesta con la risposta dobbiamo includere nella risposta l id del messaggio della richiesta Esecuzione e Verifica Seguendo le istruzioni fornite con i sorgenti per la configurazione, compilazione ed esecuzione degli esempi, avviamo il test per il servizio IdentificaSoggetto. In questo esempio ciascuna delle due parti ha una componente client e una server. Si vedrà quindi il client del fruitore inviare la richiesta, ricevendo conferma e successivamente il client dell erogatore inviare la risposta asincrona. La visione d insieme dell intero flusso di invocazione è mostrata nella figura seguente, tenendo presente però che, nel caso del tutorial, la PdD è unica per entrambi i soggetti per semplificare le configurazioni. Inizialmente il client del fruitore invoca l azione Cerca (Messaggio 1 in figura) La Porta di Dominio consegna la richiesta al servizio applicativo erogatore (Messaggio 3 in figura) Il servizio applicativo erogatore invoca il servizio correlato per l invio della risposta (Messaggio 7 in figura) La Porta di Dominio consegna la risposta asincrona al servizio applicativo fruitore (Messaggio 9 in figura). Per l esecuzione delle applicazioni di esempio si può utilizzare l ambiente presente nella distribuzione di openspcoop2 al percorso: protocolli/spcoop/example/tutorial/asincronosimmetrico eseguendo i seguenti passi: Configurare l applicazione client editando il file Client.properties. Ecco un esempio di possibili valori di configurazione: invocazionetramitepdd=true # Invocazione diretta del servizio endpoint.cerca= endpoint.risultato= # Invocazione tramite PdD portadidominio= portadelegata.cerca=spccomune/spccentroanagrafico/spcidentificasoggetto/cerca
60 Tutorial di configurazione e programmazione OpenSPCoop 55 / 74 portadelegata.risultato=spccentroanagrafico/spccomune/spcesitoidentificazione/risultato informazioniintegrazione.riferimentoasincrono=openspcoop2riferimentomessaggio # Credenziali http basic per operazione cerca username.cerca=identificasoggettocomune_sa password.cerca= # Credenziali http basic per operazione risultato username.risultato=identificasoggetto_sa password.risultato= Come si può notare vi sono 2 porte delegate. Una per il soggetto Comune con la quale viene inviata la richiesta, e l altra per il soggetto CentroAnagrafico per l invio della risposta asincrona. Le credenziali fanno quindi riferimento ai servizi applicativi fruitori dei due soggetti. Configurare l applicazione server editando il file Server.properties: # Servizio IdentificaSoggetto endpoint.richiesta= # Servizio Risposta endpoint.risposta= # Informazioni di integrazione informazioniintegrazione.identificativoegov=x-openspcoop2-idmessaggio Le proprietà da configurare per i server riguardano gli enpoint dei servizi esposti per la richiesta e la risposta asincrona. Vi è inoltre la proprietà per indicare la modalità di recupero dell id di correlazione asincrona. Avviare il Server tramite il comando ant run_server. L output ottenuto sarà: [root@ws5 asincronosimmetrico]# ant run_server Buildfile: /home/papandrea/work/openspcoop2/0.2.dev/protocolli/spcoop/example/tutorial/ asincronosimmetrico/build.xml _run_server_spcoop_tutorial_asincronosimmetrico: [java] Starting Server [java] Jul 17, :18:45 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { IdentificaSoggetto}IdentificaSoggettoService from WSDL: file:configurazionepdd/ wsdl/implementazioneerogatore.wsdl [java] Jul 17, :18:46 PM org.apache.cxf.endpoint.serverimpl initdestination [java] INFO: Setting the server s publish address to be tutorial/asincronosimmetricorichiesta [java] :18:46.953:INFO:oejs.Server:jetty v [java] Server ready... [java] :18:47.495:INFO:oejs.AbstractConnector:Started SelectChannelConnector@localhost:8888 Avviare il Client tramite il comando ant run_client. L output ottenuto sarà: [root@ws5 asincronosimmetrico]# ant run_client Buildfile: /home/papandrea/work/openspcoop2/0.2.dev/protocolli/spcoop/example/tutorial/ asincronosimmetrico/build.xml _run_client_spcoop_tutorial_asincronosimmetrico: [java] Jul 17, :31:36 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { IdentificaSoggetto}IdentificaSoggettoService from WSDL: file:configurazionepdd/ wsdl/implementazioneerogatore.wsdl
61 Tutorial di configurazione e programmazione OpenSPCoop 56 / 74 [java] Starting Server [java] Jul 17, :31:36 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { IdentificaSoggetto}EsitoIdentificazioneService from WSDL: file:configurazionepdd/ wsdl/implementazionefruitore.wsdl [java] Jul 17, :31:36 PM org.apache.cxf.endpoint.serverimpl initdestination [java] INFO: Setting the server s publish address to be tutorial/asincronosimmetricorisposta [java] :31:36.964:INFO:oejs.Server:jetty v [java] Server ready... [java] :31:37.142:INFO:oejs.AbstractConnector:Started SelectChannelConnector@localhost:8889 [java] Invoking cerca... Come si può notare in questo caso l esecuzione del client comporta anche l avvio del server per la ricezione della risposta asincrona da parte del Comune. L invio della richiesta comporta sulla console del server il seguente output: [java] Ricercato soggetto con documento CartaIdentita n AABBCCDDEE Il server a questo punto invia al client la ricevuta della presa in carico. Quindi appare sull output del client: [java] Codice ricerca = Al passo successivo il server invoca il servizio correlato per inviare la risposta asincrona. Si nota il seguente output sulla console del server: [java] Invoking risultato... [java] Jul 17, :31:48 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { IdentificaSoggetto}EsitoIdentificazioneService from WSDL: file:configurazionepdd/ wsdl/implementazionefruitore.wsdl Questa operazione corrisponde sul client alla ricezione della risposta e quindi al seguente output: [java] ========== Ricevuti dati del Soggetto ============== [java] == Nuovo nome: Mario [java] == Nuovo cognome: Rossi [java] == Nuovo codice fiscale: DDDFFF22G22G222G [java] == Nuova data di nascita: Z [java] == Nuovo stato civile: Celibe Il client invia la ricevuta al server, che chiude la connessione, e si vede il seguente output: [java] risultato.result=ok Controllando il file openspcoop2.log possiamo verificare il corretto funzionamento della PdD: <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T12 :31:40.728> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _12:31 PD: SPCComune/SPCCentroAnagrafico/SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [ IdentificaSoggettoComune_SA] ) IdentificaSoggettoComune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCIdentificaSoggetto <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T12:31:41.235> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _12:31 PD:SPCComune/ SPCCentroAnagrafico/SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca
62 Tutorial di configurazione e programmazione OpenSPCoop 57 / 74 Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _12:31] in corso (location: <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T12:31:41.957> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _12:31 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Ricevuto messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _12:31] inviata dalla parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T12:31:42.305> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _12:31 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _12:31] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/IdentificaSoggetto:1--Cerca]... <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T12:31:42.337> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _12:31 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Controllo Autorizzazione[registro] messaggio con identificativo [ Comune_ComuneSPCoopIT_ _ _12:31] FR[SPC/Comune]->ER[SPC/CentroAnagrafico --SPC/IdentificaSoggetto:1--Cerca]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico Sbustamento < T12 :31:42.420> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _12:31 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Ricevuta Busta [Comune_ComuneSPCoopIT_ _ _12:31] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T12:31:42.612> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _12 :31 SA:IdentificaSoggetto_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ IdentificaSoggetto A:Cerca Invio Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _12:31] in corso (location: asincronosimmetricorichiesta)... <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico ConsegnaContenutiApplicativi < T12:31:43.635> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _12 :31 SA:IdentificaSoggetto_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/ IdentificaSoggetto A:Cerca Messaggio applicativo con ID [Comune_ComuneSPCoopIT_ _ _12:31], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [IdentificaSoggetto_SA] mediante connettore [http] (location: asincronosimmetricorichiesta) con codice di trasporto: 200 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T12:31:43.735> (infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _12:31 FR:SPC/ Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Generato messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31] in consegna verso la parte mittente [SPC/Comune]
63 Tutorial di configurazione e programmazione OpenSPCoop 58 / 74 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneBuste_PA < T12:31:43.770> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _12:31 FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Risposta consegnata alla porta di dominio mittente con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T12:31:44.006> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _12:31 PD:SPCComune/ SPCCentroAnagrafico/SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _12 :31] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune InoltroBuste < T12:31:44.413> ( infoprotocol) ID:Comune_ComuneSPCoopIT_ _ _12:31 PD:SPCComune/ SPCCentroAnagrafico/SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Ricevuto messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31] inviata dalla parte mittente [SPC/CentroAnagrafico] <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T12:31:44.585> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _12:31 PD:SPCComune/ SPCCentroAnagrafico/SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Ricevuta Busta [CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> ComuneSPCoopIT.SPC/Comune SbustamentoRisposte < T12:31:44.588> ( infointegration) ID:Comune_ComuneSPCoopIT_ _ _12:31 PD:SPCComune/ SPCCentroAnagrafico/SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Validazione ricevuta di una richiesta asincrona simmetrica <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T12 :31:44.809> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _12:31 PD: SPCComune/SPCCentroAnagrafico/SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Contenuto applicativo di una ricevuta di una richiesta asincrona simmetrica in consegna al servizio applicativo <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneContenutiApplicativi_PD < T12 :31:44.812> (infointegration) ID:Comune_ComuneSPCoopIT_ _ _12:31 PD: SPCComune/SPCCentroAnagrafico/SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR: SPC/Comune -> ER:SPC/CentroAnagrafico S(v1):SPC/IdentificaSoggetto A:Cerca Risposta applicativa consegnata al servizio applicativo con codice di trasporto: 200 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneContenutiApplicativi_PD < T12:31:49.036> (infointegration) ID: CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 PD: SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR:SPC/ CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [
64 Tutorial di configurazione e programmazione OpenSPCoop 59 / 74 IdentificaSoggetto_SA] ) IdentificaSoggetto_SA verso la porta delegata SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico Imbustamento < T12 :31:49.200> (infointegration) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 PD:SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA: IdentificaSoggetto_SA FR:SPC/CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/ EsitoIdentificazione A:Risultato Generazione risposta asincrona simmetrica correlata ad una richiesta con id [ Comune_ComuneSPCoopIT_ _ _12:31] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico InoltroBuste < T12 :31:49.385> (infoprotocol) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 PD:SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA: IdentificaSoggetto_SA FR:SPC/CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/ EsitoIdentificazione A:Risultato Invio Messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31] in corso (location: <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneBuste_PA < T12:31:50.174> ( infoprotocol) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 FR: SPC/CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Ricevuto messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31] inviata dalla parte mittente [SPC/CentroAnagrafico] <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneBuste_PA < T12:31:50.625> ( infointegration) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 FR:SPC/CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Controllo Autorizzazione[registro] messaggio con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31] FR[SPC/ CentroAnagrafico]->ER[SPC/Comune--SPC/EsitoIdentificazione:1--Risultato]... <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneBuste_PA < T12:31:50.668> ( infointegration) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 FR:SPC/CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Controllo Autorizzazione[registro] messaggio con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31] FR[SPC/ CentroAnagrafico]->ER[SPC/Comune--SPC/EsitoIdentificazione:1--Risultato]: autorizzato ( client-auth disabilitato nella porta di dominio PddOpenSPCoop) <spcoop> ComuneSPCoopIT.SPC/Comune Sbustamento < T12:31:50.706> ( infointegration) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 FR:SPC/CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Ricevuta Busta [CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> ComuneSPCoopIT.SPC/Comune ConsegnaContenutiApplicativi < T12 :31:50.855> (infoprotocol) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 SA:IdentificaSoggettoComune_SA FR:SPC/CentroAnagrafico -> ER:SPC/Comune S( v1):spc/esitoidentificazione A:Risultato Invio Messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31] in corso (location:
65 Tutorial di configurazione e programmazione OpenSPCoop 60 / 74 <spcoop> ComuneSPCoopIT.SPC/Comune ConsegnaContenutiApplicativi < T12 :31:51.023> (infoprotocol) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 SA:IdentificaSoggettoComune_SA FR:SPC/CentroAnagrafico -> ER:SPC/Comune S( v1):spc/esitoidentificazione A:Risultato Messaggio applicativo con ID [CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31], generato dal mittente [SPC/CentroAnagrafico], consegnato al servizio applicativo [IdentificaSoggettoComune_SA] mediante connettore [http] (location: localhost:8889/tutorial/asincronosimmetricorisposta) con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneBuste_PA < T12:31:51.102> ( infoprotocol) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 FR: SPC/CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Generato messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _12:31] in consegna verso la parte mittente [SPC/CentroAnagrafico] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico InoltroBuste < T12 :31:51.193> (infoprotocol) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 PD:SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA: IdentificaSoggetto_SA FR:SPC/CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/ EsitoIdentificazione A:Risultato Messaggio di cooperazione con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31] inviato alla parte destinataria [SPC/Comune] mediante connettore [http] (location: openspcoop2/spcoop/pa) con codice di trasporto: 200 <spcoop> ComuneSPCoopIT.SPC/Comune RicezioneBuste_PA < T12:31:51.176> ( infointegration) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 FR:SPC/CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Risposta consegnata alla porta di dominio mittente con codice di trasporto: 200 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico InoltroBuste < T12 :31:51.619> (infoprotocol) ID:CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 PD:SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA: IdentificaSoggetto_SA FR:SPC/CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/ EsitoIdentificazione A:Risultato Ricevuto messaggio di cooperazione con identificativo [Comune_ComuneSPCoopIT_ _ _12:31] inviata dalla parte mittente [SPC/Comune] <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico SbustamentoRisposte < T12:31:51.703> (infointegration) ID: CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 PD: SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR:SPC/ CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Ricevuta Busta [Comune_ComuneSPCoopIT_ _ _12:31] con filtro duplicati attivo nel profilo di trasmissione associato: effettuato salvataggio nell History delle buste ricevute <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico SbustamentoRisposte < T12:31:51.724> (infointegration) ID: CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 PD: SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR:SPC/ CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Validazione ricevuta di una risposta asincrona simmetrica
66 Tutorial di configurazione e programmazione OpenSPCoop 61 / 74 <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneContenutiApplicativi_PD < T12:31:51.855> (infointegration) ID: CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 PD: SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR:SPC/ CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Contenuto applicativo di una ricevuta di una risposta asincrona simmetrica in consegna al servizio applicativo <spcoop> CentroAnagraficoSPCoopIT.SPC/CentroAnagrafico RicezioneContenutiApplicativi_PD < T12:31:51.871> (infointegration) ID: CentroAnagrafico_CentroAnagraficoSPCoopIT_ _ _12:31 PD: SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR:SPC/ CentroAnagrafico -> ER:SPC/Comune S(v1):SPC/EsitoIdentificazione A:Risultato Risposta applicativa consegnata al servizio applicativo con codice di trasporto: Tutorial per il protocollo trasparente Gli esempi che andiamo a mostrare in questa sezione riguardano l utilizzo della PdD in modalità Proxy, cioè come elemento trasparente rispetto alle applicazioni, in grado di offrire funzionalità quali: Tracciabilità, validazione dei messaggi, ecc. Gestione della sicurezza a livello dei messaggi tramite WS-Security. La PdD in modalità Proxy adotta il protocollo di cooperazione trasparente, nel senso che non vengono applicate trasformazioni ai messaggi in transito né sono necessarie particolari convenzioni sul formato degli stessi. Come casi d uso da utilizzare per gli esempi andiamo a riprendere quelli già visti nel caso SPCoop per i profili oneway e sincrono e quindi ComunicazioneVariazione e RichiestaStatoFamiglia. A livello architetturale immaginiamo due principali scenari nei quali la Porta di Dominio è impiegata come Proxy alternativamente dall erogatore (CentroAnagrafico), nel primo caso, e dal fruitore (Comune), nel secondo caso. In entrambi i casi prevediamo tipologie di comunicazioni con le seguenti combinazioni: SOAP I servizi dialogano utilizzando la versione 1.1 di SOAP (la stessa adottata per SPCoop). SOAP WS-Security - I servizi dialogano utilizzando la versione 1.1 di SOAP e uno dei due produce o consuma messaggi contenenti cifratura e firma del body tramite WS-Security. SOAP 1.2 -I servizi dialogano utilizzando la versione 1.2 di SOAP. SOAP WS-Security - I servizi dialogano utilizzando la versione 1.2 di SOAP e uno dei due produce o consuma messaggi contenenti cifratura e firma del body tramite WS-Security.
67 Tutorial di configurazione e programmazione OpenSPCoop 62 / 74 Gli scenari nei quali la PdD è adottata come Proxy dall erogatore sono sintetizzati dalla figura seguente. Gli scenari nei quali la PdD è adottata come Proxy dal fruitore sono sintetizzati dalla figura seguente. I sorgenti e l ambiente di compilazione/esecuzione delle sample application adottate per questo tutorial, insieme ai wsdl per la configurazione, sono contenuti nella distribuzione di OpenSPCoop2 al percorso: /protocolli/trasparente/example/tutorial. Nelle sezioni seguenti illustriamo in dettaglio il caso RichiestaStatoFamiglia Proxy Erogazione SOAP1.1, gli altri casi possono essere desunti tramite piccole variazioni. Negli scenari in cui la Porta di Dominio è adottata dall erogatore, il client invoca la porta applicativa. La Porta di Dominio ha la necessità di identificare il Soggetto mittente. Il processo di autenticazione, sia che avvenga in SSL o HTTP Basic, esula dai temi trattati dal presente tutorial e pertanto tralasciamo questo aspetto. Assumiamo convenzionalmente che un frontend abbia preventivamente autenticato la richiesta del client. La Porta di Dominio riceve l identificatore del soggetto mittente tramite lo username indicato nella richiesta.
68 Tutorial di configurazione e programmazione OpenSPCoop 63 / RichiestaStatoFamiglia Proxy Erogazione SOAP1.1 (sincrono trasparente) Analizziamo in questa sezione il caso in cui il CentroAnagrafico espone il servizio di Richiesta Stato Famiglia tramite un proxy. Il servizio esposto prevede la versione 1.1 di SOAP. Lo scenario è sintetizzato nella figura seguente: Il client del Comune invia messaggi di richiesta, secondo lo standard SOAP1.1 in accordo al formato previsto dai WSDL del servizio Descrizione formale dell Accordo di Servizio: WSDL Il primo passo sarà, per l erogatore del servizio, quello di fornire il WSDL che descrive il servizio che si intende erogare. Per la creazione dell accordo di servizio il WSDL deve essere partizionato secondo la seguente logica: WSDL definitorio: racchiude tutti gli XSD necessari a definire il formato dei messaggi scambiati tra i servizi applicativi. WSDL logico erogatore: contiene una direttiva include del definitorio e la definizione astratta del servizio, vale a dire le sezioni: messages, operation e port-type. WSDL implementativo: contiene una direttiva include del concettuale e la definzione concreta del servizio, vale a dire le sezioni: binding e service. WSDL Definitorio (/protocolli/trasparente/example/tutorial/sincrono/configurazionepdd/wsdl/definitorio.xsd) Contiene le definizioni dei tipi di dato utilizzati per la codifica dei messaggi. <xs:schema xmlns:xs=" targetnamespace=" xmlns:so=" <xs:simpletype name="codicefiscaletype"> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z]{6}\d\d[a-za-z]\d\d[a-za-z]\d\d\d[a-za-z]" /> </xs:restriction> </xs:simpletype> <xs:complextype name="personatype"> <xs:sequence> <xs:element name="nome" type="xs:string" />
69 Tutorial di configurazione e programmazione OpenSPCoop 64 / 74 <xs:element name="cognome" type="xs:string" /> <xs:element name="codicefiscale" type="so:codicefiscaletype" /> <xs:element name="nascita" type="xs:date" /> <xs:element name="statocivile" type="xs:string" /> </xs:sequence> </xs:complextype> <xs:element name="richiestastatofamiglia" type="so:codicefiscaletype" /> <xs:element name="statofamiglia" type="so:personatype" /> </xs:schema> WSDL Logico Erogatore (/protocolli/trasparente/example/tutorial/sincrono/configurazionepdd/wsdl/logicoerogatore.wsdl) Specifica l interfaccia astratta dell accordo di servizio. <wsdl:definitions xmlns:wsdl=" xmlns:xsd=" xmlns:tras=" targetnamespace=" <wsdl:import namespace=" location="definitorio.xsd"> </wsdl:import> <!-- Definizione dei Messaggi --> <wsdl:message name="statofamigliarequest"> <wsdl:part name="statofamigliarequestpart" element="tras:richiestastatofamiglia" /> </wsdl:message> <wsdl:message name="statofamigliaresponse"> <wsdl:part name="statofamigliaresponsepart" element="tras:statofamiglia" /> </wsdl:message> <!-- Passa un CodiceFiscale e ritorna i dati di un soggetto --> <wsdl:porttype name="richiestastatofamiglia"> <wsdl:operation name="acquisisci"> <wsdl:input message="tras:statofamigliarequest" /> <wsdl:output message="tras:statofamigliaresponse" /> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Implementativo Erogatore (/protocolli/trasparente/example/tutorial/sincrono/configurazionepdd/wsdl/implementazionee Specifica i dettagli di protocollo e porti di accesso per servizi e operazioni esposti dal soggetto erogatore tramite il binding soap1.1. <wsdl:definitions xmlns:wsdl=" xmlns:xsd=" xmlns:soap=" xmlns:tras=" targetnamespace=" <wsdl:import namespace=" RichiestaStatoFamiglia"
70 Tutorial di configurazione e programmazione OpenSPCoop 65 / 74 location="logicoerogatore.wsdl"> </wsdl:import> <wsdl:binding name="richiestastatofamigliasoap11binding" type="tras: RichiestaStatoFamiglia"> <soap:binding style="document" transport=" /> <wsdl:operation name="acquisisci"> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="richiestastatofamigliasoap11service"> <wsdl:port name="richiestastatofamigliasoap11interfaceendpoint" binding="tras:richiestastatofamigliasoap11binding"> <soap:address location=" /> </wsdl:port> </wsdl:service> </wsdl:definitions> Configurazione Porta di Dominio Vediamo adesso la sequenza di passi per configurare questo caso d uso tramite l applicazione PddConsole. 1. Creazione del Soggetto (se non presente) PROXY/CentroAnagrafico avente il ruolo di erogatore. Tipo CentroAnagrafico PROXY Tabella 35: Dati del Soggetto erogatore (a) Selezionare aggiungi nel menù Soggetti (b) Utilizzare il form per inserire i parametri del soggetto erogatore del servizio (c) Premere il pulsante Invia
71 Tutorial di configurazione e programmazione OpenSPCoop 66 / Creazione del Soggetto esterno (se non presente) PROXY/Comune avente il ruolo di fruitore: Aggiungiamo il soggetto che fruirà del servizio ComunicazioneVariazione. Comune Tipo PROXY Porta di Dominio - Tabella 36: Dati Soggetto Fruitore (a) Selezionare aggiungi nel menù Soggetti (b) Utilizzare il form presentato per inserire i parametri del soggetto fruitore del servizio (c) Premere il pulsante Invia 3. Creazione del Servizio Applicativo ProxyRichiestaStatoFamiglia_SA utilizzato per l integrazione del client erogatore: Soggetto Invocazione porta / Credenziale di accesso Modalità di fault ProxyRichiestaStatoFamiglia11_SA PROXY/CentroAnagrafico nessuna soap Tabella 37: Dati Servizio Applicativo Fruitore (a) Selezionare aggiungi nel menù Servizi Applicativi (b) Utilizzare il form presentato per inserire i parametri del servizio applicativo fruitore (c) Premere il pulsante Invia
72 Tutorial di configurazione e programmazione OpenSPCoop 67 / 74 Sbustamento SOAP Sbustamento Informazioni di Protocollo Salva in Message Box Connettore abilitato Url connettore Tipo credenziali d accesso ProxyRichiestaStatoFamiglia11_SA disabilitato abilitato disabilitato si nessuna Tabella 38: Dati invocazione Servizio Applicativo erogatore 4. Impostare i parametri di invocazione del Servizio Applicativo 5. Creazione dell Accordo di Servizio Parte Comune AS_ProxyRichiestaStatoFamiglia Soggetto Referente PROXY/CentroAnagrafico Versione 1 WSDL Definitorio definitorio.xsd WSDL Logico Erogatore logicoerogatore.wsdl Tabella 39: Dati Accordo di Servizio Parte Comune (a) Selezionare aggiungi nel menù Accordi Servizio Parte Comune (b) Utilizzare il form presentato per inserire i vari parametri dell Accordo
73 Tutorial di configurazione e programmazione OpenSPCoop 68 / Aggiungiamo il Servizio generico all Accordo: il nome del servizio dovrà avere lo stesso nome del PortType indicato nel WSDL Logico Erogatore. Profilo RichiestaStatoFamiglia sincrono Tabella 40: Dati Servizio dell Accordo (a) Dalla lista degli Accordi di Servizio Parte Comune, selezionare visualizza nella colonna Servizi in corrispondenza dell Accordo creato al punto precedente. (b) Premere il pulsante Aggiungi e completare il form per l aggiunta di un nuovo servizio. 7. Specifichiamo le azioni del Servizio: le azioni del Servizio corrispondono alle Operation specificate nel WSDL Acquisisci Tabella 41: Dati delle azioni del servizio (a) Selezionare visualizza nella colonna Azioni in corrispondenza del servizio RichiestaStatoFamiglia appena creato. (b) Premere il pulsante Aggiungi e completare il form per l aggiunta di una nuova azione. 8. Aggiungere l Accordo di Servizio Parte Specifica. L inserimento della parte specifica definisce l implementazione del servizio da parte del soggetto erogatore. Nel contesto di questo tutorial utilizziamo per questa operazione l interfaccia PddConsole in modalità avanzata poiché, a causa delle molteplici implementazioni del medesimo port-type per il medesimo soggetto erogatore, si rende necessario differenziare i nomi di questi servizi. Per configurare una sola implementazione di servizio per un soggetto erogatore non è necessario questo accorgimento. (a) Nella sezione Accordi Servizio Parte Specifica selezionare Aggiungi. (b) Utilizzare il form presentato per inserire i parametri della parte specifica dell accordo di servizio
74 Tutorial di configurazione e programmazione OpenSPCoop 69 / 74 Soggetto Erogatore Accordo di Servizio Parte Comune Servizio Porta Applicativa / Porta Applicativa / ServizioApplicativo WSDL Implementativo Erogatore PROXY/CentroAnagrafico AS_ProxyRichiestaStatoFamiglia RichiestaStatoFamiglia RichiestaStatoFamigliaSOAP11Service RichiestaStatoFamigliaSOAP11Service ProxyRichiestaStatoFamiglia11_SA implementazioneerogatoresoap11.wsdl Tabella 42: Dati dell Accordo di Servizio Parte Specifica (c) Premere il pulsante Invia 9. Aggiungere il soggetto fruitore alla lista dei soggetti che possono fruire del servizio: dobbiamo quindi aggiungere il soggetto PROXY/Comune ai fruitori del servizio RichiestaStatoFamigliaSOAP11Service. (a) Nell elenco degli Accordi Servizio Parte Specifica individuare RichiestaStatoFamigliaSOAP11Service e selezionare visualizza nella colonna Fruitori: (b) Selezionare Aggiungi ed utilizzare il form per inserire i parametri del soggetto fruitore PROXY/Comune. (c) Premere il pulsante Invia Esecuzione e Verifica Per l esecuzione delle applicazioni di esempio si può utilizzare l ambiente presente nella distribuzione di openspcoop2 al percorso: protocolli/trasparente/example/tutorial/sincrono eseguendo i seguenti passi:
75 Tutorial di configurazione e programmazione OpenSPCoop 70 / 74 Configurare l applicazione client editando il file Client.properties: invocazionetramitepdd=true # Invocazione tramite PdD (Caso Porta Applicativa) portadidominio= Contesto.soap11=RichiestaStatoFamigliaSOAP11Service/Acquisisci # Credenziali http basic username=comune Come si può notare la property portadidominio fa riferimento alla url da invocare per la chiamata alla porta applicativa invocata dal client. A questa property viene concatenato il valore della property Contesto.soap11 che fa riferimento al nome della porta applicativa creata in configurazione con l aggiunta dell operation in fondo. La property username fa riferimento all identificativo del Soggetto che consente alla Porta di Dominio di risalire al soggetto mittente. Come già detto in precedenza, ciò non significa che l autenticazione non venga effettuata. L autenticazione dei soggetti esterni avviene tramite gli usuali metodi che non sono argomento di questo tutorial. Avviare il Server tramite il comando ant run_server. L output ottenuto sarà: [root@ws5 sincrono]# ant run_server Buildfile: /home/papandrea/work/openspcoop2/0.2.dev/protocolli/trasparente/example/ tutorial/sincrono/build.xml _run_server_trasparente_tutorial_sincrono: [java] Starting Server [java] Aug 9, :05:19 PM org.springframework.context.support. AbstractApplicationContext preparerefresh [java] INFO: Refreshing org.springframework.context.support. ClassPathXmlApplicationContext@3f7fa65e: startup date [Fri Aug 09 17:05:19 CEST 2013]; root of context hierarchy [java] Aug 9, :05:19 PM org.springframework.beans.factory.xml. XmlBeanDefinitionReader loadbeandefinitions [java] INFO: Loading XML bean definitions from class path resource [configurazionepdd /server/cxf.xml] [java] Aug 9, :05:20 PM org.springframework.beans.factory.support. DefaultListableBeanFactory preinstantiatesingletons [java] INFO: Pre-instantiating singletons in org.springframework.beans.factory. support.defaultlistablebeanfactory@112c3327: defining beans [ RichiestaStatoFamigliaSOAP11,RichiestaStatoFamigliaSOAP12, RichiestaStatoFamigliaSOAP11Sec,RichiestaStatoFamigliaSOAP12Sec]; root of factory hierarchy [java] Aug 9, :05:20 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { RichiestaStatoFamiglia}RichiestaStatoFamigliaSOAP11Service from WSDL: file: configurazionepdd/wsdl/implementazioneerogatoresoap11.wsdl [java] Aug 9, :05:21 PM org.apache.cxf.endpoint.serverimpl initdestination [java] INFO: Setting the server s publish address to be tutorial/sincrono11 [java] :05:21.281:INFO:oejs.Server:jetty v [java] :05:21.324:INFO:oejs.AbstractConnector:Started SelectChannelConnector@localhost:8888 [java] Aug 9, :05:21 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { RichiestaStatoFamiglia}RichiestaStatoFamigliaSOAP12Service from WSDL: file: configurazionepdd/wsdl/implementazioneerogatoresoap12.wsdl [java] Aug 9, :05:21 PM org.apache.cxf.endpoint.serverimpl initdestination [java] INFO: Setting the server s publish address to be tutorial/sincrono12
76 Tutorial di configurazione e programmazione OpenSPCoop 71 / 74 [java] Aug 9, :05:21 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { RichiestaStatoFamiglia}RichiestaStatoFamigliaSOAP11SecService from WSDL: file: configurazionepdd/wsdl/implementazioneerogatoresoap11security.wsdl [java] Server ready... [java] Aug 9, :05:21 PM org.apache.cxf.ws.security.policy.model.algorithmsuite setalgorithmsuite [java] WARNING: An Rsa15 AlgorithmSuite - TripleDesRsa15 - has been configured, which is not recommended. Please consider using TripleDes instead. [java] Aug 9, :05:21 PM org.apache.cxf.endpoint.serverimpl initdestination [java] INFO: Setting the server s publish address to be tutorial/sincronosec11 [java] Aug 9, :05:21 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { RichiestaStatoFamiglia}RichiestaStatoFamigliaSOAP12SecService from WSDL: file: configurazionepdd/wsdl/implementazioneerogatoresoap12security.wsdl Avviare il Client tramite il comando ant run_client_soap11. L output ottenuto sarà: [giuseppe@turbo-laptop sincrono]$ ant run_client_soap11 Buildfile: /home/giuseppe/work/openspcoop2/0.2.dev/protocolli/trasparente/example/tutorial /sincrono/build.xml _run_client_trasparente_tutorial_sincrono_soap11: [java] Aug 09, :05:39 PM org.apache.cxf.service.factory. ReflectionServiceFactoryBean buildservicefromwsdl [java] INFO: Creating Service { RichiestaStatoFamiglia}RichiestaStatoFamigliaSOAP11Service from WSDL: file:/home/ giuseppe/work/openspcoop2/0.2.dev/protocolli/trasparente/example/tutorial/ sincrono/configurazionepdd/wsdl/implementazioneerogatoresoap11.wsdl [java] Invoking acquisisci... [java] Aug 09, :05:40 PM org.apache.cxf.services. RichiestaStatoFamigliaSOAP11Service.RichiestaStatoFamigliaSOAP11InterfaceEndpoint.RichiestaStatoFamiglia [java] INFO: Outbound Message [java] [java] ID: 1 [java] Address: RichiestaStatoFamigliaSOAP11Service/Acquisisci [java] Encoding: UTF-8 [java] Http-Method: POST [java] Content-Type: text/xml [java] Headers: {Accept=[*/*], Authorization=[Basic Q29tdW5lOjEyMzQ1Ng==], SOAPAction =[""]} [java] Payload: <soap:envelope xmlns:soap=" /"><soap:body><ns2:richiestastatofamiglia xmlns:ns2=" example/pdd/server/richiestastatofamiglia">dddfff22g22g222g</ns2: richiestastatofamiglia></soap:body></soap:envelope> [java] [java] Aug 09, :05:40 PM org.apache.cxf.services. RichiestaStatoFamigliaSOAP11Service.RichiestaStatoFamigliaSOAP11InterfaceEndpoint.RichiestaStatoFamiglia [java] INFO: Inbound Message [java] [java] ID: 1 [java] Response-Code: 200 [java] Encoding: UTF-8 [java] Content-Type: text/xml;charset=utf-8
77 Tutorial di configurazione e programmazione OpenSPCoop 72 / 74 [java] Headers: {content-type=[text/xml;charset=utf-8], Date=[Fri, 09 Aug :05:40 GMT], Server=[Apache-Coyote/1.1], transfer-encoding=[chunked], X- OpenSPCoop2-Pdd=[OpenSPCoop2/branches_0.2_0.2.dev], X-OpenSPCoop2-PddDetails=[ OpenSPCoop Revision N.9453, LastChangedRevision N.9453, 08/09/ :08 AM]} [java] Payload: <soap:envelope xmlns:soap=" /"><soap:body><ns2:statofamiglia xmlns:ns2=" server/richiestastatofamiglia"><nome>mario</nome><cognome>rossi</cognome>< codicefiscale>dddfff22g22g222g</codicefiscale><nascita> z</nascita>< statocivile>celibe</statocivile></ns2:statofamiglia></soap:body></soap:envelope> [java] [java] ========== Ricevuti dati del Soggetto ============== [java] == Nuovo nome: Mario [java] == Nuovo cognome: Rossi [java] == Nuovo codice fiscale: DDDFFF22G22G222G [java] == Nuova data di nascita: Z [java] == Nuovo stato civile: Celibe run_client_soap11: BUILD SUCCESSFUL Controllando il file openspcoop2.log possiamo verificare il corretto funzionamento della PdD: <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico RicezioneBuste_PA < T12:56:17.133> (infoprotocol) ID:46d b9-99ee-a4f5655b3950-request FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/ RichiestaStatoFamigliaSOAP11Service A:Acquisisci Ricevuto messaggio di cooperazione con identificativo [46d b9-99ee-a4f5655b3950 -request] inviata dalla parte mittente [PROXY/Comune] ( Basic Username: Comune ) <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico RicezioneBuste_PA < T12:56:17.133> (infointegration) ID:46d b9-99ee-a4f5655b3950- request FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/ RichiestaStatoFamigliaSOAP11Service A:Acquisisci Controllo Autorizzazione[registro] messaggio con identificativo [46d b9-99ee- a4f5655b3950-request] FR[PROXY/Comune]->ER[PROXY/CentroAnagrafico--PROXY/ RichiestaStatoFamigliaSOAP11Service:1--Acquisisci]... <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico RicezioneBuste_PA < T12:56:17.134> (infointegration) ID:46d b9-99ee-a4f5655b3950- request FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/ RichiestaStatoFamigliaSOAP11Service A:Acquisisci Controllo Autorizzazione[registro] messaggio con identificativo [46d b9-99ee- a4f5655b3950-request] FR[PROXY/Comune]->ER[PROXY/CentroAnagrafico--PROXY/ RichiestaStatoFamigliaSOAP11Service:1--Acquisisci]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico ConsegnaContenutiApplicativi < T12:56:17.136> (infoprotocol) ID:46d b9-99ee-a4f5655b3950-request SA:ProxyRichiestaStatoFamiglia11_SA FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/RichiestaStatoFamigliaSOAP11Service A: Acquisisci Invio Messaggio di cooperazione con identificativo [46d b9-99ee-a4f5655b3950- request] in corso (location: <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico ConsegnaContenutiApplicativi < T12:56:17.411> (infoprotocol) ID:46d89625
78 Tutorial di configurazione e programmazione OpenSPCoop 73 / b9-99ee-a4f5655b3950-request SA:ProxyRichiestaStatoFamiglia11_SA FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/RichiestaStatoFamigliaSOAP11Service A: Acquisisci Messaggio applicativo con ID [46d b9-99ee-a4f5655b3950-request], generato dal mittente [PROXY/Comune], consegnato al servizio applicativo [ ProxyRichiestaStatoFamiglia11_SA] mediante connettore [http] (location: :8888/tutorial/sincrono11) con codice di trasporto: 200 <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico RicezioneBuste_PA < T12:56:17.418> (infoprotocol) ID:46d b9-99ee-a4f5655b3950-request FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/ RichiestaStatoFamigliaSOAP11Service A:Acquisisci Generato messaggio di cooperazione con identificativo [46d b9-99ee-a4f5655b3950 -response] in consegna verso la parte mittente [PROXY/Comune] <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico RicezioneBuste_PA < T12:56:17.423> (infointegration) ID:46d b9-99ee-a4f5655b3950- request FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/ RichiestaStatoFamigliaSOAP11Service A:Acquisisci Risposta consegnata alla porta di dominio mittente con codice di trasporto: 200 <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico RicezioneBuste_PA < T17:05:40.363> (infoprotocol) ID:72daf12b-1aab-460e-905e-d50bb933be57-request FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/ RichiestaStatoFamigliaSOAP11Service A:Acquisisci Ricevuto messaggio di cooperazione con identificativo [72daf12b-1aab-460e-905e-d50bb933be57 -request] inviata dalla parte mittente [PROXY/Comune] ( Basic Username: Comune ) <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico RicezioneBuste_PA < T17:05:40.364> (infointegration) ID:72daf12b-1aab-460e-905e-d50bb933be57- request FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/ RichiestaStatoFamigliaSOAP11Service A:Acquisisci Controllo Autorizzazione[registro] messaggio con identificativo [72daf12b-1aab-460e-905e- d50bb933be57-request] FR[PROXY/Comune]->ER[PROXY/CentroAnagrafico--PROXY/ RichiestaStatoFamigliaSOAP11Service:1--Acquisisci]... <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico RicezioneBuste_PA < T17:05:40.365> (infointegration) ID:72daf12b-1aab-460e-905e-d50bb933be57- request FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/ RichiestaStatoFamigliaSOAP11Service A:Acquisisci Controllo Autorizzazione[registro] messaggio con identificativo [72daf12b-1aab-460e-905e- d50bb933be57-request] FR[PROXY/Comune]->ER[PROXY/CentroAnagrafico--PROXY/ RichiestaStatoFamigliaSOAP11Service:1--Acquisisci]: autorizzato (client-auth disabilitato) <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico ConsegnaContenutiApplicativi < T17:05:40.371> (infoprotocol) ID:72daf12b-1aab -460e-905e-d50bb933be57-request SA:ProxyRichiestaStatoFamiglia11_SA FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/RichiestaStatoFamigliaSOAP11Service A:Acquisisci Invio Messaggio di cooperazione con identificativo [72daf12b-1aab-460e-905e-d50bb933be57- request] in corso (location: <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico ConsegnaContenutiApplicativi < T17:05:40.642> (infoprotocol) ID:72daf12b-1aab -460e-905e-d50bb933be57-request SA:ProxyRichiestaStatoFamiglia11_SA FR:PROXY/Comune ->
79 Tutorial di configurazione e programmazione OpenSPCoop 74 / 74 ER:PROXY/CentroAnagrafico S(v1):PROXY/RichiestaStatoFamigliaSOAP11Service A:Acquisisci Messaggio applicativo con ID [72daf12b-1aab-460e-905e-d50bb933be57-request], generato dal mittente [PROXY/Comune], consegnato al servizio applicativo [ ProxyRichiestaStatoFamiglia11_SA] mediante connettore [http] (location: :8888/tutorial/sincrono11) con codice di trasporto: 200 <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico RicezioneBuste_PA < T17:05:40.644> (infoprotocol) ID:72daf12b-1aab-460e-905e-d50bb933be57-request FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/ RichiestaStatoFamigliaSOAP11Service A:Acquisisci Generato messaggio di cooperazione con identificativo [72daf12b-1aab-460e-905e-d50bb933be57 -response] in consegna verso la parte mittente [PROXY/Comune] <trasparente> CentroAnagraficoPdD.PROXY/CentroAnagrafico RicezioneBuste_PA < T17:05:40.646> (infointegration) ID:72daf12b-1aab-460e-905e-d50bb933be57- request FR:PROXY/Comune -> ER:PROXY/CentroAnagrafico S(v1):PROXY/ RichiestaStatoFamigliaSOAP11Service A:Acquisisci Risposta consegnata alla porta di dominio mittente con codice di trasporto: I rimanenti scenari del protocollo trasparente Per l utilizzo dei rimanenti scenari contenuti nel tutorial si potrà procedere in maniera del tutto analoga a quanto finora illustrato nel precedente caso, per il protocollo trasparente, e nei casi relativi al protocollo SPCoop. In fase di svolgimento di questi ulteriori scenari si tenga presente: Non è necessario creare ulteriori porttype alla parte comune dell accordo di servizio. Le variazioni sulla versione di SOAP e sull adozione o meno di WS-Security sono state realizzate come specifici binding del medesimo servizio concettuale. Si tratta quindi di creare nuove parti specifiche dell accordo di servizio che fanno riferimento a diversi wsdl implementativi. I casi in cui la Porta di Dominio è adottata dal fruitore presentano minime differenze rispetto a quanto già illustrato per SPCoop. L unico accorgimento è quello di impostare il connettore del servizio, che normalmente fa riferimento alla porta applicativa della Porta di Dominio erogatrice, con quello relativo al servizio applicativo erogatore. Nei casi che prevedono l uso di WS-Security si dovrà provvedere alla configurazione dei parametri necessari sulla porta delegata o applicativa, a seconda che si tratti di una Porta di Dominio del fruitore o dell erogatore. Per impostare i parametri di WS-Security procedere nel seguente modo: Selezionare nella colonna WS-Security, in corrispondenza della porta applicativa, il collegamento disabilitato. Modificare l impostazione dello stato su abilitato e premere Invia. I parametri di configurazione di WS-Security, relativi al messaggio di richiesta e alla risposta, potranno essere impostati seguendo i collegamenti Request-Flow e Response-Flow.
Tutorial di configurazione e programmazione di OpenSPCoop. Tutorial di configurazione e programmazione di OpenSPCoop
i Tutorial di configurazione e programmazione di OpenSPCoop ii Copyright 2005-2008 Link.it s.r.l. iii COLLABORATORI TITOLO : Tutorial di configurazione e programmazione di OpenSPCoop AZIONE NOME DATA FIRMA
Tutorial di configurazione e programmazione di OpenSPCoop. Tutorial di configurazione e programmazione di OpenSPCoop
i Tutorial di configurazione e programmazione di OpenSPCoop ii Copyright 2005-2011 Link.it s.r.l. iii Indice 1 Introduzione 1 2 Ambiente di sviluppo 1 3 Presentazione degli scenari di esempio 2 4 Comunicazione
Dall esperienza della Porta di Dominio italiana, l API Gateway conforme alle normative della Pubblica Amministrazione. Govlet Fatturazione attiva
Dall esperienza della Porta di Dominio italiana, l API Gateway conforme alle normative della Pubblica Amministrazione Govlet Fatturazione attiva Indice 1 Introduzione...3 2 Esecuzione...4 2.1 Fase 1/4
Dall esperienza della Porta di Dominio italiana, l API Gateway conforme alle normative della Pubblica Amministrazione.
Dall esperienza della Porta di Dominio italiana, l API Gateway conforme alle normative della Pubblica Amministrazione Govlet PagoPA Indice 1 Introduzione...3 2 Esecuzione...3 2.1 Fase Preliminare - Scelta
Servizi di interscambio dati e cooperazione applicativa Guida alla gestione dei servizi web Mipaaf
Servizi di interscambio dati e cooperazione applicativa Indice 1 Introduzione... 3 2 Accesso ai servizi... 4 2.1 La richiesta di convenzione... 4 2.2 Le credenziali di accesso al sistema... 5 2.3 Impostazione
Manuale operativo di amministrazione del Portale Aziende BPM
Manuale operativo di amministrazione del Portale Aziende BPM Versione 1.0 Indice Indice INDICE 2 PREFAZIONE 3 IL MANUALE OPERATIVO 3 I LETTORI DEL MANUALE 3 DEFINIZIONI 3 I CONTENUTI DEL MANUALE 4 CAPITOLO
Guida alla Configurazione del Client di posta Microsoft XP Outlook 2006
Guida alla Configurazione del Client di posta Microsoft XP Outlook 2006 Client Posta - Microsoft Outlook Express 2006 Pag. 1 di 20 Indice 1 Introduzione a Microsoft Outlook Express 2006...3 2 Scheda account
Utilizzo collegamento remoto
Utilizzo collegamento remoto Introduzione Il collegamento VPN (virtual private network) consente a PC collegati ad internet ma fisicamente fuori dalla rete interna regionale, di accedere, con le credenziali
Struttura di un applicazione Instant Developer
La creazione di un nuovo tipo di installazione avviene dall interno del manager, a partire dall installazione di default che è stata creata da In.de quando l applicazione è stata pubblicata per la prima
Manuale d istruzioni per l uso della web-mail di ANDI
Manuale d istruzioni per l uso della web-mail di ANDI 1. Login Dopo esservi connessi all indirizzo https://webmail.andinazionale.it/ troverete una interfaccia come quella indicata in Figura 1. per accedere
SERVIZI TELEMATICI. Danilo Zanzini
SERVIZI TELEMATICI Danilo Zanzini COSA GESTISCE IL SERVIZIO TELEMATICO Controllo con modulo ministeriale Visualizzazione immediata del diagnostico Invio diretto all Agenzia dell Entrate Controllo Autentica
Manuale Gestione di OpenSPCoop 1.4 i. Manuale Gestione di OpenSPCoop 1.4
i Manuale Gestione di OpenSPCoop 1.4 ii Copyright 2005-2011 Link.it srl iii Indice 1 Introduzione 1 2 Prerequisiti per la Configurazione della Porta di Dominio 1 2.1 Verifica dell applicazione di gestione
INDICE. FattureGO Guida introduttiva
Guida introduttiva INDICE Introduzione 3 Accesso a DK Cloud 3 Profilo utente 4 Prima attivazione 4 Barra degli strumenti 5 Upload dei file da disco locale 6 Ripristino dell archivio 6 Accesso a FattureGO
GUIDA APPLICATIVA DICHIARAZIONE RLS AZIENDA
GUIDA APPLICATIVA DICHIARAZIONE RLS AZIENDA VERSIONE 5.0 INDICE DEL DOCUMENTO 1.... 3 2. Descrizione servizio... 4 3. Inserimento e modifica RLS... 5 3.1. Visualizza unità produttive... 5 3.2. Inserimento
DK Link. INTRODUZIONE A DK Link 2. LA COLLABORAZIONE CON FattureGO 2
DK Link DK Link e FattureGO Guida operativa per l azienda INTRODUZIONE A DK Link 2 LA COLLABORAZIONE CON FattureGO 2 Attivazione di FattureGO 2 Se FattureGO è attivato dal proprio commercialista 2 Se FattureGO
Guida Utente della PddConsole. Guida Utente della PddConsole
Guida Utente della PddConsole i Guida Utente della PddConsole Guida Utente della PddConsole ii Copyright 2005-2015 Link.it srl Guida Utente della PddConsole iii Indice 1 Introduzione 1 2 I protocolli di
Mon Ami 3000 MACommerce La soluzione per il commercio elettronico totalmente integrata con Mon Ami 3000
Mon Ami 000 MACommerce La soluzione per il commercio elettronico totalmente integrata con Mon Ami 000 Prerequisiti La soluzione MACommerce si integra totalmente con le versioni Azienda Light e Azienda
Certificazione e.toscana Compliance. Applicativi di Sistemi Informativi degli Enti Locali (SIL)
Pagina 1 di Applicativi di Sistemi Informativi degli Enti Locali (SIL) Pagina 2 Dati Identificativi dell Applicativo Nome DOCPRO Versione 6.0 Data Ultimo Rilascio 15.06.2007 Documentazione Versione Data
Plugin di integrazione con Prestashop v. 2.0
Plugin di integrazione con Prestashop v. 2.0 Requisiti: Prestashop 1.5 o superiori Un account valido sulla piattaforma 4Dem Accesso ftp alla cartella di Prestashop 4Dem.it - Plugin di integrazione con
OPERATIVITA WEBTEC LATO STUDIO PER GESTIONE FATTURAZIONE ELETTRONICA B2B
OPERATIVITA WEBTEC LATO STUDIO PER GESTIONE FATTURAZIONE ELETTRONICA B2B PRIMO ACCESSO ALLA PIATTAFORMA DOPO IL RICEVIMENTO DELLE CREDENZIALI Accedendo alla piattaforma con le credenziali dell operatore
Symula Guida all installazione e all uso dell App
Codice Versione DO_SYM_1601 v.1.0 27/06/2016 Documento organizzativo Symula Guida all installazione e all uso dell App Versione Data Pag. Aggiornamenti 1.0 27/06/2016 8 Symula Guida all installazione e
ATTIVAZIONE SERVIZIO NOTIFICHE SMS
Pagina 1 di 15 Dopo che Prometeo Vi avrà attivato la casella di posta elettronica certificata (casella PEC) e ha inviato i parametri di configurazione, si potranno eseguire le seguenti operazioni: 1) ATTIVAZIONE
SissiCheck. Manuale Operativo. SissiCheck. Versione
SissiCheck Versione 29-01-2010 1 Indice 0 GENERALITA... 3 1 Verifica invio dati di SissiCheck sul sistema centrale... 4 2 Attivazione rilevazione di SissiCheck per l invio dei dati sul sistema centrale...
Manuale Sito Videotrend
Manuale Sito Videotrend 1 Sommario INTRODUZIONE...3 PRESENTAZIONE...4 1 GESTIONE DDNS...6 1.1 GESTIONE DDNS...6 1.2 CONNESSIONE DDNS...6 1.3 CREA ACCOUNT DDNS...7 1.4 GESTIONEACCOUNT...7 1.5 IMPIANTI DDNS...8
Fon.Coop - Sistema di Gestione dei Piani di Formazione FCOOP. Manuale Utente Gestione Utenti GIFCOOP
Fon.Coop - Sistema di Gestione dei Piani di Formazione FCOOP Manuale Utente Gestione Utenti GIFCOOP del 10/02/2015 Indice INTRODUZIONE... 3 1 SISTEMA GESTIONE UTENTI... 4 1.1 Nuovo account utente... 5
Guida Utente della PddConsole. Guida Utente della PddConsole
Guida Utente della PddConsole i Guida Utente della PddConsole Guida Utente della PddConsole ii Copyright 2005-2014 Link.it srl Guida Utente della PddConsole iii Indice 1 Introduzione 1 2 I protocolli di
2. ACCESSO AL PORTALE
Sommario Indice generale 1. Introduzione... 3 2. Accesso al portale... 3 2.1. Accesso tramite Smart Card... 4 2.2. Accesso tramite OTP Manager... 5 2.3. Accesso tramite SPID... 6 3. Definizione degli utenti...
Istruzioni per il cambio della password della casella di posta
Istruzioni per il cambio della password della casella di posta La password generata e fornita al cliente in fase di creazione della casella di posta è una password temporanea, il cliente è tenuto a modificarla.
Registrazione aziende per esportazione negli USA di prodotti alimentari diversi dalla carne e a base di carne
Registrazione aziende per esportazione negli USA di prodotti alimentari diversi dalla carne e a base di carne Ambito Ambito del presente manuale utente è fornire le istruzioni operative per la corretta
Per richiedere il certificato l utente deve provvedere, nel proprio ambiente informatico, alla generazione della CSR (Certificate Sign Request).
Procedura operativa generazione chiavi SISTRI Per richiedere il certificato l utente deve provvedere, nel proprio ambiente informatico, alla generazione della CSR (Certificate Sign Request). Per poter
Guida Utente della PddConsole. Guida Utente della PddConsole
Guida Utente della PddConsole i Guida Utente della PddConsole Guida Utente della PddConsole ii Copyright 2005-2014 Link.it srl Guida Utente della PddConsole iii Indice 1 Introduzione 1 2 Prerequisiti per
Manuale di configurazione e utilizzo Barcode card
Manuale di configurazione e utilizzo Barcode card Premessa... 3 Impostazioni Monetica... 3 Impostazioni... 3 Menu Barcode card... 5 Impostazioni... 6 Registrazione... 6 Elenco barcode card... 7 Configurazione
Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1
Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1 Release NOTE 1.1 Prima Versione del Manuale INDICE 1-INTRODUZIONE... 4 2- GESTIONE DEL CATALOGO PIXMANIA-PRO SU IMAIO... 5 3-Configurazione
Guida alla programmazione e integrazione di servizi in OpenSPCoop. Guida alla programmazione e integrazione di servizi in OpenSPCoop
i Guida alla programmazione e integrazione di servizi in OpenSPCoop ii Copyright 2005-2008 Link.it s.r.l. iii COLLABORATORI TITOLO : Guida alla programmazione e integrazione di servizi in OpenSPCoop AZIONE
Piattaforma di cooperazione applicativa della Regione Campania
Piattaforma di cooperazione applicativa della Regione Campania Agenda Lo scenario regionale: SPICCA a. La porta di dominio b. Il registro dei servizi c. La sicurezza La PDD SPICCA: a. Caratteristiche b.
manuale operativo sportello unico delle attività produttive InfoCamere Società Consortile di Informatica delle Camere di Commercio Italiane per azioni
InfoCamere Società Consortile di Informatica delle Camere di Commercio Italiane per azioni sportello unico delle attività produttive manuale operativo versione 01 maggio 2011 indice 15 15 16 19 21 Per
INTRODUZIONE INTERFACCIA UTENTE SCENARIO D INTEGRAZIONE CON L ANAGRAFE REGIONALE FILTRI DI RICERCA MINIMI RICHIESTI...
!!!" "!!"!# $! !!!$ 1. INTRODUZIONE... 4 1.1. INTERFACCIA UTENTE... 5 1.2. SCENARIO D INTEGRAZIONE CON L ANAGRAFE REGIONALE... 10 1.3. FILTRI DI RICERCA MINIMI RICHIESTI... 11 2. MODALITA DI RICERCA E
Guida utente per l accreditamento al sistema di invio notifiche web SEVESO III.0
Guida utente per l accreditamento al sistema di invio notifiche web SEVESO III.0 Premessa La presente linea guida fornisce le indicazioni operative utili al gestore per poter accedere al sistema di invio
Comunicazioni Obbligatorie
Comunicazioni Obbligatorie Sistema informatico on-line di supporto Guida alla compilazione del form di accreditamento 1 Indice dei contenuti 1. GUIDA ALL ACCREDITAMENTO... 3 1.1. CREDENZIALI DI ACCESSO
INDICAZIONI OPERATIVE PER L ACCESSO AL SERVIZIO DI CODIFICA STRUMENTI FINANZIARI E SEGNALAZIONI EX ART.129 TUB
SERVIZIO RILEVAZIONI ED ELABORAZIONI STATISTICHE Divisione Informazioni Anagrafiche INDICAZIONI OPERATIVE PER L ACCESSO AL SERVIZIO DI CODIFICA STRUMENTI FINANZIARI E SEGNALAZIONI EX ART.129 TUB V. 1.5-1
Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori
Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori Per impostazione predefinita, i risultati dei moduli vengono salvati
GECO. Guida pratica ad uso degli enti di formazione
GECO Guida pratica ad uso degli enti di formazione è un applicativo Internet per la gestione dei Contributi rilasciati dall ufficio provinciale 23.5. Tramite l applicativo è possibile inserire le richieste
SERVIZI TELEMATICI. Danilo Zanzini
SERVIZI TELEMATICI Danilo Zanzini COSA GESTISCE IL SERVIZIO TELEMATICO Controllo con modulo ministeriale Visualizzazione immediata del diagnostico Invio diretto all Agenzia dell Entrate Controllo Autentica
Guida di riferimento rapido
Guida di riferimento rapido NEXCODE Versione 3.1 Soft Works 2000 Manuale utente - 1 INSTALLAZIONE DI NEXCODE Per installare, procedere come segue. Avviare SETUP.EXE. È mostrata la finestra Premere Avanti.
Compilazione rapporto di Audit in remoto
Compilazione rapporto di Audit in remoto Manuale utente CSI S.p.A. V.le Lombardia 20-20021 Bollate (MI) Tel. 02.383301 Fax 02.3503940 E-mail: [email protected] Rev. 2.1 16/11/09 Indice Indice... 2 Manuale
Cooperazione Applicativa INPS
Cooperazione Applicativa INPS Guida alla cooperazione applicativa (Vers. 1.7) 1 Indice 1. Cooperazione Applicativa... 3 1.1 Cooperazione Applicativa Ruolo applicativo... 3 2. Applicativo ISE 2016... 5
Dipartimento Affari Interni e Territoriali Direzione Centrale per i Servizi Demografici INA-SAIA. SSLProxy. Manuale Utente. versione 1.
SSLProxy Manuale Utente versione 1.0 Indice 1 Panoramica... 3 2 Installazione...4 2.1 Prerequisiti... 4 2.2 Acquisizione del pacchetto... 4 2.3 Copia dei file sulla postazione client... 4 2.4 Esecuzione
Centrale di allarme SecurLAN MANUALE UPGRADE SECURLINK V.6.4.0
CENTRALI DI ALLARME Centrale di allarme SecurLAN MANUALE UPGRADE SECURLINK V.6.4.0 GENNAIO 2019 UPGRADE SOFTWARE SECURLINK PRO CLOUD - V.6.4.0 Il software Securlink Pro Cloud, versione 6.4.0, può essere
REALIZZAZIONE DEL SISTEMA INFORMATIVO DEL SUAPE
Manuale utente Strumenti di amministrazione SUAPE 1 Indice 1. Introduzione... 4 2. Gestione Entità base... 5 2.1. Gestione Utenti... 5 2.2. Gestione Enti... 13 2.3. Gestione Uffici... 16 2.4. Gestione
GUIDA APPLICATIVA DICHIARAZIONE RLS INTERMEDIARIO
GUIDA APPLICATIVA DICHIARAZIONE RLS INTERMEDIARIO VERSIONE 5.0 INDICE DEL DOCUMENTO 1.... 3 2. Descrizione servizio... 4 3. Scelta deleghe... 5 3.1. Ricerca... 6 4. Inserimento e modifica RLS... 7 4.1.
Manuale utente Soggetto Promotore Erogatore Politiche Attive
Manuale utente Soggetto Promotore Erogatore Politiche Attive Guida all utilizzo del Sistema Garanzia Giovani della Regione Molise Sistema Qualità Certificato UNI EN ISO 9001:2008 9151.ETT4 IT 35024 ETT
Progetto SIRPED Dematerializzazione delle prescrizioni nella Regione Piemonte
Pag. 1 di 15 Progetto SIRPED Dematerializzazione nella Regione Piemonte Versione 2.0 INDICE Pag. 2 di 15 1 INTRODUZIONE... 4 1.1 SCOPO DEL DOCUMENTO... 4 2 I PASSI OPERATIVI... 4 2.1 SCARICARE I FILE DA
IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)
IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Statistics versione 20 con licenza per sito. Questo documento
Guida all uso dei servizi Mail:
Guida all uso dei servizi Mail: - Introduzione - Install. certificato digitale - Outlook Web Access (OWA) - Configurazione di Outlook - Configurare lo smartphone Android, Windows Phone 8 e 8.1, Apple IPhone
Plugin Gestione Circolari Sviluppato da Scimone Ignazio
Plugin Gestione Circolari Sviluppato da Scimone Ignazio http://plugin.sisviluppo.info [email protected] 1 Indice Introduzione...3 Come installare il plugin... 4 Parametri; come configurare il plugin...
ADDON MANUALE UTENTE. AddIn FE - Fatturazione Elettronica NOVEMBRE Versione 1.4 SYS-DAT SPA
ADDON MANUALE UTENTE AddIn FE - Fatturazione Elettronica Versione 1.4 NOVEMBRE 2018 SYS-DAT SPA Informazioni Documento NOME FILE LISTA VARIAZIONI _FatturazioneElettronica_AddInFatturaFE DATA AUTORE VERSIONE
Sistema di Teleraccolta EMITTENTI
Sistema di Teleraccolta EMITTENTI Manuale Utente Storia delle modifiche Data Versione Tipo di modifica 09/07/2006 1.0 Creazione del documento 10/04/2007 1.1 Modifica del documento 24/04/2007 1.2 Modificata
DATEV KOINOS Azienda Cloud. Guida introduttiva
DATEV KOINOS Azienda Cloud Guida introduttiva INDICE 1. Accesso al servizio pag. 3 2. Profilo utente pag. 4 3. Prima attivazione pag. 5 4. Accesso alle applicazioni pag. 5 5. Upload dei file da disco locale
GUIDA ALLA CONFIGURAZIONE DELLA CASELLA DI POSTA ELETTRONICA FEDERATIVA
GUIDA ALLA CONFIGURAZIONE DELLA CASELLA DI POSTA ELETTRONICA FEDERATIVA aggiornata al 29/03/2016 Primo accesso pag. 2 Configurazione web mail pag. 5 Parametri per la configurazione client posta pag. 7
WEBMAIL ODCECTA.IT. Guida all uso
Guida all uso Guida all accesso ed all utilizzo delle caselle di posta elettronica dell Ordine dei Dottori Commercialisti ed Esperti Contabili di Taranto Dati aggiornati al 29/12/ 1. Caratteristiche del
SMS Gateway - Specifiche WS. Specifica Tecnica
Specifica Tecnica Revisione Data Elaborato da Verificato da Note 1 21/02/13 Stefano Peruzzi Gianni Antini Mod. ST-rev002_2013-02-21 Pag. 1/11 Indice 1 Oggetto...3 2 Scopo del documento...3 3 Riferimenti...3
Servizio Conservazione No Problem
Servizio Conservazione No Problem Guida alla conservazione del Registro di Protocollo Versione 1.0 13 Ottobre 2015 Sommario 1. Accesso all applicazione web... 3 1.1 Autenticazione... 3 2. Conservazione
Sistema di Teleraccolta EMITTENTI
Sistema di Teleraccolta EMITTENTI Manuale Utente Storia delle modifiche Data Versione Tipo di modifica 20/10/2004 1.0 Creazione del documento 2 Indice dei contenuti 1 Introduzione... 4 2 Accesso/Uscita
QS-LCD10A. Manuale Utente per la gestione del dispositivo. Display LAN di sportello/postazione per sistemi multi-servizio
QS-LCD10A Manuale Utente per la gestione del dispositivo Display LAN di sportello/postazione per sistemi multi-servizio QS-LCD10A Display LAN di sportello/postazione per sistemi multi-servizio Manuale
Errore nei parametri di connessione Cosa fare se tentando di accedere al gestionale comprare il messaggio Errore nei parametri di connessione
Errore nei parametri di connessione Cosa fare se tentando di accedere al gestionale comprare il messaggio Errore nei parametri di connessione 2.1. Protocolli Sql server: I client di Gamma per comunicare
Manuale Utente. Modulo TS INPS release 1.0
Manuale Utente Modulo TS INPS release 1.0 Sommario Prerequisiti per l utilizzo del Modulo TS INPS...2 Installazione dell aggiornamento CCB ver. 1.3.5 e Modulo TS INPS...3 Configurazione...5 Compilazione
Fatturazione Elettronica Q-Winner
Fatturazione Elettronica Q-Winner Guida operativa Versione 1.0 Questo documento è di proprietà di Area32 S.r.l. Il suo contenuto costituisce materiale riservato soggetto a copyright. Qualsiasi violazione
ACCESSO ALLA POSTA ELETTRONICA TRAMITE OUTLOOK WEB ACCESS
ACCESSO ALLA POSTA ELETTRONICA TRAMITE OUTLOOK WEB ACCESS Versione 1.2 9 Luglio 2007 Pagina 1 di 16 SOMMARIO 1. Cos è Outlook Web Access... 3 2. Quando si usa... 3 3. Prerequisiti per l uso di Outlook
