Linee guida per lo sviluppo dei proxy applicativi

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