Linee guida per lo sviluppo dei proxy applicativi Infrastruttura per la Cooperazione Applicativa - C.A.R.T. – Linee guida per lo sviluppo dei proxy applicativi page 1/36 Linee guida per lo sviluppo dei proxy applicativi Indice 1 Introduzione.......................................................................................................... 5 1.1Scopo.............................................................................................................. 5 1.2Acronimi e Abbreviazioni.................................................................................. 5 2Linee guide per lo sviluppo dei proxy applicativi........................................................5 2.1 Meccanismo di pubblicazione e ricezione con “filtri”......................................... 9 3Linee guida per lo sviluppo di interfacce tra il Sistema Informativo Locale e il NAL .... 10 4Descrizione dell'interfaccia “Solefacade” del “framework” di Cooperazione Applicativa. 11 4.1Spedizione/pubblicazione di uno o piu messaggi SOAP conformi alla busta di eToscana............................................................................................................ 12 4.1.1SendTransactionalMessages(java.utils.Collection messages)...................... 12 4.1.2sendSynchronizeMessage(javax.xml.soap.SOAPMessage soapMessage ).... 13 4.2Costruzione di un messaggio SOAP secondo il formato della busta di eToscana...14 4.2.1buildEToscanaEnvelope(java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String messageId, java.lang.String timeStamp, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate)....... 15 4.2.2buildEToscanaEnvelope(java.util.Collection events, java.lang.String from, java.lang.String eventName)........................................................................... 15 4.2.3buildEToscanaEnvelope(java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate).................................................... 15 4.2.4buildEToscanaEnvelopes(java.util.HashMap events, java.lang.String from). 16 Descrizione: questo metodo è un po complesso in quanto richiede che tutti gli eventi, siano presenti un un HasMap, dove la chiave sia il nome dell'evento (esempio “Nascita”) mentre l'oggetto una lista di eventi da inserire in attachment nello stesso messaggio SOAP. Il secondo parametro, nominato “from” nel metodo, definisce il ricevente. Il metodo ritorna una lista di messaggi SOAP, dove ogni messaggio contiene tutti e solo gli eventi relativi alla stessa chiave presente nell'HashMap ed ogni messaggio ha inserito nel tag “From” il valore del ricevente passato come attributo. ................................................................... 16 4.2.6buildMessageRule(java.lang.String key, java.lang.String value, java.lang.String operator)............................................................................... 17 4.3Sistema di log del “framework” ...................................................................... 17 4.3.1logErrorMessage(java.lang.String origin, java.lang.String msg).................. 17 4.3.2logInfoMessage(java.lang.String origin, java.lang.String msg)................... 18 Descrizione: per esempio un Proxy potrà utilizzare il log del tipo “info” all'interno di un “try”. L'implementazione avviene richiamando il metodo statico come mostrato nell'esempio.................................................................................... 18 Esempio implementazione: ............................................................................ 18 4.4Attivazione dei ricevitori/sottoscrittori a cui il NAL è iscritto.............................. 18 4.4.1startReceivers()....................................................................................... 18 4.5Parser del messaggio SOAP conforme alla busta di eToscana ............................ 18 4.5.1getEToscanaEnvelopeTagValue(javax.xml.soap.SOAPMessage soapMessage, page 2/36 Linee guida per lo sviluppo dei proxy applicativi java.lang.String tag) ...................................................................................... 18 4.5.2getEToscanaEnvelopeAttachments(javax.xml.soap.SOAPMessage soapMessa ge) ................................................................................................................ 19 4.6Proprieta del “framework” (sole.properties)..................................................... 19 5Esempio di integrazione del “Framework” in una implementazione del “Proxy” ........21 5.1Spedizione/pubblicazione di un messaggio SOAP conforme alla busta di eToscana 21 5.2Ricezione/sottoscrizione di un messaggio SOAP............................................... 22 5.3Attivazione dei ricevitori/sottoscrittori............................................................. 23 6Java Documentation dell'interfaccia “Sole Facade” del “framework” di Cooperazione Applicativa............................................................................................................. 24 6.1it.sun.sole.common Class SoleFacade................................................................................................. 24 6.1.1SoleFacade............................................................................................. 29 6.1.2getLogger............................................................................................... 29 6.1.3logDebugMessage................................................................................... 30 6.1.4logInfoMessage....................................................................................... 30 6.1.5logErrorMessage..................................................................................... 30 6.1.6buildMessageRule................................................................................... 30 6.1.7sendTransactionalMessages..................................................................... 30 6.1.8sendSynchronizeMessage........................................................................ 31 6.1.9buildEToscanaEnvelope............................................................................ 31 6.1.10buildEToscanaEnvelope.......................................................................... 31 6.1.11buildEToscanaEnvelope.......................................................................... 32 6.1.12buildEToscanaEnvelope.......................................................................... 32 6.1.13buildEToscanaEnvelopes........................................................................ 32 6.1.14buildEToscanaEnvelopes........................................................................ 33 6.1.15buildEToscanaEnvelopes........................................................................ 33 6.1.16buildEToscanaEnvelopes........................................................................ 33 6.1.17buildEToscanaEnvelope.......................................................................... 34 6.1.18buildEToscanaEnvelope.......................................................................... 34 6.1.19buildEToscanaEnvelope.......................................................................... 35 6.1.20buildEToscanaEnvelope.......................................................................... 35 6.1.21getEToscanaEnvelopeTagValue............................................................... 36 6.1.22getEToscanaEnvelopeAttachments.......................................................... 36 6.1.23startReceivers........................................................................................ 36 6.1.24stopReceivers........................................................................................ 36 6.1.25getUniqueId.......................................................................................... 37 6.1.26getPublishEventsBySil............................................................................ 37 6.1.27getMessage........................................................................................... 37 6.1.28getAllMessages..................................................................................... 37 6.1.29storeMessage........................................................................................ 37 6.1.30storeMessage........................................................................................ 38 page 3/36 Linee guida per lo sviluppo dei proxy applicativi 1 Introduzione Questo documento contiene le linee guide per lo sviluppo delle componenti applicative centrali e dei proxy applicativi. 1.1 Scopo Scopo del documento è fornire tutte le informazioni necessarie al fine che ogni applicativo che userà il Framework CA potrà utilizzare al meglio le sue funzionalità. Questo documento è di interesse ai seguenti stakeholder: • Architect, per verificare che i rischi architetturali vengano adeguatamente affrontati • Gruppo di sviluppo coinvolto nella costruzione della soluzione “Proxy” (esempio: sanita, anagrafe) 1.2Acronimi e Abbreviazioni • Framework CA (Framework di Cooperazione Applicativa) : componente software presente sul CRIC e sul NAL. • CRIC: Centro Regionale per l'Interoperabilità e la Cooperazione Applicativa • NAL: Nodo Applicativo Locale • SIL: Sistema Informativo Locale • Proxy Anagrafe CA: componente software presente sul NAL. • Configuration Manager CA: componente software presente sul CRIC • Repository: componente software presente sul CRIC • JMS Provider: componente software presente sul CRIC • busta di eToscana = messaggio SOAP costruito secondo le specifiche definite nel documento "D10.2-DefinizioneBusta e-Toscana" • HTTP: Hyper Text Transfer Protocol • HTTPS: HTTP con supporto della sicurezza 2Linee guide per lo sviluppo dei proxy applicativi La soluzione architetturale adottata per la costituzione della piattaforma di Cooperazione Applicativa prevede l’ attivazione di un centro regionale per la interoperabilità e la cooperazione (CRIC) cui è demandato il compito di garantire i servizi ai soggetti della rete telematica regionale toscana e gli adeguati livelli di cooperazione ed interoperabilità con le altre pubbliche amministrazioni del Paese attraverso l’infrastruttura della Rete nazionale cui è connessa la RTRT e gli altri centri nazionali e regionali per la cooperazione e l’interoperabilità. I soggetti aderenti alla Rete telematica regionale e partecipanti al progetto eToscana in modo singolo o associato disporranno di un sistema, denominato Nodo Applicativo page 4/36 Linee guida per lo sviluppo dei proxy applicativi Locale (NAL), dedicato e finalizzato alla interazione con il Centro Regionale per la Interoperabilità e la Cooperazione applicativa. La funzione principale del NAL è quella di ricevere dati dal Sistema Informativo Locale, imbustare secondo la busta e-Toscana e spedire il messaggio per la pubblicazione dell’evento sul CRIC. Le due funzioni di spedizione e ricezione messaggi implicano che la porta sia in grado di: • Ricevere e pre-elaborare i messaggi in arrivo per il Sistema Informativo Locale • Creare i messaggi da spedire verso il CRIC • Fornire servizi di supporto alla cooperazione (es. log dello stato della comunicazion e ) e gestire funzionalità di sicurezza, protocollazione ecc. Il NAL agisce quindi sia come client , quando riceve informazioni e servizi, sia come server, quando fornisce informazioni e servizi. La natura dei messaggi scambiati è varia, tuttavia il formato dei messaggi è XML: l’elemento caratterizzante i messaggi per la cooperazione applicativa è infatti la completa definizione del contenuto e del formato di codifica. La struttura dei messaggi dovrà essere definita secondo un formato standard che costituirà la busta e-toscana. Il NAL è costituito da una parte infrastrutturale comune a tutti, sulla quale si installano i diversi proxy applicativi, specifici per ogni diversa applicazione, i quali presentano una interfaccia verso il Framework della Cooperazione Applicativa presente sul CRIC e una verso il Sistema Informativo Locale dell’Ente. Il Proxy applicativo è un’applicazione specifica per ogni applicazione che deve operare in questo contesto di cooperazione applicativa: esisterà il proxy per l’integrazione anagrafi, il proxy per l’interoperabilità del protocollo ecc. Compito del proxy applicativo è quello di ricevere i dati, che rappresentano l’oggetto dello scambio con altri Enti, dal Sistema Informativo Locale, elaborarli secondo una logica applicativa diversa per ognuno, imbustarli secondo il formato della busta etoscana e inviarli all'interfaccia del Framework CA presente sul NAL (il Framework Facade) che si occuperà di generare l’evento per la pubblicazione. Analogamente, nel caso in cui l’Ente sia sottoscrittore di un evento, il proxy riceverà l’evento dal Framework Facade e lo passerà al Sistema Informativo Locale relativo. Il Proxy applicativo presenta quindi tre interfacce: • Interfaccia verso il Framework Facade (e quindi verso il CRIC) • Interfaccia verso il Sistema Informativo Locale • Interfaccia verso l’RDBMS presente sul NAL page 5/36 Linee guida per lo sviluppo dei proxy applicativi CRIC Framework CA JMS/SSL Framework CA Sole Facade NAL Evento Ack/Fault Proxy Carica dati RDBMS applicativo Legge dati Evento sottoscritto forma Dati da pubblicare in formato XML Sistema Informativo Locale L’interfaccia verso il CRIC, in particolare verso il Framework CA, avviene attraverso il Framework Facade. Il Framework Facade CA: • riceve il messaggio formattato secondo la busta e-toscana, • autentica il mittente attraverso la firma digitale, • verifica se il mittente ha il ruolo per pubblicare il relativo evento (autorizzazione) andando a reperire le informazioni sul repository presente sul CRIC, • valida il formato del messaggio SOAP secondo la busta e-toscana e • verifica che ogni passo sia andato a buon fine. Se tutto è a posto Il Sole Facade CA : • incapsula la busta e-toscana in un messaggio JMS, • si collega al componente JMS Provider del CRIC autenticandosi e spedisce al CRIC il messaggio. Nel caso in cui il NAL è sottoscrittore di un evento, il messaggio verrà ricevuto dalla componente locale del Framework Ca il quale: • traccia l’avvenuta ricezione, • estrae la busta e-toscana dal messaggio JMS • ne valida il formato, page 6/36 Linee guida per lo sviluppo dei proxy applicativi • reperisce sul repository del CRIC le informazioni relative a chi sono gli Enti sottoscrittori dell’evento ( questo serve nel caso di NAL che servono più Enti) e • inserisce gli identificativi dei sottoscrittori nell’apposito campo della busta e-Toscana • notifica (tramite callback) al proxy applicativo interessato la ricezione del messaggio e lo salva nello apposito repository. Il Proxy è una applicazione Java sviluppata con le API Java 2 Platform Standard Edition. Quando il Sistema Informativo Locale deve pubblicare un evento, invia un messaggio XML su http/s (il cui formato dovrà essere stabilito per ogni applicazione) contenente i dati da pubblicare al Proxy Applicativo. All’arrivo dei dati dal Sistema Informativo Locale il Proxy: • autentica il Sistema Informativo Locale attraverso il suo certificato digitale, • effettua alcune operazioni su questi dati (dipendenti dalle diverse applicazioni), quali per esempio il caricamento sul RDBMS, la validazione ecc.: • invoca un metodo crea_busta esposto dal Framework Facade a cui passa tutti i valori necessari per la creazione della busta e-toscana e riceve come parametro di ritorno la busta e-toscana • invia la busta al Framework Facade utilizzando il metodo send(busta e-toscana). Questo metodo tornerà una busta e-toscana contenente un “Ack” nel caso in cui sia andato tutto a buon fine o un “Fault” in caso di errore. Sole Facade mette a disposizione anche i metodi che permettono di leggere i singoli campi all’interno della busta e-toscana. Il protocollo di comunicazione tra il proxy applicativo e il Sole Facade supporta il reliable messaging, quindi a seguito della ricezione di un messaggio “busta e-toscana” Sole Facade spedisce una risposta che può essere un “Acknowledgment Message” o un “Fault Message”. • L'”Acknowledgment Message” ricevuto deve poter essere correlato con il messaggio originale attraverso il suo l'identificatore. Il “Proxy Applicativo” è in grado di stabilire che il messaggio è stato consegnato solo alla ricezione dell'”Acknowledge Message”. Ogni messaggio contiene un identificatore unico nel contesto del sistema di gestione dei messaggi. L'”Acknowledgment Message” contiene un riferimento all'identificatore del messaggio originale, confermando la ricezione del messaggio da parte del Sole Facade. • Sole Facade invia un “Fault Message” nel caso il messaggio contenga i seguenti errori: • Il contenuto o il formato dell'elemento “MessageHeader” è non valido. Ad esempio quando l'attributo “type” dell'elemento “Service” è assente, quando gli elementi “From” o “To” contengono informazioni non valide, etc.. • Il contenuto o il formato dell'identificatore del messaggio è non valido • Il contenuto o il formato dei riferimenti ad un identificatore del messaggio è invalido • Il contenuto o il formato del timestamp del messaggio è invalido page 7/36 Linee guida per lo sviluppo dei proxy applicativi • • Il messaggio è scaduto rispetto al contenuto dell'elemento “TimeToLive” Il contenuto o il formato dell'elemento “ReliableMessage” è non valido • Il contenuto o il formato dell'elemento “AckRequested” è non valido • il contenuto o il formato dell'elemento “Signature” è non valido • Non è possibile autenticare il messaggio • Non è possibile autorizzare l'invio del messaggio La fase di ricezione di un evento da parte del Sistema Informativo Locale è condizionata dal fatto che questo abbia una connessione permanente al Nal e che sia in grado di essere notificato, vale a dire che abbia installato un http listener. Nel repository presente sul CRIC è presente l’informazione sulla tipologia del Sistema Informativo Locale che il Proxy dovrà leggere utilizzando le API JAXR: • • S.I.L. notificabile in modalità sincrona : in questo caso il Proxy applicativo invia l’evento sotto forma di XML su HTTPS al SIL e riceve sempre sullo stesso canale l’acknowledge della ricezione del messaggio S.I.L notificabile in modalità asincrona: in questo caso il Proxy applicativo mette a disposizione una interfaccia richiamabile via HTTPS alla URL https://nalEnte1.rete.toscana.it/applicazione/getevento che permette al SIL di prelevare l’evento in formato busta e-toscana. Quest’ultimo caso è applicabile per esempio nel caso di NAL multiente. 2.1 Meccanismo di pubblicazione e ricezione con “filtri” Nel caso in cui un evento debba essere ricevuto da un sottoinsieme dei SIL sottoscrittori all'evento (quelli che hanno specificato di voler ricevere solo i messaggi che soddisfano una certa proprietà) il sistema fa uso dei “JMS message selector”, il cui valore viene inserito nella busta all'atto della sua creazione e successivamente utilizzato dal Framework per impostarlo sul messaggio JMS. Il proxy applicativo verrà notificato dal Framework solo per la ricezione degli eventi che interessano i suoi SIL, in base ai filtri con cui questi si sono registrati. In fase di pubblicazione, il contenuto dei filtri verrà passato insieme al contenuto del messaggio dal SIL al proxy. page 8/36 Linee guida per lo sviluppo dei proxy applicativi 3Linee guida per lo sviluppo di interfacce tra il Sistema Informativo Locale e il NAL Il Sistema Informativo Locale dell’Ente che deve pubblicare un evento deve passare i dati che andranno a costituire l’evento stesso al NAL. Le modalità messe a disposizione sono: § File upload dei dati in formato XML su HTTPS: in questo caso sul Sistema Informativo Locale deve essere implementato uno script utilizzando delle librerie opportune, per esempio la libcurl che è una libreria che permette di effettuare delle https/POST , che effettui un upload dei dati formattati in XML sul NAL Il Sistema Informativo Locale riceve gli eventi nelle seguenti modalità: § SIL con collegamento non permanente al NAL : in questo caso il Sistema Informativo Locale avrà a disposizione una interfaccia richiamabile via HTTPS che permette al SIL di prelevare l’evento in formato busta e-toscana. § SIL con collegamento permanente verso il NAL. In questo caso si hanno due possibilità: o SIL in grado di ricevere l’evento in modalità sincrona: in questo caso deve essere presente sul SIL una interfaccia https a cui effettuare una POST con l’evento formattato secondo la busta e-toscana in SOAP su HTTPS o SIL non in grado di ricevere l’evento in modalità asincrona: in questo caso ci si riconduce al caso del SIL con collegamento non permanente al NAL. page 9/36 Linee guida per lo sviluppo dei proxy applicativi 4Descrizione dell'interfaccia “Solefacade” del “framework” di Cooperazione Applicativa Il deploy diagram presente nella figura sotto, descrive come un esempio di implementazione di Proxy presente nel NAL utilizza le funzionalità del “framework CA”. Il “framework” utilizza l'interfaccia “SoleFacade” come unico punto d'ingresso dove si potranno trovare tutte le funzionalità messe a disposizione dal sistema mentre la configurazione è gestita da un file di properties e da un repository, quest'ultimo implementato con un Directory Server, nel quale risiedono tutte le informazioni relative alla fase di autorizzazione. Il framework offre le seguenti funzionalità ai relativi Proxy: • Costruzione di un messaggio SOAP secondo il formato della busta di eToscana (deploy diagram: “build eToscana envelope”): il sistema mette a disposizione diversi metodi per la costruzione di un messaggio SOAP secondo il formato della busta di eToscana definito. • Spedizione/pubblicazione di uno o piu messaggi SOAP conformi alla busta di eToscana (deploy diagram: “send the eToscana envelope”): quando il Proxy ha costruito, tramite la funzionalità messa a disposizione dal framework, il messaggio SOAP potrà spedire/pubblicare l'evento. • Sistema di log del “framework” CA (deploy diagram: “use log system”): un Proxy potrà far uso del sistema di log implementato dal “framework”. • Attivazione dei ricevitori/sottoscrittori a cui il NAL è iscritto (deploy diagram: “start & stop Receivers/Subscribers”) : il Proxy può gestire l'attivazione o meno dei ricevitori/sottoscrittori agli eventi. • Parser del messaggio SOAP conforme alla busta di eToscana (deploy diagram: “use eToscana envelope parser”): è possibile ricavare, dando come attributo il messaggio SOAP conforme alla busta di eToscana e il nome del tag, il valore del relativo tag. • Proprieta del “framework” (deploy diagram: “read the Framework's properties”) : la configurazione del file di properties (sole.properties) è a carico del NAL o del responsabile dell'intero sistema di Cooperazione Applicativa. Il file contiene informazioni inerenti al NAL e al repository. La configurazione dell'LDAP, presente nel CRIC, non riguarda nessun Proxy ed è totalmente a carico dell'amministratore del CRIC o del responsabile dell'intero sistema di Cooperazione Applicativa. Il LDAP contiene tutte le informazioni necessarie al “framework” per eseguire i controlli di autorizzazione, relativi al SIL che vuole spedire/pubblicare o ricevere/sottoscriversi ad un messaggio. Quindi le componenti “JMS Provider”, “LDAP” e “Configuration Manager CA” presenti nel CRIC sono di responsabilità dell'amministratore del CRIC. page 10/36 Linee guida per lo sviluppo dei proxy applicativi 4.1Spedizione/pubblicazione di uno o piu messaggi SOAP conformi alla busta di eToscana Il “Sole Facade” espone due metodi di spedizione/pubblicazione di messaggi SOAP, conformi alla busta di eToscana. Nella fase di spedizione e di ricezione avviene anche la fase di controllo che verifica se il relativo “SIL_<ID>” (es: SIL_01) è autorizzato alla spedizione o ricezione di un messaggio. 4.1.1SendTransactionalMessages(java.utils.Collection messages) • Descrizione: spedisce in modo transazionale una lista di messaggi SOAP, conformi alla busta di eToscana. Se la spedizione/pubblicazione va a buon fine, il metodo ritorna “true”, altrimenti ritorna “false”. La lista di messaggi deve contenere messaggi costruiti nel seguente modo: page 11/36 Linee guida per lo sviluppo dei proxy applicativi <?xml version="1.0" encoding="UTF-8"?> <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:Header> <eToscana:MessageHeader xmlns:eToscana="http://regione.toscana.it/etoscana" soapenv:mustUnderstand="1"> <eToscana:From>SIL_01</eToscana:From> <eToscana:To>NAL_01-URI</eToscana:To> <eToscana:Service>Nascita</eToscana:Service> <eToscana:MessageId>16D489DA-5FBC-0938-06E1E3815DDBAE68</eToscana:MessageId> <eToscana:Timestamp>2003-09-02T02:19:25.987Z</eToscana:Timestamp> </eToscana:MessageHeader> <eToscana:ReliableMessage xmlns:eToscana="http://regione.toscana.it/etoscana" soapenv:mustUnderstand="1"> <eToscana:ReplyTo>SIL_01-URL</eToscana:ReplyTo> <eToscana:TimeToLive>2003-09-03T02:35:37.997Z</eToscana:TimeToLive> <eToscana:AckRequested xmlns="http://regione.toscana.it/etoscana" synchronous="true"/></eToscana:ReliableMessage> </soap-env:Header><soap-env:Body/></soap-env:Envelope> <Nascita><DatiAnagrafici Sesso=":sesso" CittadinanzaItaliana=":cittadinanzaitaliana"><CodiceComune>:codicecomune</CodiceCom une>....<Nascita> • Esempio implementazione : ..... SoleFacade soleFacade = new SoleFacade(); boolean result = soleFacade.sendTransactionalMessages(messagesList); ..... 4.1.2sendSynchronizeMessage(javax.xml.soap.SOAPMessage soapMessage ) • Descrizione: spedisce un messaggio SOAP, conforme alla busta di eToscana. Il metodo ritorna un messaggio SOAP di risposta, riportando l'avvenuta spedizione/pubblicazione (Acknowledgment) o il fallimento (Fault) con i relativi dettagli. Il messaggio di risposta di tipo “Acknowledgment” ha il seguente formato: <?xml version="1.0" encoding="UTF-8"?> <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:Header> <eToscana:MessageHeader xmlns:eToscana="http://regione.toscana.it/etoscana" soapenv:mustUnderstand="1"> <eToscana:From>NAL_01-URI</eToscana:From> <eToscana:To>SIL_01-URL</eToscana:To> <eToscana:Service>Nascita</eToscana:Service> <eToscana:MessageId>44759F0C-DA93-6872-F992078BBE9D9DDB</eToscana:MessageId> <eToscana:Timestamp>2003-09-02T02:19:27.69Z</eToscana:Timestamp> </eToscana:MessageHeader> <eToscana:RMResponse xmlns:eToscana="http://regione.toscana.it/etoscana" soapenv:mustUnderstand="1"> <eToscana:MessageType>Acknowledgment</eToscana:MessageType> <eToscana:RefToMessageId>16D489DA-5FBC-0938-06E1E3815DDBAE68</eToscana:RefToMessageId> page 12/36 Linee guida per lo sviluppo dei proxy applicativi </eToscana:RMResponse> </soap-env:Header> <soap-env:Body/> </soap-env:Envelope> Mentre un messaggio di risposta di tipo “Fault”, a seconda del tipo d'errore, ha il seguente formato: <?xml version="1.0" encoding="UTF-8"?> <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:Header> <eToscana:MessageHeader xmlns:eToscana="http://regione.toscana.it/etoscana" soapenv:mustUnderstand="1"> <eToscana:From>NAL_01-URI</eToscana:From> <eToscana:To>SIL_01-URL</eToscana:To> <eToscana:Service>Nascita</eToscana:Service> <eToscana:MessageId>44759F0C-DA93-6872-F992078BBE9D9DDB</eToscana:MessageId> <eToscana:Timestamp>2003-09-02T02:19:27.69Z</eToscana:Timestamp> </eToscana:MessageHeader> <eToscana:RMResponse xmlns:eToscana="http://regione.toscana.it/etoscana" soapenv:mustUnderstand="1"> <eToscana:MessageType>Fault</eToscana:MessageType> <eToscana:RefToMessageId> 16D489DA-5FBC-0938-06E1-E3815DDBAE68 </eToscana:RefToMessageId> </eToscana:RMResponse> </soap-env:Header> <soap-env:Body><soap-env:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Server Error</faultstring> <detail> <eToscana:FaultMessage xmlns:eToscana="http://regione.toscana.it/etoscana"> <eToscana:message>The SOAP message has not been published. The problems could be: not found the information for broker; not lookup the topic; not connection to Broker; not publish the message </eToscana:message> <eToscana:errorcode>0002</eToscana:errorcode> </eToscana:FaultMessage> </detail></soap-env:Fault></soap-env:Body></soap-env:Envelope> • Esempio implementazione: ..... SoleFacade soleFacade = new SoleFacade(); SOAPMessage eToscana = soleFacade.buildEToscanaEnvelope(events, "SIL_01", "NAL_01", "Nascita", "http://sils/SIL_01/", "1", "true", certificate); SOAPMessage responseMessage =soleFacade.sendSynchronizeMessage(eToscana); .... page 13/36 Linee guida per lo sviluppo dei proxy applicativi 4.2Costruzione di un messaggio SOAP secondo il formato della busta di eToscana L'interfaccia “Sole Facade” offre molti metodi, per la costruzione di un messaggio SOAP conforme alla busta di eToscana, al fine di lasciare libera scelta all'applicativo di scegliere il metodo più adatto alle esigenze. Saranno presenti metodi che permettono di costruire un messaggio passandogli ogni valore, oppure si potrà scelgliere di sfruttare le funzionalità del “framework” al fine di evitare la creazione di informazioni, come per esempio il “Time stamp” che deve rispettare le specifiche ISO8601 Date Format, e occuparsi di passare solo le informazioni necessarie. Non verranno elencati tutti i metodi, in quanto sono già descritti nella “Java Documentation” presente sotto, ma si mostrerà solo alcuni dei metodi esposti dall'interfaccia “Sole facade”. 4.2.1buildEToscanaEnvelope(java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String messageId, java.lang.String timeStamp, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate) • Descrizione:questo metodo permette di costruire una messaggio SOAP conforme alla busta di eToscana, passandogli ogni singolo valore. Questo tipo di metodo demanda all'utilizzatore la responsabilità che alcuni dei valori debbano rispettare le specifiche dei formati, come per esempio il “timeStamp”. Gli eventi, passati come “Collection”, possono essere delle stringhe “xml” che vengono inserite come attachment nel messaggio SOAP. • Esempio implementazione: ... SoleFacade soleFacade = new SoleFacade(); SOAPMessage eToscana = soleFacade.buildEToscanaEnvelope(events, "SIL_01", "NAL_01", "Nascita", "1234", " 2003-09-02T02:19:27.69Z ", "http://sils/SIL_01/", " 2003-0902T04:19:27.69Z ", "true", certificate); .... 4.2.2buildEToscanaEnvelope(java.util.Collection events, java.lang.String from, java.lang.String eventName) • Descrizione:questo metodo permette di costruire una messaggio SOAP conforme alla busta di eToscana, passandogli ogni singolo valore. Questo tipo di metodo demanda al “framework” la responsabilità della generazione di alcuni valori del messaggio SOAP, come per esempio il “timeToLive” oppure l'identificatore del messaggio “messageId”. Gli eventi, passati come “Collection”, possono essere delle stringhe “xml” che vengono inserite come attachment nel messaggio SOAP. • Esempio Implementazione: ... SoleFacade soleFacade = new SoleFacade(); SOAPMessage eToscana = soleFacade.buildEToscanaEnvelope(events, "SIL_01", "Nascita"); .... 4.2.3buildEToscanaEnvelope(java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate) • Descrizione:questo metodo permette di costruire una messaggio SOAP conforme alla busta di eToscana, pasandogli alcuni valori. Gli eventi, passati come “Collection”, possono essere delle stringhe “xml” che vengono inserite come attachment nel messaggio SOAP. page 14/36 Linee guida per lo sviluppo dei proxy applicativi • Esempio Implementazione: ... SoleFacade soleFacade = new SoleFacade(); SOAPMessage eToscana = soleFacade.buildEToscanaEnvelope(events, "SIL_01", “NAL_01”, "Nascita", "http://sils/SIL_01/", " 2003-09-02T04:19:27.69Z ", "true", certificate); .... 4.2.4buildEToscanaEnvelopes(java.util.HashMap events, java.lang.String from) • Descrizione: questo metodo è un po complesso in quanto richiede che tutti gli eventi, siano presenti un un HasMap, dove la chiave sia il nome dell'evento (esempio “Nascita”) mentre l'oggetto una lista di eventi da inserire in attachment nello stesso messaggio SOAP. Il secondo parametro, nominato “from” nel metodo, definisce il ricevente. Il metodo ritorna una lista di messaggi SOAP, dove ogni messaggio contiene tutti e solo gli eventi relativi alla stessa chiave presente nell'HashMap ed ogni messaggio ha inserito nel tag “From” il valore del ricevente passato come attributo. • Esempio implementazione: ..... //build the HashMap ArrayList listNascita = new ArrayList(); listNascita.add(EVENTO-NASCITA); listNascita.add(EVENTO-NASCITA); listNascita.add(EVENTO-NASCITA); listNascita.add(EVENTO-NASCITA); ArrayList listMorte = new ArrayList(); listMorte.add(EVENTO-MORTE); ArrayList listEmigrazione = new ArrayList(); listEmigrazione.add(EVENTO-EMIGRAZIONE); listEmigrazione.add(EVENTO-EMIGRAZIONE); listEmigrazione.add(EVENTO-EMIGRAZIONE); listEmigrazione.add(EVENTO-EMIGRAZIONE); HashMap hashMap = new HashMap(); hashMap.put("Nascita", listNascita); hashMap.put("Morte", listMorte); hashMap.put("Emigrazione", listEmigrazione); //build m eToscana SoleFacade soleMgr = new SoleFacade(); Collection listEToscana = soleMgr.buildEToscanaEnvelopes(hashMap, “SIL_01”); ... 4.2.6buildMessageRule(java.lang.String key, java.lang.String value, java.lang.String operator) • Descrizione:questo metodo permette di costruire un oggetto di tipo MessageRule, rappresentante un filtro da applicare ad un messaggio. Tutti i metodi per la costruzione di buste di eToscana esposti nel presente paragrafo hanno anche la variante in cui è presente page 15/36 Linee guida per lo sviluppo dei proxy applicativi come ulteriore parametro una collection di MessageRule. Per ottenere i singoli elementi da inserire nella collection si può utilizzare il metodo buildMessageRule che accetta come parametri il nome della proprietà, il valore, e l'operatore da utilizzare, come nel seguente esempio: • Esempio Implementazione: ... SoleFacade soleFacade = new SoleFacade(); MessageRule mr = new MessageRule(“someRule”,”someValue”,”=”); MessageRule mr1 = new MessageRule(“anotherRule”,”anotherValue”,”=”); Collection rules = new ArrayList(); rules.add(mr); rules.add(mr1); SOAPMessage eToscana = soleFacade.buildEToscanaEnvelope(events, "SIL_01", "Nascita", rules); .... 4.3Sistema di log del “framework” L'interfaccia espone tre servizi di log, un servizio “info”, un servizio “debug” e una servizio “error”; tutti i log vengono riportati su opportuni file di log (SoleError.log, SoleInfo.log, SoleDebug.log). Questa funzionalità potrà essere utilizzata da un Proxy nel caso volesse demandare al “framework” la gestione dei log. 4.3.1logErrorMessage(java.lang.String origin, java.lang.String msg) • Descrizione: per esempio un Proxy potrà utilizzare il log del tipo “error” all'interno di un “catch”. L'implementazione avviene richiamando il metodo statico come mostrato nell'esempio. • Esempio implementazione: try{... }catch(...){ SoleFacade.logErrorMessage(CLASS_NAME, "getNewSession(): " + e); .... 4.3.2logInfoMessage(java.lang.String origin, java.lang.String msg) • Descrizione: per esempio un Proxy potrà utilizzare il log del tipo “info” all'interno di un “try”. L'implementazione avviene richiamando il metodo statico come mostrato nell'esempio. • Esempio implementazione: try{... SoleFacade.logErrorMessage(CLASS_NAME, "message information”); }catch(...){ .... 4.4Attivazione dei ricevitori/sottoscrittori a cui il NAL è iscritto La funzionalità esposta dall'interfaccia permette di eseguire lo startup/shutdown dei page 16/36 Linee guida per lo sviluppo dei proxy applicativi ricevitori/sottoscrittori e del server JMX ( http://java.sun.com/products/JavaManagement/ ) che permette di monitorare e gestire attraverso un browser i singoli subscriber. L'interfaccia “Sole Facade” mette a disposizione un metodo “startReceivers” e un metodo “stopReceivers” per poter lanciare, gestire e monitore il sistema di ricezione dei messaggi. Quando il Proxy avrà lanciato il metodo “startReceivers”, attraverso il browser http://<NAL-IP>:<JMX-PORT> si potrà monitorare ogni singolo ricevitore/ sottoscrittore. 4.4.1startReceivers() • Descrizione: il metodo presente sull'interfaccia “Sole Facade” permette di lanciare tutti i receivers/subscribers e il server JMX. Successivamente con il browser sarà possibile monitorare i receivers. • Esempio implementazione: ... SoleFacade soleFacade = new SoleFacade(); soleFacade.startReceivers(); ... 4.5Parser del messaggio SOAP conforme alla busta di eToscana L'interfaccia “SoleFacade” mette a disposizione due metodi che permettono di ricavare il valore dei tag del messaggio SOAP conforme alla busta di eToscana e i relativi attachments. I campi che si potranno ricavare sono i seguenti: To; From; EventName; MessageId; Timestamp; ReplyTo; TimeToLive; Synchronous. Nel caso si richeda un valore di un tag non presente, il sistema risponde “INVALID-TAG”. 4.5.1getEToscanaEnvelopeTagValue(javax.xml.soap.SOAPMessage soapMessage, java.lang.String tag) • Descrizione: da un messaggio SOAP conforme alla busta di eToscana è possibile ricavare il valore assegnato ai tag del messaggio SOAP. • Esempio implementazione: .... SoleFacade soleFacade = new SoleFacade(); SOAPMessage eToscana = soleFacade.buildEToscanaEnvelope(events, "SIL_01-URI", "NAL_01-URI", "Nascita", "12345678", "2002-09-14T10:19:00", "http://regione.toscana.com/ca/", "2002-09-14T10:19:00", "true", certificate); //ricavo il campo 'To' dal messaggio SOAP String to = soleFacade.getEToscanaEnvelopeTagValue(eToscana, "To"); 4.5.2getEToscanaEnvelopeAttachments(javax.xml.soap.SOAPMessage soapMessage) • Descrizione: da un messaggio SOAP conforme alla busta di eToscana è possibile ricavare gli attachments. • Esempio implementazione: .... page 17/36 Linee guida per lo sviluppo dei proxy applicativi SoleFacade soleFacade = new SoleFacade(); SOAPMessage eToscana = soleFacade.buildEToscanaEnvelope(events, "SIL_01-URI", "NAL_01-URI", "Nascita", "12345678", "2002-09-14T10:19:00", "http://regione.toscana.com/ca/", "2002-09-14T10:19:00", "true", certificate); //ricavo un iterator di attachments Iterator iterator = eToscana.getAttachments(); .... 4.6Proprieta del “framework” (sole.properties) Il componente “sole.properties” contiene alcune informazioni necessarie al corretto funzionamento del “framework”. E' da tener presente che le informazioni qui presenti potranno, come è stato fatto nel “Proxy Anagrafe”, essere centralizzate in un LDAP al fine di ricercare la mantenibilità e la centralizzazione delle informazioni. Per il Proxy è fondamentale che il file sole.properties o eventualmente LDAP siano correttamente aggiornate. Le informazioni presenti su sole.properties permettono al “framework”di operare correttamente, infatti riportano le seguenti informazioni: • Validazione di un messaggio SOAP in fase di spedizione e ricezione: un valore (“yes” oppure “no”) permettera di scegliere se validare o meno il messaggio SOAP secondo il formato della busta di eToscana prima di essere spedito/pubblicato e ricevuto dal “framework”. • Informazioni relative al JNDI per il JMS provider: url JNDI; TopicConnectionfactory. • Proprieta del JMS client: JMS client user name; jms client password • Informazioni relative a LDAP (“Repository” presente nel CRIC) usato in fase di autorizzazione. • Proprieta dei file di log: path dei file di log; tipo di format dei log • Configurazione del JMX server: porta JMX. • Proprieta dell'event/result repository: path del result repository; path del event repository. Quando il “framework” riceverà un messaggio, verificherà chi saranno i ricevitori/sottoscrittori a tale evento e andrà a inserire, nel repository del SIL_<ID> (es: SIL_01) sottoscritto a tale evento, il messaggio ricevuto. Quindi sarà responsabilità del NAL a definire quale sarà il path dell' event repository. Il Proxy potendo usufruire di questa informazione potrà concetrarsi unicamente a reperire gli eventi presenti nel “event repository”. page 18/36 Linee guida per lo sviluppo dei proxy applicativi 5Esempio di integrazione del “Framework” in una implementazione del “Proxy” Attraverso dei Sequence Diagram si mostrerà come un Proxy potrà usare il “framework” nei tre scenari piu importanti: • Spedizione/pubblicazione di un messaggio SOAP conforme alla busta di eToscana • Ricezione/sottoscrizione di un messaggio SOAP. • Attivazione dei ricevitori/sottoscrittori 5.1Spedizione/pubblicazione di un messaggio SOAP conforme alla busta di eToscana La reposnabilità del Proxy è di creare una istanza dell'interfaccia “SoleFacade” e data una lista di eventi generata dal Proxy (sequence diagram: build xml event) utilizza il metodo “buildEToscanaEnvelope(...)” per costruire i messaggi SOAP. Successivamente, il Proxy fa uso del metodo “sendSynchronizeMessage(...)”, passandogli il messaggio che aveva precedentemente costruito, per spedire/pubblicare il messaggio. Questo metodo è sincrono in quanto dopo la fase di pubblicazione gli ritorna un messaggio SOAP, sempre conforme alla busta di eToscana (sequence diagram: eToscanaResponse) la quale riporta se il messaggio è stato spedito correttamente (.... <eToscana:MessageType> Acknowledgment </eToscana:MessageType>... ) , nel caso contrario conterrà anche il relativo errore (<eToscana:MessageType> Fault </eToscana:MessageType> <eToscana:RefToMessageId> 16D489DA-5FBC-0938-06E1-E3815DDBAE68 </eToscana:RefToMessageId></eToscana:RMResponse> </soap-env:Header> <soap-env:Body> <soap-env:Fault> <faultcode> SOAPENV:Server </faultcode> <faultstring>Server Error</faultstring>). page 19/36 Linee guida per lo sviluppo dei proxy applicativi 5.2Ricezione/sottoscrizione di un messaggio SOAP Per ricevere un messaggio SOAP, il Proxy dovrà conoscere ”l'event repository” definito nel file di properties sole.properties. Di default “l'event repository” corrispondera al file system, quindi corrisponderà ad un “path” dove saranno presenti tutti gli eventi divisi per SIL. Sarà compito del Proxy di implementare una soluzione per reperire le informazioni di ogni specifico SIL nel “event repository”. Come si vede dal sequence diagram, quando il broker spedisce il messaggio, il “framework” riceve il messaggio e lo memorizza nel event repository di ogni SIL che è sottoscritto all'evento arrivato. page 20/36 Linee guida per lo sviluppo dei proxy applicativi 5.3Attivazione dei ricevitori/sottoscrittori Il squence diagram mostra come un “Proxy” puo attivare i ricevitori/sottoscrittori del “framework”. page 21/36 Linee guida per lo sviluppo dei proxy applicativi 6Java Documentation dell'interfaccia “Sole Facade” del “framework” di Cooperazione Applicativa La Java Documentation dell'interfaccia “Sole Facade” del “framework” è di particolare interesse ai gruppi di sviluppo coinvolti nella costruzione di soluzioni da integrare con la Cooperazione Applicativa della Regione Toscana, come ad esempio la soluzione “Proxy Anagrafe” implementato per l'anagrafe. Overview Package Class Use Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES <!-if(window==top) { document.writeln('<A HREF="../../../../allclassesnoframe.html"><B>All Classes</B></A>'); } //--> All Classes SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD it.sun.sole.common Class SoleFacade public class SoleFacade extends java.lang.Object Facade class to access to the "Framework Cooperazione Applicativa" services Constructor Summary SoleFacade() Creates a new instance of SoleFacade Method Summary javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String eventName) Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; event name. page 22/36 Linee guida per lo sviluppo dei proxy applicativi javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String eventName, java.util.Collection rules) Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; event name; a collection of MessageRule Object. javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String messageId, java.lang.String timeStamp, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate) Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; consignee; event name; message identification; time stamp which has to respect the 'ISO 8601 data format'; reply to; time to live of the message which has to respect the 'ISO 8601 data format;synchronous; certificate X509. javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String messageId, java.lang.String timeStamp, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate, java.util.Collection rules) Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; consignee; event name; message identification; time stamp which has to respect the 'ISO 8601 data format'; reply to; time to live of the message which has to respect the 'ISO 8601 data format;synchronous; certificate X509; a collection of MessageRule Object. page 23/36 Linee guida per lo sviluppo dei proxy applicativi javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate) Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; consignee; event name; reply to; time to live of the message which has to respect the 'ISO 8601 data format; synchronous; certificate X509. javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate, java.util.Collection rules) Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; consignee; event name; reply to; time to live of the message which has to respect the 'ISO 8601 data format; synchronous; certificate X509; a collection of MessageRule Object. javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.lang.String event, java.lang.String from, java.lang.String eventName) Build a SOAP Message, which respects the eToscana format, with the following input data: an event put as an attachment; sender; event name. javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.lang.String event, java.lang.String from, java.lang.String eventName, java.util.Collection rules) Build a SOAP Message, which respects the eToscana format, with the following input data: an event put as an attachment; sender; event name; a collection of MessageRule Object. page 24/36 Linee guida per lo sviluppo dei proxy applicativi java.util.Collection buildEToscanaEnvelopes( java.util.HashMap events, java.lang.String from) Build a list of SOAP Messages, which respect the eToscana format, with the following input data: a list of lists which each one contains some events of the same type; sender. java.util.Collection buildEToscanaEnvelopes( java.util.HashMap events, java.lang.String from, java.util.Collection rules) Build a list of SOAP Messages, which respect the eToscana format, with the following input data: a list of lists which each one contains some events of the same type; sender; a collection of MessageRule Object. java.util.Collection buildEToscanaEnvelopes( java.util.HashMap events, java.security.cert.X509Certificate certificate) Build a list of SOAP Messages, which respect the eToscana format, with the following input data: a list of lists which each one contains some events of the same type; sender certificate X509. java.util.Collection buildEToscanaEnvelopes( java.util.HashMap events, java.security.cert.X509Certificate certificate, java.util.Collection rules) Build a list of SOAP Messages, which respect the eToscana format, with the following input data: a list of lists which each one contains some events of the same type; sender certificate X509; a collection of MessageRule Object. MessageRule buildMessageRule( java.lang.String key, java.lang.String value, java.lang.String operator) Build a MessageRule Object with the following input data: key, value and operator. java.util.Iterator getAllMessages( java.lang.String applicationId, java.lang.String silId) This method returns the messages stored for the SIL page 25/36 Linee guida per lo sviluppo dei proxy applicativi java.util.Iterator getEToscanaEnvelopeAttachments( javax.xml.soap.SOAPMessage message) Get a iterator of the SOAP core's attachemnts. java.lang.String getEToscanaEnvelopeTagValue( javax.xml.soap.SOAPMessage message, java.lang.String tag) Get the tag value by SOAP message. static MessageLogger getLogger( java.lang.String applicationId, java.lang.String silId, java.lang.String className) Returns a SOLE logger using the SoleLogFactory java.lang.String getMessage( java.lang.String applicationId, java.lang.String silId, java.lang.String messageName) This method returns the message stored for the SIL java.util.Vector getPublishEventsBySil(java.lang.String silId) This method returns the list of the events that can published by a SIL (silId) static java.lang.String getUniqueId(java.lang.String subjectId) This method returns an unique ID static void logDebugMessage( java.lang.String origin, java.lang.String msg) Logs a message to a common repository static void logErrorMessage( java.lang.String origin, java.lang.String msg) Logs a message to a common repository static void logInfoMessage( java.lang.String origin, java.lang.String msg) Logs a message to a common repository javax.xml.soap.SOAPMessage sendSynchronizeMessage( javax.xml.soap.SOAPMessage message, java.lang.String applicationId) Send a SOAP Message, which respects the eToscana format, to the framework and gets SOAP Message response page 26/36 Linee guida per lo sviluppo dei proxy applicativi boolean sendTransactionalMessages( java.util.Collection messages, java.lang.String applicationId) Send a collection of SOAP Messages, which respect the eToscana format, to the "framework". void startReceivers() Start all the receivers/subscrivers of the 'framework' and the JMX server for management and monitoring the receivers/subscrivers. void stopReceivers() Stop all the receivers/subscrivers of the 'framework'. void storeMessage( javax.xml.soap.SOAPMessage message, java.lang.String applicationId) This method stores a SOAP Message for the Application ID void storeMessage( java.lang.String applicationId, java.lang.String silId, java.lang.String messageName) This method stores a message for the SIL Methods inherited from class java.lang.Object clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Constructor Detail 6.0.1SoleFacade public SoleFacade() throws PropertyNotFoundException Creates a new instance of SoleFacade Method Detail 6.0.2getLogger public static MessageLogger getLogger(java.lang.String applicationId, java.lang.String silId, java.lang.String className) Returns a SOLE logger using the SoleLogFactory page 27/36 Linee guida per lo sviluppo dei proxy applicativi 6.0.3logDebugMessage public static void logDebugMessage(java.lang.String origin, java.lang.String msg) Logs a message to a common repository 6.0.4logInfoMessage public static void logInfoMessage(java.lang.String origin, java.lang.String msg) Logs a message to a common repository 6.0.5logErrorMessage public static void logErrorMessage(java.lang.String origin, java.lang.String msg) Logs a message to a common repository 6.0.6buildMessageRule public MessageRule buildMessageRule(java.lang.String key, java.lang.String value, java.lang.String operator) Build a MessageRule Object with the following input data: key, value and operator. Sample of rule: "color=red". The key is "color", the operator is "=" and the value is "red". 6.0.7sendTransactionalMessages public boolean sendTransactionalMessages(java.util.Collection messages, java.lang.String applicationId) throws SoleFacadeException Send a collection of SOAP Messages, which respect the eToscana format, to the "framework". Throws: SoleFacadeException 6.0.8sendSynchronizeMessage public javax.xml.soap.SOAPMessage sendSynchronizeMessage( javax.xml.soap.SOAPMessage message, page 28/36 Linee guida per lo sviluppo dei proxy applicativi java.lang.String applicationId) throws SoleFacadeException Send a SOAP Message, which respects the eToscana format, to the framework and gets SOAP Message response Throws: SoleFacadeException 6.0.9buildEToscanaEnvelope public javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.lang.Strin gevent, java.lang.String from, java.lang.String eventName) throws javax.xml.soap.SOAPException, SizeExceededException Build a SOAP Message, which respects the eToscana format, with the following input data: an event put as an attachment; sender; event name. Throws: javax.xml.soap.SOAPException SizeExceededException 6.0.10buildEToscanaEnvelope public javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.lang.String event, java.lang.String from, java.lang.String eventName, java.util.Collection rules) throws javax.xml.soap.SOAPException, SizeExceededException Build a SOAP Message, which respects the eToscana format, with the following input data: an event put as an attachment; sender; event name; a collection of MessageRule Object. Throws: javax.xml.soap.SOAPException SizeExceededException 6.0.11buildEToscanaEnvelope public javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String eventName) page 29/36 Linee guida per lo sviluppo dei proxy applicativi throws javax.xml.soap.SOAPException, SizeExceededException Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; event name. Throws: javax.xml.soap.SOAPException SizeExceededException 6.0.12buildEToscanaEnvelope public javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String eventName, java.util.Collection rules) throws javax.xml.soap.SOAPException, SizeExceededException Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; event name; a collection of MessageRule Object. Throws: javax.xml.soap.SOAPException SizeExceededException 6.0.13buildEToscanaEnvelopes public java.util.Collection buildEToscanaEnvelopes( java.util.HashMap events, java.lang.String from) throws javax.xml.soap.SOAPException, PropertyNotFoundException Build a list of SOAP Messages, which respect the eToscana format, with the following input data: a list of lists which each one contains some events of the same type; sender. Throws: javax.xml.soap.SOAPException PropertyNotFoundException 6.0.14buildEToscanaEnvelopes public java.util.Collection buildEToscanaEnvelopes( java.util.HashMap events, page 30/36 Linee guida per lo sviluppo dei proxy applicativi java.lang.String from, java.util.Collection rules) throws javax.xml.soap.SOAPException, PropertyNotFoundException Build a list of SOAP Messages, which respect the eToscana format, with the following input data: a list of lists which each one contains some events of the same type; sender; a collection of MessageRule Object. Throws: javax.xml.soap.SOAPException PropertyNotFoundException 6.0.15buildEToscanaEnvelopes public java.util.Collection buildEToscanaEnvelopes( java.util.HashMap events, java.security.cert.X509Certificate certificate) throws javax.xml.soap.SOAPException Build a list of SOAP Messages, which respect the eToscana format, with the following input data: a list of lists which each one contains some events of the same type; sender certificate X509. Throws: javax.xml.soap.SOAPException 6.0.16buildEToscanaEnvelopes public java.util.Collection buildEToscanaEnvelopes( java.util.HashMap events, java.security.cert.X509Certificate certificate, java.util.Collection rules) throws javax.xml.soap.SOAPException Build a list of SOAP Messages, which respect the eToscana format, with the following input data: a list of lists which each one contains some events of the same type; sender certificate X509; a collection of MessageRule Object. Throws: javax.xml.soap.SOAPException 6.0.17buildEToscanaEnvelope public javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, page 31/36 Linee guida per lo sviluppo dei proxy applicativi java.lang.String messageId, java.lang.String timeStamp, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate) throws javax.xml.soap.SOAPException, SizeExceededException Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; consignee; event name; message identification; time stamp which has to respect the 'ISO 8601 data format'; reply to; time to live of the message which has to respect the 'ISO 8601 data format;synchronous; certificate X509. Throws: javax.xml.soap.SOAPException SizeExceededException 6.0.18buildEToscanaEnvelope public javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String messageId, java.lang.String timeStamp, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate, java.util.Collection rules) throws javax.xml.soap.SOAPException, SizeExceededException Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; consignee; event name; message identification; time stamp which has to respect the 'ISO 8601 data format'; reply to; time to live of the message which has to respect the 'ISO 8601 data format;synchronous; certificate X509; a collection of MessageRule Object. Throws: javax.xml.soap.SOAPException SizeExceededException 6.0.19buildEToscanaEnvelope public javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, page 32/36 Linee guida per lo sviluppo dei proxy applicativi java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate) throws javax.xml.soap.SOAPException, SizeExceededException Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; consignee; event name; reply to; time to live of the message which has to respect the 'ISO 8601 data format; synchronous; certificate X509. Throws: javax.xml.soap.SOAPException SizeExceededException 6.0.20buildEToscanaEnvelope public javax.xml.soap.SOAPMessage buildEToscanaEnvelope( java.util.Collection events, java.lang.String from, java.lang.String to, java.lang.String eventName, java.lang.String replyTo, java.lang.String timeToLive, java.lang.String synchronous, java.security.cert.X509Certificate certificate, java.util.Collection rules) throws javax.xml.soap.SOAPException, SizeExceededException Build a SOAP Message, which respects the eToscana format, with the following input data: a list of the same events put as attachments; sender; consignee; event name; reply to; time to live of the message which has to respect the 'ISO 8601 data format; synchronous; certificate X509; a collection of MessageRule Object. Throws: javax.xml.soap.SOAPException SizeExceededException 6.0.21getEToscanaEnvelopeTagValue public java.lang.String getEToscanaEnvelopeTagValue( javax.xml.soap.SOAPMessag emessage, java.lang.String tag) Get the tag value by SOAP message. The attribute requested from the method are page 33/36 Linee guida per lo sviluppo dei proxy applicativi the SOAP Message and the tag name. If the tag name is incorrect, the method gets the following string :'INVALID-TAG'. 6.0.22getEToscanaEnvelopeAttachments public java.util.Iterator getEToscanaEnvelopeAttachments( javax.xml.soap.SOAPMessage message) throws javax.xml.soap.SOAPException Get a iterator of the SOAP core's attachemnts. Throws: javax.xml.soap.SOAPException 6.0.23startReceivers public void startReceivers() throws SoleFacadeException Start all the receivers/subscrivers of the 'framework' and the JMX server for management and monitoring the receivers/subscrivers. Throws: SoleFacadeException 6.0.24stopReceivers public void stopReceivers() Stop all the receivers/subscrivers of the 'framework'. 6.0.25getUniqueId public static java.lang.String getUniqueId(java.lang.String subjectId) This method returns an unique ID 6.0.26getPublishEventsBySil public java.util.Vector getPublishEventsBySil(java.lang.String silId) This method returns the list of the events that can published by a SIL (silId) page 34/36 Linee guida per lo sviluppo dei proxy applicativi 6.0.27getMessage public java.lang.String getMessage(java.lang.String applicationId, java.lang.String silId, java.lang.String messageName) throws SoleFacadeException This method returns the message stored for the SIL Throws: SoleFacadeException 6.0.28getAllMessages public java.util.Iterator getAllMessages(java.lang.String applicationId, java.lang.String silId) throws SoleFacadeException This method returns the messages stored for the SIL Throws: SoleFacadeException 6.0.29storeMessage public void storeMessage(java.lang.String applicationId, java.lang.String silId, java.lang.String messageName) throws SoleFacadeException This method stores a message for the SIL Throws: SoleFacadeException 6.0.30storeMessage public void storeMessage(javax.xml.soap.SOAPMessage message, java.lang.String applicationId) throws SoleFacadeException This method stores a SOAP Message for the Application ID Throws: SoleFacadeException page 35/36 Linee guida per lo sviluppo dei proxy applicativi Overview Package Class Use Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES <!-if(window==top) { document.writeln('<A HREF="../../../../allclassesnoframe.html"><B>All Classes</B></A>'); } //--> All Classes SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD page 36/36