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 Variazione (Oneway) 3 4.1 Descrizione formale dell Accordo di Servizio: WSDL................................ 3 4.2 Configurazione Porta di Dominio........................................... 5 4.2.1 Configurazioni comuni a tutti gli esempi del tutorial............................ 5 4.2.2 Configurazione del registro dei servizi della PdD.............................. 8 4.3 Programmazione................................................... 13 4.3.1 Fruitore: Servizio Applicativo del Comune................................. 13 4.3.1.1 Modalità trasparente........................................ 13 4.3.1.2 Modalità via Integration Manager................................. 13 4.3.2 Erogatore: Servizio Applicativo del CentroAnagrafico........................... 14 4.4 Test e verifica..................................................... 15 5 Stato Famiglia (sincrono) 18 5.1 Descrizione formale dell Accordo di Servizio: WSDL................................ 18 5.2 Configurazione Porta di Dominio........................................... 20 5.3 Programmazione................................................... 21 5.4 Test e verifica..................................................... 22 6 Stampa Documento (AsincronoAsimmetrico) 27 6.1 Descrizione formale dell Accordo di Servizio: WSDL................................ 27 6.2 Configurazione Porta di Dominio........................................... 30 6.3 Programmazione................................................... 32 6.4 Test e verifica..................................................... 33 7 Identifica Soggetto (AsincronoSimmetrico) 45 7.1 Descrizione formale dell Accordo di Servizio: WSDL................................ 45 7.2 Configurazione Porta di Dominio........................................... 48 7.3 Programmazione................................................... 51 7.4 Test e verifica..................................................... 51
iv Elenco delle tabelle 1 Dati autenticazione PddConsole........................................... 5 2 Dati Soggetto SPCoop Fruitore............................................ 5 3 Connettore del Soggetto SPCoop fruitore...................................... 6 4 Dati Servizio Applicativo Fruitore.......................................... 6 5 Dati del Soggetto SPCoop erogatore......................................... 7 6 Connettore del Soggetto SPCoop erogatore..................................... 7 7 Dati Accordo di Servizio Parte Comune....................................... 8 8 Dati Servizio dell Accordo.............................................. 9 9 Dati delle azioni del servizio............................................. 9 10 Dati dell Accordo di Servizio Parte Specifica.................................... 9 11 Dati Porta Applicativa................................................. 11 12 Dati Servizio Applicativo............................................... 11 13 Dati invocazione Servizio Applicativo........................................ 12 14 Dati Accordo di Servizio Parte Comune....................................... 20 15 Dati Servizio dell Accordo.............................................. 21 16 Dati delle azioni del servizio............................................. 21 17 Dati Accordo di Servizio Parte Specifica....................................... 21 18 Dati Porta Applicativa................................................. 22 19 Dati Servizio Applicativo............................................... 22 20 Dati invocazione Servizio Applicativo........................................ 22 21 Dati Accordo di Servizio Parte Comune....................................... 30 22 Dati Servizio dell Accordo.............................................. 30 23 Dati delle azioni del servizio............................................. 30 24 Dati Accordo di Servizio Parte Specifica....................................... 31 25 Dati Porta Applicativa................................................. 31 26 Dati Servizio Applicativo............................................... 31 27 Dati invocazione Servizio Applicativo........................................ 32 28 Dati invocazione Risposta Asincrona......................................... 32 29 Dati Servizio Applicativo Erogatore......................................... 48 30 Dati Servizio Applicativo Fruitore.......................................... 48 31 Dati invocazione Servizio Applicativo erogatore................................... 49 32 Dati risposta asincrona Servizio Applicativo fruitore................................. 49 33 Dati Accordo di Servizio Parte Comune....................................... 49 34 Dati Servizio Asincrono Simmetrico nell accordo di servizio............................ 49 35 Dati Servizio Asincrono Simmetrico Correlato nell accordo di servizio....................... 49 36 Dati Accordo di Servizio Parte Specifica....................................... 50 37 Dati Accordo di Servizio Parte Specifica correlato.................................. 50 38 Dati Porta Applicativa................................................. 51
1 / 57 1 Introduzione Questa guida documenta le procedure necessarie per la realizzazione di alcuni scenari tipici di Cooperazione Applicativa in ambiente OpenSPCoop, illustrando sia la configurazione della Porta di Dominio OpenSPCoop, sia lo sviluppo di servizi applicativi compatibili con i diversi profili di egovernment analizzati. 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 dare maggiore efficacia all esposizione dei contenuti si farà riferimento a quattro scenari di esempio che rappresentano casi abbastanza verosimili nell ambito della cooperazione applicativa. 2 Ambiente di sviluppo Per la messa in opera degli scenari di esempio trattati in questo tutorial si assume che l installazione standard (binary release) di OpenSPCoop 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. Per quanto riguarda i soggetti cooperanti si utilizzeranno come esempio:
2 / 57 CentroAnagrafico, che rappresenta una generica amministrazione centrale orientata ai servizi anagrafici (soggetto erogatore) Comune, che rappresenta una generica amministrazione locale che richiede dei servizi anagrafici (soggetto fruitore) 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: http://localhost:8080/openspcoop/pa. 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. 3 Presentazione degli scenari di esempio Immaginiamo di dover sviluppare ed integrare in cooperazione applicativa alcuni servizi che gestiscono dati anagrafici, erogati dal soggetto CentroAnagrafico. Immaginiamo inoltre che altri servizi, ad esempio nell ambito di un generico Comune, abbiano bisogno di fruire dei servizi erogati dal Centro Anagrafico. Tra le varie funzionalità ammissibili in questo contesto, abbiamo selezionato una casistica composta da quattro servizi che coprono tutti i profili di cooperazione previsti dalla specifica SPCoop. Elenchiamo i servizi di esempio: ComunicazioneVariazione: con questa operazione si inviano i dati anagrafici di una persona fisica da sostituire a quelli preesistenti. Non richiede nessuna risposta. (profilo di cooperazione Oneway) RichiestaStatoFamiglia: questa operazione permette di recuperare i dati anagrafici di una persona fisica. Nella richiesta viene inserito il codice fiscale della persona e nella risposta saranno inclusi di dati corrispondenti. (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 centro Anagrafe 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 centro Anagrafe 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. Il materiale di esempio, illustrato nel tutorial, contenente le descrizioni dei servizi e l implementazione delle applicazioni di esempio, può essere scaricato qui.
3 / 57 4 Comunicazione Variazione (Oneway) 4.1 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 (scarica definitorio.xsd) Contiene le definizioni dei tipi di dato utilizzati per la codifica dei messaggi. <xs:schema xmlns:so="http://www.openspcoop.org/example" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.openspcoop.org/example"> <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:element name="notifica"> <xsd:complextype> <xsd:sequence> <xsd:element name="comunicazionevariazione" type="so:comunicazionevariazionetype"/> </xsd:sequence> </xsd:complextype> </xs:element> </xs:schema> WSDL Concettuale (scarica concettuale.wsdl). Specifica l interfaccia completa dell accordo di servizio indipendentemente da chi espone i servizi. <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc="http://www.openspcoop.org/example"
4 / 57 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" location="definitorio.xsd" /> <wsdl:message name="comunicazionevariazionerequest"> <wsdl:part element="spc:notifica" name="comunicazionevariazionepart" /> </wsdl:message> <wsdl:porttype name="comunicazionevariazione"> <wsdl:operation name="notifica"> <wsdl:input message="spc:comunicazionevariazionerequest" /> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> WSDL Logico Erogatore (scarica logicoerogatore.wsdl). Specifica l interfaccia di servizi e operazioni esposte dal soggetto erogatore. <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc="http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" location="definitorio.xsd" /> <wsdl:message name="comunicazionevariazionerequest"> <wsdl:part element="spc:notifica" name="comunicazionevariazionepart" /> </wsdl:message> <wsdl:porttype name="comunicazionevariazione"> <wsdl:operation name="notifica"> <wsdl:input message="spc:comunicazionevariazionerequest" /> </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 (scarica implementativoerogatore.wsdl). accesso per servizi e operazioni esposti dal soggetto erogatore. <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc="http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> Specifica i dettagli di protocollo e porti di <wsdl:import namespace="http://www.openspcoop.org/example" location="logicoerogatore.wsdl "/> <wsdl:binding name="comunicazionevariazionebinding" type="spc:comunicazionevariazione"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="notifica"> <wsdl:input> <soap:body use="literal"/> </wsdl:input> </wsdl:operation> </wsdl:binding>
5 / 57 <wsdl:service name="comunicazionevariazioneservice"> <wsdl:port name="comunicazionevariazioneinterfaceendpoint" binding="spc: ComunicazioneVariazioneBinding"> <soap:address location="http://localhost:8080/openspcoop/pd/spccomune/ SPCCentroAnagrafico/SPCComunicazioneVariazione/Notifica"/> </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. 4.2 Configurazione Porta di Dominio 4.2.1 Configurazioni comuni a tutti gli esempi del tutorial 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 SPCoop Comune avente il ruolo di fruitore negli esempi del tutorial: Aggiungiamo il soggetto che fruirà del servizio ComunicazioneVariazione. Comune Tabella 2: Dati Soggetto SPCoop Fruitore (a) Selezionare aggiungi nel menù Soggetti SPCoop (b) Utilizzare la form per inserire i parametri del soggetto fruitore del servizio
6 / 57 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 SPCoop Comune. URL http://localhost:8080/openspcoop/pa Tabella 3: Connettore del Soggetto SPCoop fruitore (a) Dalla lista dei soggetti selezionare visualizza relativamente alla riga del soggetto 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: Comune_SA Soggetto SPCoop SPC/Comune Invocazione porta / Credenziale di accesso basic Utente Comune_SA Password 123456 Modalità di fault soap Tabella 4: Dati Servizio Applicativo Fruitore (a) Selezionare aggiungi nel menù Servizi Applicativi
7 / 57 (b) Utilizzare la form per inserire i parametri del servizio applicativo fruitore (c) Premere il pulsante Invia 5. Creazione del Soggetto SPCoop CentroAnagrafico avente il ruolo di erogatore dei servizi di esempio del tutorial. CentroAnagrafico Tabella 5: Dati del Soggetto SPCoop erogatore (a) Selezionare aggiungi nel menù Soggetti SPCoop (b) Utilizzare la form per inserire i parametri del soggetto erogatore 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 6. Impostazione del connettore relativo al Soggetto SPCoop CentroAnagrafico. URL http://localhost:8080/openspcoop/pa Tabella 6: Connettore del Soggetto SPCoop erogatore
8 / 57 (a) Dalla lista dei soggetti selezionare visualizza relativamente alla riga del soggetto CentroAnagrafico in corrispondenza della colonna Connettore (b) Utilizzare la form per inserire il valore del connettore (c) Premere il pulsante Invia 4.2.2 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 la form per inserire i vari parametri dell Accordo 2. Aggiungiamo il Servizio generico all Accordo: il nome del servizio dovrà avere lo stesso nome del PortType indicato nel WSDL Concettuale.
9 / 57 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) Selezionare aggiungi e completare la 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 (a) Dalla lista degli Accordi di Servizio Parte Comune, selezionare visualizza nella colonna servizi in corrispondenza dell Accordo creato al punto precedente. (b) Selezionare visualizza nella colonna azioni in corrispondenza del servizio ComunicazioneVariazione (c) Selezionare aggiungi e completare la form per l aggiunta di una nuova azione. 4. Aggiungere l Accordo di Servizio Parte Specifica: Soggetto Erogatore Accordo di Servizio Parte Comune Servizio WSDL Implementativo Erogatore SPC/CentroAnagrafico AS_ComunicazioneVariazione ComunicazioneVariazione implementativoerogatore.wsdl Tabella 10: Dati dell Accordo di Servizio Parte Specifica (a) Nella sezione Accordi Servizio Parte Specifica selezionare Aggiungi. (b) Utilizzare la form per inserire i parametri della parte specifica dell accordo di servizio
10 / 57 (c) Premere il pulsante Invia 5. Aggiungere il soggetto fruitore alla lista dei soggetti che possono fruire del servizio: l installazione standard di Open- SPCoop attiva di default l autorizzazione SPCoop 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 Comune ai fruitori del servizio ComunicazioneVariazione (a) Nell elenco degli Accordi Servizio Parte Specifica individuare ComunicazioneVariazione e selezionare visualizza nella colonna Adesioni: (b) Selezionare Add ed utilizzare la form per inserire i parametri del soggetto fruitore del servizio (c) Premere il pulsante Invia Nota Si tenga presente che l operazione descritta in questo passaggio comporta la creazione automatica di una porta delegata associata al soggetto fruitore appena aggiunto. 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 per ciascun soggetto SPCoop. 6. Aggiungere nelle politiche sicurezza il servizio applicativo che si vuole autorizzare all invocazione del servizio. Questo passaggio riguarda 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 Comune, nella colonna politiche sicurezza 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
11 / 57 Nota L operazione descritta in questo passaggio, creerà automaticamente un associazione tra il servizio applicativo e la porta delegata creata automaticamente al passo precedente. 7. Aggiungere la Porta Applicativa: aggiungiamo al soggetto SPC/CentroAnagrafico la porta applicativa che si occuperà della consegna delle richieste applicative verso il serivizio applicativo erogatore. Validazione Contenuti Gestione Body Gestione Manifest Accordo di Servizio Parte Specifica Azione ComunicazioneVariazione_PA disabilitato none abilitato ComunicazioneVariazione Notifica Tabella 11: Dati Porta Applicativa (a) Dalla lista dei Soggetti SPCoop, in corrispondenza del soggetto CentroAnagrafico, nella colonna Porte Applicative, Selezionare visualizza (b) Cliccare sul pulsante Aggiungi (c) Utilizzare la form per inserire i parametri della Porta Applicativa per il soggetto CentroAnagrafico. (d) Premere il pulsante Invia 8. Aggiungere il Servizio Applicativo Erogatore: Soggetto SPCoop Credenziale di accesso Modalità fault ComunicazioneVariazione_SA CentroAnagrafico nessuna soap Tabella 12: Dati Servizio Applicativo
12 / 57 (a) Selezionare aggiungi nel menù Servizi Applicativi (b) Utilizzare la form per inserire i parametri del Servizio Applicativo. (c) Premere il pulsante Invia 9. Impostare i parametri di invocazione del Servizio Applicativo: Sbustamento Get message Connettore abilitato Url connettore Tipo credenziali d accesso ComunicazioneVariazione_SA no disabilitato si http://localhost:8081/tutorial/oneway none Tabella 13: Dati invocazione Servizio Applicativo (a) Abilitare l invocazione del servizio ComunicazioneServizio_SA dall elenco dei Servizi Applicativi (selezionare disabilitato nella colonna Invocazione servizio) (b) Utilizzare la form per inserire i parametri del Servizio Applicativo. (c) Premere il pulsante Invia 10. Associare alla Porta Applicativa il Servizio Applicativo Erogatore: (a) Dall elenco dei Soggetti SPCoop visualizzare le Porta Applicative associati al soggetto SPC/CentroAnagrafico. Selezionare ComunicazioneVariazione_PA e quindi visualizzare l elenco dei Servizi Applicativi (b) Selezionare add. (c) Selezionare il servizio applicativo creato in precedenza. (d) Premere il pulsante Invia
13 / 57 4.3 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. 4.3.1 Fruitore: Servizio Applicativo del Comune 4.3.1.1 Modalità trasparente 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à trasparente 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(); _notifica_comunicazionevariazionepart.setcf("bbbccc11f11f111f");...... port.notifica(_notifica_comunicazionevariazionepart); 4.3.1.2 Modalità via Integration Manager Un altro modo per inviare i messaggi alla Porta di Dominio è quello di utilizzare il servizio di Integration Manager. Generiamo gli stub partendo dal wsdl del servizio: wsdl2java -all http://localhost:8080/openspcoop/integrationmanager?wsdl ottenuti gli stub possiamo inviare il messaggio di richiesta: QName SERVICE_NAME = new QName("http://services.pdd.openspcoop.org", " IntegrationManagerService"); try{ URL wsdlurl = new URL(...); } catch (MalformedURLException e) { e.printstacktrace(); } try{ String file = "request.xml"; String PD = "/SPCComune/SPCCentroAnagrafico/SPCComunicazioneVariazione/ Notifica";
14 / 57 /* * Creo il port per l IntegrationManager */ IntegrationManagerService ss = new IntegrationManagerService(wsdlURL, SERVICE_NAME); IntegrationManager port = ss.getintegrationmanager(); /* * Invoco il servizio invocaportadelegata */ java.lang.string _invocaportadelegata_portadelegata = PD; SPCoopMessage _invocaportadelegata_msg = new SPCoopMessage(); 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 { SPCoopMessage _invocaportadelegata return = port.invocaportadelegata( _invocaportadelegata_portadelegata, _invocaportadelegata_msg); System.out.println("\n Response Message:"); System.out.println(new String(_invocaPortaDelegata return.getmessage())) ; } catch (SPCoopException_Exception e) { System.out.println("Expected exception: SPCoopException has occurred."); System.out.println(e.toString()); return; } } catch(exception e){ System.out.println("Errore::::" + e); return; } 4.3.2 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; Vediamone @javax.jws.webservice( servicename = "ComunicazioneVariazioneService", portname = "ComunicazioneVariazioneInterfaceEndpoint", targetnamespace = "http://www.openspcoop.org/example", wsdllocation = "file:comunicazionevariazione.wsdl", endpointinterface = "org.openspcoop.example.comunicazionevariazione") public class ComunicazioneVariazioneImpl implements ComunicazioneVariazione { public void notifica(comunicazionevariazione_type comunicazionevariazionepart) {
15 / 57 } } 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); } 4.4 Test e verifica Seguendo le istruzioni fornite con i sorgenti per la configurazione, compilazione ed esecuzione degli esempi, avviamo il test per il servizio ComunicazioneVariazione Il Client invierà il messaggio di richiesta alla Porta Delegata: (Messaggio 1 in figura) POST /openspcoop/pd/spccomune/spccentroanagrafico/spccomunicazionevariazione/notifica HTTP /1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Content-Length: 504 Cache-Control: no-cache Pragma: no-cache User-Agent: Java/1.5.0_11 Host: localhost:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soapenv:body> <Notifica xmlns="http://www.openspcoop.org/example"> <comunicazionevariazione CF="BBBCCC11F11F111F"> <nome>mario</nome> <cognome>rossi</cognome> <codicefiscale>dddfff22g22g222g</codicefiscale> <nascita>1980-01-01t12:00:00.000z</nascita> <statocivile>celibe</statocivile> </comunicazionevariazione>
16 / 57 </Notifica> </soapenv:body> </soapenv:envelope> 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): <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soapenv:header> <egov_it:intestazione SOAP_ENV:actor="http://www.cnipa.it/eGov_it/portadominio" SOAP_ENV:mustUnderstand="1" xmlns:soap_env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:egov_it="http://www.cnipa.it/schemas/2003/egovit/busta1_0 /"> <egov_it:intestazionemessaggio> <egov_it:mittente> <egov_it:identificativoparte tipo="spc">comune</egov_it:identificativoparte> </egov_it:mittente> <egov_it:destinatario> <egov_it:identificativoparte tipo="spc">centroanagrafico</egov_it: IdentificativoParte> </egov_it:destinatario> <egov_it:profilocollaborazione>egov_it_messaggiosingolooneway</egov_it: ProfiloCollaborazione> <egov_it:servizio tipo="spc">comunicazionevariazione</egov_it:servizio> <egov_it:azione>notifica</egov_it:azione> <egov_it:messaggio> <egov_it:identificatore>comune_comunespcoopit_0000001_2008-07-31_12:07</egov_it: Identificatore> <egov_it:oraregistrazione tempo="egov_it_spc">2008-07-31t12:07:05.897</egov_it: OraRegistrazione> </egov_it:messaggio> <egov_it:profilotrasmissione confermaricezione="false" inoltro=" EGOV_IT_ALPIUUNAVOLTA"/> </egov_it:intestazionemessaggio> <egov_it:listatrasmissioni> <egov_it:trasmissione> <egov_it:origine> <egov_it:identificativoparte tipo="spc">comune</egov_it:identificativoparte> </egov_it:origine> <egov_it:destinazione> <egov_it:identificativoparte tipo="spc">centroanagrafico</egov_it: IdentificativoParte> </egov_it:destinazione> <egov_it:oraregistrazione tempo="egov_it_spc">2008-07-31t12:07:05.897</egov_it: OraRegistrazione> </egov_it:trasmissione> </egov_it:listatrasmissioni> </egov_it:intestazione> </soapenv:header> <soapenv:body> <comunicazionevariazione CF="BBBCCC11F11F111F" xmlns="http://www.openspcoop.org/example "> <nome>mario</nome> <cognome>rossi</cognome> <codicefiscale>dddfff22g22g222g</codicefiscale> <nascita>1980-01-01t12:00:00.000z</nascita> <statocivile>celibe</statocivile> </comunicazionevariazione> </soapenv:body>
17 / 57 </soapenv:envelope> 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. La risposta inviata al client è questa (Messaggio 6 in figura): HTTP/1.1 200 OK Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; JBoss-4.0.5.GA_CP04 (build: CVSTag=https://svn.jboss.org/repos/ jbossas/tags/jboss_4_0_5_ga_cp04 date=200709031023)/tomcat-5.5 SPCoopTipoMittente: SPC SPCoopID: Comune_ComuneSPCoopIT_0000019_2008-07-31_10:56 SPCoopServizio: ComunicazioneVariazione SPCoopDestinatario: CentroAnagrafico SPCoopTipoDestinatario: SPC SPCoopAzione: Notifica SPCoopTipoServizio: SPC SPCoopMittente: Comune Content-Length: 0 Date: Thu, 31 Jul 2008 08:56:56 GMT Controllando il file openspcoop.log possiamo verificare il corretto funzionamento della porta: ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T15:13:48.754> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13 PD:SPCComune/SPCCentroAnagrafico/ SPCComunicazioneVariazione SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ ComunicazioneVariazione_Notifica Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/ SPCComunicazioneVariazione ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T15:13:48.780> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13 PD:SPCComune/SPCCentroAnagrafico/ SPCComunicazioneVariazione SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ ComunicazioneVariazione_Notifica Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13] in corso (location: http://localhost:8080/openspcoop/pa)... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T15:13:48.910> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/ComunicazioneVariazione_Notifica Ricevuto messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000088_2009-11-18_15 :13] inviata dalla parte mittente [SPC/Comune] CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T15:13:48.926> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/ComunicazioneVariazione_Notifica Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/ComunicazioneVariazione_Notifica]... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T15:13:48.951> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/ComunicazioneVariazione_Notifica Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13] FR[SPC/Comune]->ER[SPC/
18 / 57 CentroAnagrafico_SPC/ComunicazioneVariazione_Notifica]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) CentroAnagraficoSPCoopIT.Sbustamento <2009-11-18T15:13:48.954> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/ComunicazioneVariazione_Notifica Ricevuta Busta EGov [Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T15:13:48.972> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13 SA:ComunicazioneVariazione_SA FR :SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ComunicazioneVariazione_Notifica Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13] in corso (location: http://localhost:8080/tutorial/oneway)... CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T15:13:49.309> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13 SA:ComunicazioneVariazione_SA FR :SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ComunicazioneVariazione_Notifica Messaggio applicativo con ID [Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [ComunicazioneVariazione_SA] mediante connettore [http] (location: http://localhost:8081/tutorial/oneway) con codiceconsegna: 202 ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T15:13:49.347> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13 PD:SPCComune/SPCCentroAnagrafico/ SPCComunicazioneVariazione SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ ComunicazioneVariazione_Notifica Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000088_2009-11-18_15:13] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: http://localhost:8080/openspcoop/pa) con codiceconsegna: 202 5 Stato Famiglia (sincrono) 5.1 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 (scarica definitorio.xsd) Contiene le definizioni dei tipi di dato utilizzati per la codifica dei messaggi. <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:so="http://www.openspcoop.org/example" xmlns:xs="http://www.w3.org/2001/ XMLSchema" xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www. openspcoop.org/example"> <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"/>
19 / 57 <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 (scarica concettuale.wsdl). Specifica l interfaccia completa dell accordo di servizio indipendentemente da chi espone i servizi. <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" 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 Erogatore (scarica logicoerogatore.wsdl). Specifica l interfaccia di servizi e operazioni esposte dal soggetto erogatore. <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" 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>
20 / 57 </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 (scarica implementativoerogatore.wsdl). accesso per servizi e operazioni esposti dal soggetto erogatore. Specifica i dettagli di protocollo e porti di <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" location="logicoerogatore.wsdl "> </wsdl:import> <wsdl:binding name="richiestastatofamigliabinding" type="spc:richiestastatofamiglia"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <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="richiestastatofamigliaservice"> <wsdl:port name="richiestastatofamigliainterfaceendpoint" binding="spc: RichiestaStatoFamigliaBinding"> <soap:address location="http://localhost:8080/openspcoop/pd/spccomune/ SPCCentroAnagrafico/SPCRichiestaStatoFamiglia/Acquisisci"/> </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. 5.2 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 14. Referente WSDL Definitorio WSDL Concettuale WSDL Logico Erogatore AS_RichiestaStatoFamiglia SPC/CentroAnagrafico definitorio.xsd concettuale.wsdl logicoerogatore.wsdl Tabella 14: 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. 3. Specifichiamo le azioni del Servizio: le azioni del Servizio corrispondono alle Operation specificate nel WSDL
21 / 57 Profilo RichiestaStatoFamiglia sincrono Tabella 15: Dati Servizio dell Accordo Acquisisci Tabella 16: Dati delle azioni del servizio 4. Aggiungere l Accordo di Servizio Parte Specifica con i dati riportati in Tabella 17. 5. Aggiungere il soggetto fruitore alla lista dei soggetti che possono fruire della parte specifica appena creata: avendo attiva di default l autenticazione SPCoop dobbiamo aggiungere il soggetto Comune ai fruitori del servizio RichiestaStatoFamiglia 6. Aggiungere nelle politiche sicurezza il servizio applicativo autorizzato 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 Comune, nella colonna politiche sicurezza 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. 7. Aggiungere la Porta Applicativa: aggiungiamo al soggetto SPC/CentroAnagrafico la porta applicativa che si occuperà dello sbustamento delle richieste e-gov dei fruitori e della consegna al servizio applicativo erogatore. 8. Aggiungere il Servizio Applicativo Erogatore: 9. Impostare i parametri di invocazione del Servizio Applicativo, per la consegna trasparente delle richieste al servizio, con i valori riportati in Tabella 20: 10. Associare alla Porta Applicativa il Servizio Applicativo 5.3 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. Soggetto SPCoop Accordo Servizio Parte Comune Servizio WSDL Implementativo Erogatore SPC/CentroAnagrafico AS_RichiestaStatoFamiglia RichiestaStatoFamiglia implementativoerogatore.wsdl Tabella 17: Dati Accordo di Servizio Parte Specifica
22 / 57 Validazione Contenuti Gestione Body Gestione Manifest Servizio SPCoop Azione RichiestaStatoFamiglia_PA disabilitato none abilitato RichiestaStatoFamiglia Acquisisci Tabella 18: Dati Porta Applicativa Soggetto SPCoop Credenziale di accesso Modalità fault RichiestaStatoFamiglia_SA CentroAnagrafico nessuna soap Tabella 19: Dati Servizio Applicativo public interface RichiestaStatoFamiglia { } @WebResult(name = "statofamiglia", targetnamespace = "http://www.openspcoop.org/example ", partname = "statofamigliaresponsepart") @WebMethod(operationName = "Acquisisci") public PersonaType acquisisci( @WebParam(partName = "statofamigliarequestpart", name = "richiestastatofamiglia", targetnamespace = "http://www.openspcoop.org/example") java.lang.string statofamigliarequestpart ); 5.4 Test e verifica Seguendo le istruzioni fornite con i sorgenti per la configurazione, compilazione ed esecuzione degli esempi, avviamo il test per il servizio RichiestaStatoFamiglia. Sbustamento Get message Connettore abilitato Url connettore Tipo credenziali d accesso RichiestaStatoFamiglia_SA no disabilitato si http://localhost:8081/tutorial/sincrono none Tabella 20: Dati invocazione Servizio Applicativo
23 / 57 Il Client invierà il messaggio di richiesta alla Porta Delegata (Messaggio 1 in figura): POST /openspcoop/pd/spccomune/spccentroanagrafico/spcrichiestastatofamiglia/acquisisci HTTP /1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic Q29tdW5lX1NBOjEyMzQ1Ng== Accept: */* User-Agent: Apache CXF 2.2.2 Cache-Control: no-cache Pragma: no-cache Host: localhost:8080 Connection: keep-alive Content-Length: 228 <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <ns2:richiestastatofamiglia xmlns:ns2="http://www.openspcoop.org/example"> DDDFFF22G22G222G</ns2:richiestaStatoFamiglia> </soap:body> </soap:envelope> 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): POST /openspcoop/pa HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" User-Agent: Java/1.5.0_11 Host: localhost:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive Content-Length: 1911 <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:header> <egov_it:intestazione SOAP_ENV:actor="http://www.cnipa.it/eGov_it/portadominio" SOAP_ENV: mustunderstand="1" xmlns:soap_env="http://schemas.xmlsoap.org/soap/envelope/" xmlns: egov_it="http://www.cnipa.it/schemas/2003/egovit/busta1_0/" xmlns:xsd="http://www.w3. org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <egov_it:intestazionemessaggio> <egov_it:mittente> <egov_it:identificativoparte tipo="spc">comune</egov_it:identificativoparte> </egov_it:mittente> <egov_it:destinatario> <egov_it:identificativoparte tipo="spc">centroanagrafico</egov_it: IdentificativoParte> </egov_it:destinatario> <egov_it:profilocollaborazione>egov_it_serviziosincrono</egov_it: ProfiloCollaborazione> <egov_it:servizio tipo="spc">richiestastatofamiglia</egov_it:servizio> <egov_it:azione>acquisisci</egov_it:azione> <egov_it:messaggio> <egov_it:identificatore>comune_comunespcoopit_0000094_2009-11-18_15:31</egov_it: Identificatore> <egov_it:oraregistrazione tempo="egov_it_spc">2009-11-18t15:31:47.085</egov_it: OraRegistrazione> </egov_it:messaggio> <egov_it:profilotrasmissione confermaricezione="false" inoltro="egov_it_alpiuunavolta "/> </egov_it:intestazionemessaggio>
24 / 57 <egov_it:listatrasmissioni> <egov_it:trasmissione> <egov_it:origine> <egov_it:identificativoparte tipo="spc">comune</egov_it:identificativoparte> </egov_it:origine> <egov_it:destinazione> <egov_it:identificativoparte tipo="spc">centroanagrafico</egov_it: IdentificativoParte> </egov_it:destinazione> <egov_it:oraregistrazione tempo="egov_it_spc">2009-11-18t15:31:47.085</egov_it: OraRegistrazione> </egov_it:trasmissione> </egov_it:listatrasmissioni> </egov_it:intestazione> </soap:header> <soap:body> <ns2:richiestastatofamiglia xmlns:ns2="http://www.openspcoop.org/example"> DDDFFF22G22G222G</ns2:richiestaStatoFamiglia> </soap:body> </soap:envelope> 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 anch essa la risposta al servizio applicativo fruitore del soggetto Comune (Messaggio 6 in figura). La risposta inviata al client è questa: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)/ JBossWeb-2.0 Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Wed, 18 Nov 2009 14:31:47 GMT 86c <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:header> <egov_it:intestazione SOAP_ENV:actor="http://www.cnipa.it/eGov_it/portadominio" SOAP_ENV: mustunderstand="1" xmlns:soap_env="http://schemas.xmlsoap.org/soap/envelope/" xmlns: egov_it="http://www.cnipa.it/schemas/2003/egovit/busta1_0/" xmlns:xsd="http://www.w3. org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <egov_it:intestazionemessaggio> <egov_it:mittente> <egov_it:identificativoparte tipo="spc">centroanagrafico</egov_it: IdentificativoParte> </egov_it:mittente> <egov_it:destinatario> <egov_it:identificativoparte tipo="spc">comune</egov_it:identificativoparte> </egov_it:destinatario> <egov_it:profilocollaborazione>egov_it_serviziosincrono</egov_it: ProfiloCollaborazione> <egov_it:servizio tipo="spc">richiestastatofamiglia</egov_it:servizio> <egov_it:azione>acquisisci</egov_it:azione> <egov_it:messaggio> <egov_it:identificatore>centroanagrafico_centroanagraficospcoopit_0000095_2009-11-18_15:31</egov_it:identificatore> <egov_it:oraregistrazione tempo="egov_it_spc">2009-11-18t15:31:47.358</egov_it: OraRegistrazione> <egov_it:riferimentomessaggio>comune_comunespcoopit_0000094_2009-11-18_15:31</ egov_it:riferimentomessaggio> </egov_it:messaggio>
25 / 57 <egov_it:profilotrasmissione confermaricezione="false" inoltro="egov_it_alpiuunavolta "/> </egov_it:intestazionemessaggio> <egov_it:listatrasmissioni> <egov_it:trasmissione> <egov_it:origine> <egov_it:identificativoparte tipo="spc">centroanagrafico</egov_it: IdentificativoParte> </egov_it:origine> <egov_it:destinazione> <egov_it:identificativoparte tipo="spc">comune</egov_it:identificativoparte> </egov_it:destinazione> <egov_it:oraregistrazione tempo="egov_it_spc">2009-11-18t15:31:47.358</egov_it: OraRegistrazione> </egov_it:trasmissione> </egov_it:listatrasmissioni> </egov_it:intestazione> </soap:header> <soap:body> <ns2:statofamiglia xmlns:ns2="http://www.openspcoop.org/example"><nome>mario</nome>< cognome>rossi</cognome><codicefiscale>dddfff22g22g222g</codicefiscale><nascita >1980-01-01Z</nascita><statoCivile>Celibe</statoCivile></ns2:statoFamiglia> </soap:body> </soap:envelope> 0 Controllando il file openspcoop.log possiamo verificare il corretto funzionamento della porta: ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T15:29:25.889> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000092_2009-11-18_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 <2009-11-18T15:29:25.960> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000092_2009-11-18_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_0000092_2009-11-18_15:29] in corso (location: http://localhost:8080/openspcoop/pa)... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T15:29:26.161> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Ricevuto messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000092_2009-11-18_15 :29] inviata dalla parte mittente [SPC/Comune] CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T15:29:26.169> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci]... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T15:29:26.213> (infoopenspcoop)
26 / 57 IDeGov:Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) CentroAnagraficoSPCoopIT.Sbustamento <2009-11-18T15:29:26.220> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Ricevuta Busta EGov [Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T15:29:26.235> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29 SA:RichiestaStatoFamiglia_SA FR: SPC/Comune -> S:SPC/CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29] in corso (location: http://localhost:8080/tutorial/sincrono)... CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T15:29:26.528> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29 SA:RichiestaStatoFamiglia_SA FR: SPC/Comune -> S:SPC/CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Messaggio applicativo con ID [Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [RichiestaStatoFamiglia_SA] mediante connettore [http] (location: http://localhost:8081/tutorial/sincrono) con codiceconsegna: 200 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T15:29:26.599> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/RichiestaStatoFamiglia_Acquisisci Generato messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000093_2009-11-18_15:29] inviato alla parte destinataria [SPC/Comune] ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T15:29:26.616> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29 PD:SPCComune/SPCCentroAnagrafico/ SPCRichiestaStatoFamiglia SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ RichiestaStatoFamiglia_Acquisisci Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: http://localhost:8080/openspcoop/pa) con codiceconsegna: 200 ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T15:29:26.713> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000092_2009-11-18_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_0000093_2009-11-18_15:29] inviata dalla parte mittente [SPC/CentroAnagrafico] ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T15:29:26.735> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000092_2009-11-18_15:29 PD:SPCComune/SPCCentroAnagrafico/ SPCRichiestaStatoFamiglia SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ RichiestaStatoFamiglia_Acquisisci
27 / 57 Ricevuta Busta EGov [CentroAnagrafico_CentroAnagraficoSPCoopIT_0000093_2009-11-18_15:29] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T15:29:26.738> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000092_2009-11-18_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 6 Stampa Documento (AsincronoAsimmetrico) 6.1 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 (scarica definitorio.xsd) Contiene le definizioni dei tipi di dato utilizzati per la codifica dei messaggi. <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:so="http://www.openspcoop.org/example" xmlns:xs="http://www.w3.org/2001/ XMLSchema" xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www. openspcoop.org/example"> <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"> <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 (scarica concettuale.wsdl). Specifica l interfaccia completa dell accordo di servizio indipendentemente da chi espone i servizi.
28 / 57 <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" 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 Erogatore (scarica logicoerogatore.wsdl). Specifica l interfaccia di servizi e operazioni esposte dal soggetto erogatore. <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" 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">
29 / 57 </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 (scarica implementativoerogatore.wsdl). accesso per servizi e operazioni esposti dal soggetto erogatore. Specifica i dettagli di protocollo e porti di <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" location="logicoerogatore.wsdl "> </wsdl:import> <wsdl:binding name="stampadocumentobinding" type="spc:stampadocumento"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <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="http://localhost:8080/openspcoop/pd/spccomune/ SPCCentroAnagrafico/SPCStampaDocumento"/> </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.
30 / 57 6.2 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 21: 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 22: Dati Servizio dell Accordo 3. Specifichiamo le azioni del Servizio: le azioni del Servizio corrispondono alle Operation specificate nel WSDL Stampa Stato Tabella 23: Dati delle azioni del servizio 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 l Accordo di Servizio Parte Specifica: 5. Aggiungere il soggetto fruitore alla lista dei soggetti che possono fruire del servizio: avendo attiva di default l autenticazione SPCoop dobbiamo aggiungere il soggetto Comune ai fruitori del servizio StampaDocumento 6. Aggiungere nelle politiche sicurezza il servizio applicativo autorizzato ad invocare il servizio. Questo passaggio è essenziale ai fini dell autenticazione da parte del servizio applicativo in fase di invocazione della porta delegata.
31 / 57 Soggetto SPCoop Accordo Servizio Parte Comune Servizio WSDL Implementativo Erogatore SPC/CentroAnagrafico AS_StampaDocumento StampaDocumento implementazioneerogatore.wsdl Tabella 24: Dati Accordo di Servizio Parte Specifica (a) Dall elenco dei fruitori del servizio, in corrispondenza del soggetto Comune, nella colonna politiche sicurezza 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. 7. Aggiungere la Porta Applicativa: aggiungiamo al soggetto SPC/CentroAnagrafico la porta applicativa che si occuperà dello sbustamento delle richieste e-gov dei fruitori e di consegnarle al servizio applicativo erogato. Validazione Contenuti Stateless Gestione Body Gestione Manifest Accordo di Servizio Parte Specifica Azione StampaDocumento_PA disabilitato default none abilitato StampaDocumento Stampa Tabella 25: Dati Porta Applicativa 8. Aggiungere il Servizio Applicativo con i dati riportati in Tabella 26: Soggetto SPCoop Credenziale d accesso Modalità fault StampaDocumento_SA CentroAnagrafico nessuna soap Tabella 26: Dati Servizio Applicativo 9. Impostare i parametri di invocazione del Servizio Applicativo con i valori riportati in Tabella 27. Questi dati serviranno alla PdD per la consegna della richiesta al servizio applicativo erogatore. 10. Impostare i parametri di invocazione per la Risposta Asincrona per la consegna della richiesta stato (correlata) con i valori riportati in Tabella 28. 11. Associare alla Porta Applicativa il Servizio Applicativo.
32 / 57 Sbustamento Get message Connettore abilitato Url connettore Tipo credenziali d accesso StampaDocumento_SA no disabilitato si http://localhost:8081/tutorial/asincronoasimmetrico none Tabella 27: Dati invocazione Servizio Applicativo Sbustamento Get message Connettore abilitato Url connettore Tipo credenziali d accesso StampaDocumento_SA no disabilitato si http://localhost:8081/tutorial/asincronoasimmetrico none Tabella 28: Dati invocazione Risposta Asincrona 6.3 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 SPCoop ritornato dalla richiesta. In CXF un modo per reperire l id SPCoop dall header SPCoopID 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)); riferimento = headers.get("spcoopid").get(0); } } public void handlefault(message messageparam) { } a questo punto non resta che aggiungere questo parametro nella successiva risposta con nome SPCoopRiferimentoMessaggio inserendolo ad esempio nella url di invocazione.
33 / 57 6.4 Test e verifica Seguendo le istruzioni fornite con i sorgenti per la configurazione, compilazione ed esecuzione degli esempi, avviamo il test per il servizio StampaDocumento. Vedremo, lato client, che verrà effettuata una richiesta e successivamente una serie di interrogazioni finché non viene restituita la risposta applicativa attesa. Inizialmente il client invoca l azione Stampa (Messaggio 1 in figura) POST /openspcoop/pd/spccomune/spccentroanagrafico/spcstampadocumento/stampa HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic Q29tdW5lX1NBOjEyMzQ1Ng== Accept: */* User-Agent: Apache CXF 2.2.2 Cache-Control: no-cache Pragma: no-cache Host: localhost:8080 Connection: keep-alive Content-Length: 268 <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:body><ns2: stampadocumento xmlns:ns2="http://www.openspcoop.org/example" CF="DDDFFF22G22G222G">< codicedocumento>cartaidentita</codicedocumento></ns2:stampadocumento></soap:body></soap: Envelope> La risposta ricevuta dal servizio applicativo fruitore (Messaggio 6 in figura) sarà: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)/ JBossWeb-2.0 SPCoopTipoMittente: SPC SPCoopTipoDestinatario: SPC SPCoopAzione: Stampa SPCoopDestinatario: CentroAnagrafico SPCoopID: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 SPCoopCollaborazione: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 SPCoopServizio: StampaDocumento SPCoopTipoServizio: SPC SPCoopMittente: Comune Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Wed, 18 Nov 2009 17:16:40 GMT 154
34 / 57 <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <ns2:presaconsegnastampa xmlns:ns2="http://www.openspcoop.org/example"> <idstampa>249274557477864305</idstampa> <stimacompletamento>2009-11-18+01:00</stimacompletamento> </ns2:presaconsegnastampa> </soap:body> </soap:envelope> 0 Il servizio applicativo preleva il valore SPCoopID, in questo caso con valore Comune_ComuneSPCoopIT_0000135_2009-11- 18_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. La richiesta stato (Messaggio 7 in figura) sarà: POST /openspcoop/pd/spccomune/spccentroanagrafico/spcstampadocumento/stato? SPCoopRiferimentoMessaggio=Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic Q29tdW5lX1NBOjEyMzQ1Ng== Accept: */* User-Agent: Apache CXF 2.2.2 Cache-Control: no-cache Pragma: no-cache Host: localhost:8080 Connection: keep-alive Content-Length: 214 <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <ns2:statodocumento xmlns:ns2="http://www.openspcoop.org/example">249274557477864305</ns2 :statodocumento> </soap:body> </soap:envelope> Se la risposta non è ancora disponibile, il servizio applicativo riceverà la risposta (Messaggio 12 in figura): HTTP/1.1 200 OK Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)/ JBossWeb-2.0 SPCoopTipoMittente: SPC SPCoopTipoDestinatario: SPC SPCoopAzione: Stato SPCoopDestinatario: CentroAnagrafico SPCoopID: Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 SPCoopRiferimentoMessaggio: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 SPCoopCollaborazione: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 SPCoopServizio: StampaDocumento SPCoopTipoServizio: SPC SPCoopMittente: Comune Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Wed, 18 Nov 2009 17:16:40 GMT e2 <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
35 / 57 <soap:body> <ns2:esito xmlns:ns2="http://www.openspcoop.org/example">incompleto</ns2:esito> </soap:body> </soap:envelope> 0 Quando la risposta sarà disponibile, il fruitore riceverà la seguente risposta (Messaggio 12 in figura): HTTP/1.1 200 OK Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)/ JBossWeb-2.0 SPCoopTipoMittente: SPC SPCoopTipoDestinatario: SPC SPCoopAzione: Stato SPCoopDestinatario: CentroAnagrafico SPCoopID: Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 SPCoopRiferimentoMessaggio: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 SPCoopCollaborazione: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 SPCoopServizio: StampaDocumento SPCoopTipoServizio: SPC SPCoopMittente: Comune Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Wed, 18 Nov 2009 17:16:45 GMT e2 <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <ns2:esito xmlns:ns2="http://www.openspcoop.org/example">completato</ns2:esito> </soap:body> </soap:envelope> 0 Controllando il file openspcoop.log possiamo verificare il corretto funzionamento della porta: ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T18:16:39.926> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stampa Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCStampaDocumento ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:39.959> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stampa Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16] in corso (location: http://localhost:8080/openspcoop/pa)... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:40.127> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa Ricevuto messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000135_2009-11-18_18 :16] inviata dalla parte mittente [SPC/Comune]
36 / 57 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:40.138> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa]... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:40.166> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) CentroAnagraficoSPCoopIT.Sbustamento <2009-11-18T18:16:40.179> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa Ricevuta Busta EGov [Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T18:16:40.193> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 SA:StampaDocumento_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/StampaDocumento_Stampa Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16] in corso (location: http://localhost:8081/tutorial/asincronoasimmetrico)... CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T18:16:40.207> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 SA:StampaDocumento_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/StampaDocumento_Stampa Messaggio applicativo con ID [Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [StampaDocumento_SA] mediante connettore [http] (location: http://localhost:8081/tutorial/asincronoasimmetrico) con codiceconsegna: 200 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:40.220> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa Generato messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000136_2009-11-18_18:16] inviato alla parte destinataria [SPC/Comune] ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:40.235> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stampa Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: http://localhost:8080/openspcoop/pa) con codiceconsegna: 200 ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:40.312> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/
37 / 57 SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stampa Ricevuto messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000136_2009-11-18_18:16] inviata dalla parte mittente [SPC/CentroAnagrafico] ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T18:16:40.322> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stampa Ricevuta Busta EGov [CentroAnagrafico_CentroAnagraficoSPCoopIT_0000136_2009-11-18_18:16] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T18:16:40.355> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stampa Validazione ricevuta di una richiesta asincrona asimmetrica ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T18:16:40.361> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000135_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stampa Consegna contenuto applicativo, della ricevuta di una richiesta asincrona asimmetrica, effettuata ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T18:16:40.595> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCStampaDocumento ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:40.626> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16] in corso (location: http://localhost:8080/openspcoop/pa)... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:40.773> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Ricevuto messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000137_2009-11-18_18 :16] inviata dalla parte mittente [SPC/Comune] CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:40.779> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato]...
38 / 57 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:40.801> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) CentroAnagraficoSPCoopIT.Sbustamento <2009-11-18T18:16:40.804> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Ricevuta Busta EGov [Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T18:16:40.811> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 SA:StampaDocumento_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/StampaDocumento_Stato Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16] in corso (location: http://localhost:8081/tutorial/asincronoasimmetrico)... CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T18:16:40.819> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 SA:StampaDocumento_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/StampaDocumento_Stato Messaggio applicativo con ID [Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [StampaDocumento_SA] mediante connettore [http] (location: http://localhost:8081/tutorial/asincronoasimmetrico) con codiceconsegna: 200 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:40.828> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa Generato messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000138_2009-11-18_18:16] inviato alla parte destinataria [SPC/Comune] ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:40.841> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: http://localhost:8080/openspcoop/pa) con codiceconsegna: 200 ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:40.965> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuto messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000138_2009-11-18_18:16] inviata dalla parte mittente [SPC/CentroAnagrafico] ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T18:16:40.975> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/
39 / 57 StampaDocumento_Stato Ricevuta Busta EGov [CentroAnagrafico_CentroAnagraficoSPCoopIT_0000138_2009-11-18_18:16] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T18:16:40.977> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Validazione ricevuta di una risposta asincrona asimmetrica contenente l esito della richiesta stato ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T18:16:40.983> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000137_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Consegna contenuto applicativo, della ricevuta di una risposta asincrona asimmetrica, effettuata ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T18:16:42.121> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCStampaDocumento ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:42.181> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16] in corso (location: http://localhost:8080/openspcoop/pa)... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:42.381> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Ricevuto messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000139_2009-11-18_18 :16] inviata dalla parte mittente [SPC/Comune] CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:42.388> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato]... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:42.434> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop)
40 / 57 CentroAnagraficoSPCoopIT.Sbustamento <2009-11-18T18:16:42.440> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Ricevuta Busta EGov [Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T18:16:42.457> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 SA:StampaDocumento_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/StampaDocumento_Stato Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16] in corso (location: http://localhost:8081/tutorial/asincronoasimmetrico)... CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T18:16:42.465> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 SA:StampaDocumento_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/StampaDocumento_Stato Messaggio applicativo con ID [Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [StampaDocumento_SA] mediante connettore [http] (location: http://localhost:8081/tutorial/asincronoasimmetrico) con codiceconsegna: 200 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:42.473> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa Generato messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000140_2009-11-18_18:16] inviato alla parte destinataria [SPC/Comune] ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:42.487> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: http://localhost:8080/openspcoop/pa) con codiceconsegna: 200 ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:42.580> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuto messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000140_2009-11-18_18:16] inviata dalla parte mittente [SPC/CentroAnagrafico] ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T18:16:42.588> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuta Busta EGov [CentroAnagrafico_CentroAnagraficoSPCoopIT_0000140_2009-11-18_18:16] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T18:16:42.590> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/
41 / 57 StampaDocumento_Stato Validazione ricevuta di una risposta asincrona asimmetrica contenente l esito della richiesta stato ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T18:16:42.594> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000139_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Consegna contenuto applicativo, della ricevuta di una risposta asincrona asimmetrica, effettuata ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T18:16:43.728> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCStampaDocumento ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:43.762> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16] in corso (location: http://localhost:8080/openspcoop/pa)... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:43.903> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Ricevuto messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000141_2009-11-18_18 :16] inviata dalla parte mittente [SPC/Comune] CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:43.912> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato]... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:43.933> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) CentroAnagraficoSPCoopIT.Sbustamento <2009-11-18T18:16:43.937> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Ricevuta Busta EGov [Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T18:16:43.945> (infospcoop
42 / 57 ) IDeGov:Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 SA:StampaDocumento_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/StampaDocumento_Stato Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16] in corso (location: http://localhost:8081/tutorial/asincronoasimmetrico)... CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T18:16:43.953> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 SA:StampaDocumento_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/StampaDocumento_Stato Messaggio applicativo con ID [Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [StampaDocumento_SA] mediante connettore [http] (location: http://localhost:8081/tutorial/asincronoasimmetrico) con codiceconsegna: 200 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:43.964> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa Generato messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000142_2009-11-18_18:16] inviato alla parte destinataria [SPC/Comune] ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:43.992> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: http://localhost:8080/openspcoop/pa) con codiceconsegna: 200 ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:44.095> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuto messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000142_2009-11-18_18:16] inviata dalla parte mittente [SPC/CentroAnagrafico] ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T18:16:44.106> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuta Busta EGov [CentroAnagrafico_CentroAnagraficoSPCoopIT_0000142_2009-11-18_18:16] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T18:16:44.111> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Validazione ricevuta di una risposta asincrona asimmetrica contenente l esito della richiesta stato ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T18:16:44.114> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000141_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato
43 / 57 Consegna contenuto applicativo, della ricevuta di una risposta asincrona asimmetrica, effettuata ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T18:16:45.233> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [Comune_SA] ) Comune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCStampaDocumento ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:45.264> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16] in corso (location: http://localhost:8080/openspcoop/pa)... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:45.376> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Ricevuto messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000143_2009-11-18_18 :16] inviata dalla parte mittente [SPC/Comune] CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:45.382> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato]... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:45.402> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) CentroAnagraficoSPCoopIT.Sbustamento <2009-11-18T18:16:45.406> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stato Ricevuta Busta EGov [Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T18:16:45.414> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 SA:StampaDocumento_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/StampaDocumento_Stato Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16] in corso (location: http://localhost:8081/tutorial/asincronoasimmetrico)... CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-18T18:16:45.422> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 SA:StampaDocumento_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/StampaDocumento_Stato
44 / 57 Messaggio applicativo con ID [Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [StampaDocumento_SA] mediante connettore [http] (location: http://localhost:8081/tutorial/asincronoasimmetrico) con codiceconsegna: 200 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-18T18:16:45.432> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/StampaDocumento_Stampa Generato messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000144_2009-11-18_18:16] inviato alla parte destinataria [SPC/Comune] ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:45.446> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: http://localhost:8080/openspcoop/pa) con codiceconsegna: 200 ComuneSPCoopIT.InoltroBusteEGov <2009-11-18T18:16:45.526> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuto messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000144_2009-11-18_18:16] inviata dalla parte mittente [SPC/CentroAnagrafico] ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T18:16:45.541> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Ricevuta Busta EGov [CentroAnagrafico_CentroAnagraficoSPCoopIT_0000144_2009-11-18_18:16] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute ComuneSPCoopIT.SbustamentoRisposte <2009-11-18T18:16:45.542> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Validazione ricevuta di una risposta asincrona asimmetrica contenente l esito della richiesta stato ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-18T18:16:45.548> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000143_2009-11-18_18:16 PD:SPCComune/SPCCentroAnagrafico/ SPCStampaDocumento SA:Comune_SA FR:SPC/Comune -> S:SPC/CentroAnagrafico_SPC/ StampaDocumento_Stato Consegna contenuto applicativo, della ricevuta di una risposta asincrona asimmetrica, effettuata
45 / 57 7 Identifica Soggetto (AsincronoSimmetrico) 7.1 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 (scarica definitorio.xsd) Contiene le definizioni dei tipi di dato utilizzati per la codifica dei messaggi. <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:so="http://www.openspcoop.org/example" xmlns:xs="http://www.w3.org/2001/ XMLSchema" xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www. openspcoop.org/example"> <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"/> <xs:element name="risultatoresponse" type="xs:string"/> </xs:schema> WSDL Concettuale (scarica concettuale.wsdl). Specifica l interfaccia completa dell accordo di servizio indipendentemente da chi espone i servizi. <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" location="definitorio.xsd"> </wsdl:import> <wsdl:message name="risultatoidentificarequest"> <wsdl:part name="identificarequestpart" element="spc:risultato"> </wsdl:part> </wsdl:message>
46 / 57 <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: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 Erogatore (scarica logicoerogatore.wsdl). Specifica l interfaccia di servizi e operazioni esposte dal soggetto erogatore. <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" 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 (scarica logicofruitore.wsdl). Specifica l interfaccia di servizi e operazioni esposte dal soggetto fruitore. <?xml version="1.0" encoding="utf-8"?>
47 / 57 <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" 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 (scarica implementativoerogatore.wsdl). accesso per servizi e operazioni esposti dal soggetto erogatore. Specifica i dettagli di protocollo e porti di <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" location="logicoerogatore.wsdl "> </wsdl:import> <wsdl:binding name="identificasoggettobinding" type="spc:identificasoggetto"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <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="http://localhost:8080/openspcoop/pd/spccomune/ SPCCentroAnagrafico/SPCIdentificaSoggetto/Cerca"/> </wsdl:port> </wsdl:service> </wsdl:definitions> WSDL Implementativo Fruitore (scarica implementativofruitore.wsdl). Specifica i dettagli di protocollo e porti di accesso per servizi e operazioni esposti dal soggetto fruitore. <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://www.openspcoop.org/example" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:spc=" http://www.openspcoop.org/example" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:import namespace="http://www.openspcoop.org/example" location="logicofruitore.wsdl ">
48 / 57 </wsdl:import> <wsdl:binding name="esitoidentificazionebinding" type="spc:esitoidentificazione"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <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="http://localhost:8080/openspcoop/pd/spccentroanagrafico/ SPCComune/SPCEsitoIdentificazione/Risultato"/> </wsdl:port> </wsdl:service> </wsdl:definitions> 7.2 Configurazione Porta di Dominio Una volta in possesso dei descrittori del servizio, possiamo procedere con la configurazione della porta di dominio. 1. Creiamo i Servizi Applicativi erogatore e fruitore con i valori riportati in Tabella 29 e Tabella 30. IdentificaSoggetto_SA Soggetto SPCoop CentroAnagrafico Credenziale d accesso basic Utente IdentificaSoggetto_SA Password 123456 Modalità fault soap Tabella 29: Dati Servizio Applicativo Erogatore IdentificaSoggettoComune_SA Soggetto SPCoop Comune Credenziale d accesso basic Utente IdentificaSoggettoComune_SA Password 123456 Modalità fault soap Tabella 30: Dati Servizio Applicativo Fruitore 2. Impostare i parametri di invocazione del Servizio Applicativo con i valori riportati in Tabella 31. Impostare la Risposta Asincrona per il Servizio Applicativo fruitore con i valori riportati in Tabella 32. 3. Creazione dell 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 34 e Tabella 35
49 / 57 Sbustamento Get message Connettore abilitato Url connettore Tipo credenziali d accesso IdentificaSoggetto_SA no disabilitato si http://localhost:8081/tutorial/asincronosimmetrico none Tabella 31: Dati invocazione Servizio Applicativo erogatore Sbustamento Get message Connettore abilitato Url connettore Tipo credenziali d accesso IdentificaSoggettoComune_SA no disabilitato si http://localhost:9090/tutorial/asincronosimmetrico none Tabella 32: Dati risposta asincrona Servizio Applicativo fruitore Referente WSDL Definitorio WSDL Concettuale WSDL Logico Fruitore WSDL Logico Erogatore AS_IdentificaSoggetto SPC/CentroAnagrafico definitorio.xsd concettuale.wsdl logicofruitore.wsdl logicoerogatore.wsdl Tabella 33: Dati Accordo di Servizio Parte Comune Azione Profilo IdentificaSoggetto Cerca asincronosimmetrico Tabella 34: Dati Servizio Asincrono Simmetrico nell accordo di servizio Azione Profilo Correlata al servizio Correlata all azione EsitoIdentificazione Risultato asincronosimmetrico IdentificaSoggetto Cerca Tabella 35: Dati Servizio Asincrono Simmetrico Correlato nell accordo di servizio
50 / 57 Dopo aver inserito i due servizi e le relative azioni, l interfaccia mostra la seguente schermata 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 36 e in Tabella 37: Soggetto SPCoop Accordo Servizio Servizio WSDL Implementativo Erogatore SPC/CentroAnagrafico AS_IdentificaSoggetto IdentificaSoggetto implementazioneerogatore.wsdl Tabella 36: Dati Accordo di Servizio Parte Specifica Soggetto SPCoop Accordo Servizio Servizio WSDL Implementativo Fruitore SPC/Comune AS_IdentificaSoggetto EsitoIdentificazione implementazionefruitore.wsdl Tabella 37: 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 SPCoop dobbiamo aggiungere il soggetto Comune ai fruitori del servizio IdentificaSoggetto e il soggetto CentroAnagrafico ai fruitori del servizio EsitoIdentificazione 7. Aggiungere nelle politiche sicurezza 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 Comune, nella colonna politiche sicurezza 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 (c) Dall elenco dei fruitori del servizio EsitoIdentificazione, in corrispondenza del soggetto CentroAnagrafico, nella colonna politiche sicurezza selezionare visualizza, quindi il pulsante Aggiungi
51 / 57 (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. 8. Aggiungere la Porta Applicativa: aggiungiamo al soggetto SPC/CentroAnagrafico la porta applicativa che si occuperà dello sbustamento delle richieste e-gov dei fruitori e di consegnarle al servizio applicativo erogato. Validazione Contenuti Gestione Body Gestione Manifest Servizio SPCoop Azione IdentificaSoggetto_PA disabilitato none abilitato IdentificaSoggetto Cerca Tabella 38: Dati Porta Applicativa 9. Associare alla Porta Applicativa il Servizio Applicativo erogatore 7.3 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 SPCoopID della richiesta. 7.4 Test 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. Inizialmente il client del fruitore invoca l azione Cerca (Messaggio 1 in figura) POST /openspcoop/pd/spccomune/spccentroanagrafico/spcidentificasoggetto/cerca HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic SWRlbnRpZmljYVNvZ2dldHRvQ29tdW5lX1NBOjEyMzQ1Ng== Accept: */*
52 / 57 User-Agent: Apache CXF 2.2.2 Cache-Control: no-cache Pragma: no-cache Host: localhost:8080 Connection: keep-alive Content-Length: 277 <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <ns2:identifica xmlns:ns2="http://www.openspcoop.org/example"> <tipodocumento>cartaidentita</tipodocumento> <codicedocumento>aabbccddee</codicedocumento> </ns2:identifica> </soap:body> </soap:envelope> La Porta di Dominio consegna la richiesta al servizio applicativo erogatore (Messaggio 3 in figura) POST /tutorial/asincronosimmetrico HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" SPCoopTipoMittente: SPC SPCoopTipoDestinatario: SPC SPCoopAzione: Cerca SPCoopDestinatario: CentroAnagrafico SPCoopID: Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 SPCoopCollaborazione: Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 SPCoopServizio: IdentificaSoggetto SPCoopTipoServizio: SPC SPCoopMittente: Comune User-Agent: Java/1.5.0_11 Host: localhost:8081 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive Content-Length: 315 <?xml version="1.0" encoding="utf-8"?><soap:envelope xmlns:soap="http://schemas.xmlsoap.org /soap/envelope/"> <soap:body> <ns2:identifica xmlns:ns2="http://www.openspcoop.org/example"> <tipodocumento>cartaidentita</tipodocumento> <codicedocumento>aabbccddee</codicedocumento> </ns2:identifica> </soap:body> </soap:envelope> Il servizio applicativo erogatore invoca il servizio correlato per l invio della risposta (Messaggio 7 in figura) POST /openspcoop/pd/spccentroanagrafico/spccomune/spcesitoidentificazione/risultato? SPCoopRiferimentoMessaggio=Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic SWRlbnRpZmljYVNvZ2dldHRvX1NBOjEyMzQ1Ng== Accept: */* User-Agent: Apache CXF 2.2.2 Cache-Control: no-cache Pragma: no-cache Host: localhost:8080
53 / 57 Connection: keep-alive Content-Length: 338 <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <ns2:risultato xmlns:ns2="http://www.openspcoop.org/example"> <nome>mario</nome> <cognome>rossi</cognome> <codicefiscale>dddfff22g22g222g</codicefiscale> <nascita>1980-01-01z</nascita> <statocivile>celibe</statocivile> </ns2:risultato> </soap:body> </soap:envelope> La Porta di Dominio consegna la risposta asincrona al servizio applicativo fruitore (Messaggio 9 in figura) POST /tutorial/asincronosimmetrico HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" SPCoopTipoMittente: SPC SPCoopTipoDestinatario: SPC SPCoopAzione: Risultato SPCoopDestinatario: Comune SPCoopServizioApplicativo: IdentificaSoggettoComune_SA SPCoopID: CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 SPCoopCollaborazione: Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 SPCoopServizio: EsitoIdentificazione SPCoopTipoServizio: SPC SPCoopMittente: CentroAnagrafico User-Agent: Java/1.5.0_11 Host: localhost:9090 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive Content-Length: 376 <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <ns2:risultato xmlns:ns2="http://www.openspcoop.org/example"> <nome>mario</nome> <cognome>rossi</cognome> <codicefiscale>dddfff22g22g222g</codicefiscale> <nascita>1980-01-01z</nascita> <statocivile>celibe</statocivile> </ns2:risultato> </soap:body> </soap:envelope> Controllando il file openspcoop.log possiamo verificare il corretto funzionamento della porta: ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-19T12:00:02.098> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 PD:SPCComune/SPCCentroAnagrafico/ SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [ IdentificaSoggettoComune_SA] ) IdentificaSoggettoComune_SA verso la porta delegata SPCComune/SPCCentroAnagrafico/SPCIdentificaSoggetto
54 / 57 ComuneSPCoopIT.InoltroBusteEGov <2009-11-19T12:00:02.138> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 PD:SPCComune/SPCCentroAnagrafico/ SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00] in corso (location: http://localhost:8080/openspcoop/pa)... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-19T12:00:02.303> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Ricevuto messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000184_2009-11-19_12 :00] inviata dalla parte mittente [SPC/Comune] CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-19T12:00:02.335> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca]... CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-19T12:00:02.369> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00] FR[SPC/Comune]->ER[SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca]: autorizzato (client-auth disabilitato nella porta di dominio PddOpenSPCoop) CentroAnagraficoSPCoopIT.Sbustamento <2009-11-19T12:00:02.373> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Ricevuta Busta EGov [Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-19T12:00:02.438> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 SA:IdentificaSoggetto_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Invio Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00] in corso (location: http://localhost:8081/tutorial/asincronosimmetrico)... CentroAnagraficoSPCoopIT.ConsegnaContenutiApplicativi <2009-11-19T12:00:04.727> (infospcoop ) IDeGov:Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 SA:IdentificaSoggetto_SA FR:SPC/ Comune -> S:SPC/CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Messaggio applicativo con ID [Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00], generato dal mittente [SPC/Comune], consegnato al servizio applicativo [IdentificaSoggetto_SA] mediante connettore [http] (location: http://localhost:8081/tutorial/asincronosimmetrico ) con codiceconsegna: 200 CentroAnagraficoSPCoopIT.RicezioneBusteEGovWS <2009-11-19T12:00:04.755> (infospcoop) IDeGov :Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Generato messaggio SPCoop con identificativo [
55 / 57 CentroAnagrafico_CentroAnagraficoSPCoopIT_0000185_2009-11-19_12:00] inviato alla parte destinataria [SPC/Comune] ComuneSPCoopIT.InoltroBusteEGov <2009-11-19T12:00:04.770> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 PD:SPCComune/SPCCentroAnagrafico/ SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00] inviato alla parte destinataria [SPC/CentroAnagrafico] mediante connettore [http] ( location: http://localhost:8080/openspcoop/pa) con codiceconsegna: 200 ComuneSPCoopIT.InoltroBusteEGov <2009-11-19T12:00:04.905> (infospcoop) IDeGov: Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 PD:SPCComune/SPCCentroAnagrafico/ SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Ricevuto messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000185_2009-11-19_12:00] inviata dalla parte mittente [SPC/CentroAnagrafico] ComuneSPCoopIT.SbustamentoRisposte <2009-11-19T12:00:04.914> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 PD:SPCComune/SPCCentroAnagrafico/ SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Ricevuta Busta EGov [CentroAnagrafico_CentroAnagraficoSPCoopIT_0000185_2009-11-19_12:00] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute ComuneSPCoopIT.SbustamentoRisposte <2009-11-19T12:00:04.931> (infoopenspcoop) IDeGov: Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 PD:SPCComune/SPCCentroAnagrafico/ SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Validazione ricevuta di una richiesta asincrona simmetrica ComuneSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-19T12:00:04.969> (infoopenspcoop) IDeGov:Comune_ComuneSPCoopIT_0000184_2009-11-19_12:00 PD:SPCComune/SPCCentroAnagrafico/ SPCIdentificaSoggetto SA:IdentificaSoggettoComune_SA FR:SPC/Comune -> S:SPC/ CentroAnagrafico_SPC/IdentificaSoggetto_Cerca Consegna contenuto applicativo, della ricevuta di una richiesta asincrona simmetrica, effettuata CentroAnagraficoSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-19T12:00:05.082> ( infoopenspcoop) IDeGov:CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12 :00 PD:SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR :SPC/CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Ricevuta richiesta di servizio dal Servizio Applicativo ( Basic Username: [ IdentificaSoggetto_SA] ) IdentificaSoggetto_SA verso la porta delegata SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione CentroAnagraficoSPCoopIT.InoltroBusteEGov <2009-11-19T12:00:05.159> (infospcoop) IDeGov: CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 PD: SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR:SPC/ CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Invio Messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00] in corso (location: http://localhost:8080/openspcoop/pa)...
56 / 57 ComuneSPCoopIT.RicezioneBusteEGovWS <2009-11-19T12:00:05.338> (infospcoop) IDeGov: CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 FR:SPC/ CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Ricevuto messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00] inviata dalla parte mittente [SPC/CentroAnagrafico] ComuneSPCoopIT.RicezioneBusteEGovWS <2009-11-19T12:00:05.346> (infoopenspcoop) IDeGov: CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 FR:SPC/ CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00] FR[SPC/ CentroAnagrafico]->ER[SPC/Comune_SPC/EsitoIdentificazione_Esito]... ComuneSPCoopIT.RicezioneBusteEGovWS <2009-11-19T12:00:05.378> (infoopenspcoop) IDeGov: CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 FR:SPC/ CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Controllo Autorizzazione[spcoop] messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00] FR[SPC/ CentroAnagrafico]->ER[SPC/Comune_SPC/EsitoIdentificazione_Esito]: autorizzato (client- auth disabilitato nella porta di dominio PddOpenSPCoop) ComuneSPCoopIT.Sbustamento <2009-11-19T12:00:05.381> (infoopenspcoop) IDeGov: CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 FR:SPC/ CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Ricevuta Busta EGov [CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute ComuneSPCoopIT.ConsegnaContenutiApplicativi <2009-11-19T12:00:05.386> (infospcoop) IDeGov: CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 SA: IdentificaSoggettoComune_SA FR:SPC/CentroAnagrafico -> S:SPC/Comune_SPC/ EsitoIdentificazione_Esito Invio Messaggio SPCoop con identificativo [ CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00] in corso (location: http://localhost:9090/tutorial/asincronosimmetrico)... ComuneSPCoopIT.ConsegnaContenutiApplicativi <2009-11-19T12:00:05.472> (infospcoop) IDeGov: CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 SA: IdentificaSoggettoComune_SA FR:SPC/CentroAnagrafico -> S:SPC/Comune_SPC/ EsitoIdentificazione_Esito Messaggio applicativo con ID [CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19 _12:00], generato dal mittente [SPC/CentroAnagrafico], consegnato al servizio applicativo [IdentificaSoggettoComune_SA] mediante connettore [http] (location: http:// localhost:9090/tutorial/asincronosimmetrico) con codiceconsegna: 200 ComuneSPCoopIT.RicezioneBusteEGovWS <2009-11-19T12:00:05.481> (infospcoop) IDeGov: CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 FR:SPC/ CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Generato messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000187_2009-11-19_12 :00] inviato alla parte destinataria [SPC/CentroAnagrafico] CentroAnagraficoSPCoopIT.InoltroBusteEGov <2009-11-19T12:00:05.494> (infospcoop) IDeGov:
57 / 57 CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 PD: SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR:SPC/ CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Messaggio SPCoop con identificativo [CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00] inviato alla parte destinataria [SPC/Comune] mediante connettore [http] ( location: http://localhost:8080/openspcoop/pa) con codiceconsegna: 200 CentroAnagraficoSPCoopIT.InoltroBusteEGov <2009-11-19T12:00:05.598> (infospcoop) IDeGov: CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 PD: SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR:SPC/ CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Ricevuto messaggio SPCoop con identificativo [Comune_ComuneSPCoopIT_0000187_2009-11-19_12 :00] inviata dalla parte mittente [SPC/Comune] CentroAnagraficoSPCoopIT.SbustamentoRisposte <2009-11-19T12:00:05.606> (infoopenspcoop) IDeGov:CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 PD: SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR:SPC/ CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Ricevuta Busta EGov [Comune_ComuneSPCoopIT_0000187_2009-11-19_12:00] con l attributo ALPIUUNAVOLTA nel profilo di trasmissione: busta salvata nell History delle buste ricevute CentroAnagraficoSPCoopIT.SbustamentoRisposte <2009-11-19T12:00:05.608> (infoopenspcoop) IDeGov:CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12:00 PD: SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR:SPC/ CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Validazione ricevuta di una risposta asincrona simmetrica CentroAnagraficoSPCoopIT.RicezioneContenutiApplicativiWS <2009-11-19T12:00:05.611> ( infoopenspcoop) IDeGov:CentroAnagrafico_CentroAnagraficoSPCoopIT_0000186_2009-11-19_12 :00 PD:SPCCentroAnagrafico/SPCComune/SPCEsitoIdentificazione SA:IdentificaSoggetto_SA FR :SPC/CentroAnagrafico -> S:SPC/Comune_SPC/EsitoIdentificazione_Esito Consegna contenuto applicativo, della ricevuta di una risposta asincrona simmetrica, effettuata