E' possibile che le destinazioni JMS che forniscono messaggi al nodo JMSInput o ricevono messaggi da un nodo JMSOutputnode siano coordinate nel punto di sincronizzazione come parte di una transazione globale di un flusso di messaggi.
Transazioni che coinvolgono il coordinatore del punto di sincronizzazione
In questo diagramma i messaggi vengono utilizzati da un argomento da un nodo JMSInput e vengono prodotti per un nodo JMSOutput di una coda JMS. I nodi sono connessi e sono in sessione con un provider JMS. E' possibile informare il coordinatore del punto di sincronizzazione esterno mediante qualsiasi nodo di input del flusso di messaggi quando una transazione del flusso di messaggi inizia o termina e se è necessario effettuare il commit o il rollback di qualsiasi risorsa interessata dal flusso.
Il coordinatore del punto di sincronizzazione invia richieste compatibili con XA/Open ai programmi di gestione risorse coinvolti per avviare la relativa preparazione. Viene quindi eseguito il commit o il rollback delle modifiche. In una transazione globale è possibile utilizzare i programmi di gestione risorse, ad esempio WebSphere MQ, DB2 e qualsiasi provider JMS compatibile con XA. Il coordinatore del punto di sincronizzazione esterno è costituito da WebSphere MQ su piattaforme distribuite e servizi RRS (Resource Recovery Services) in z/OS.
In una transazione globale è possibile utilizzare il nodo JMSInput e il nodo JMSOutput solo se il provider JMS di connessione supporta l'interfaccia XA/Open mediante la classe XAResource JMS. Un provider JMS di esempio è il client Java di WebSphere MQ.
Transazioni in dubbio
E' possibile che si verifichino transazioni in dubbio quando un programma di gestione risorse non risponde a una chiamata del programma di gestione del punto di sincronizzazione, dove la chiamata richiede di eseguire il commit o il rollback delle risorse. Durante l'avvio del programma di gestione code di WebSphere MQ del broker, viene effettuata una procedura di ripristino iniziale per accertarsi che qualsiasi transazione in dubbio sia risolta prima che il flusso di messaggi del broker avvii l'elaborazione di nuove immissioni. Un provider JMS che prende parte in transazioni globali del broker viene incluso in tale procedura di ripristino.
Configurazione per consentire il supporto alla transazione globale
Quando il gestore code WebSphere MQ del broker viene avviato, il file Switch viene caricato. Il file Switch inoltra le chiamate di transazione XA/Open dal coordinatore del punto di sincronizzazione al provider JMS. In tal modo è possibile coordinare le risorse JMS che prendono parte alla transazione in sincrono con altri programmi di gestione risorse interessati dalla stessa transazione.
XAResourceManager: Name=WBIWMQJMS SwitchFile=/<Percorso di installazione>/lib/JMSSwitch.so XAOpenString=<Produttore contesto iniziale>, <percorso dei collegamenti JNDI>' <Valore principale LDAP>, <Credenziali LDAP>, <Nome produttore connessione ripristino> ThreadOfControl=THREADDove:
<Percorso di installazione > è il percorso dell'installazione WebSphere Message Broker. Questo valore è obbligatorio.
E' necessario specificare una stanza nel file .ini del gestore code del broker per ciascun provider JMS da utilizzare, vale a dire che è necessario che sia presente una stanza per ciascun provider JMS nuovo, dove è possibile specificare il provider JMS mediante qualsiasi nodo JMSInput o JMSOutput incluso in un flusso di messaggi in esecuzione in un broker.
E' necessario che i valori del produttore contesto iniziale e dell'ubicazione associazioni JNDI nella stanza corrispondano a quelli specificati nei nodi JMSInput o JMSOutput nei flussi di messaggi.
E' necessario che qualsiasi parametro LDAP corrisponda a quelli specificati utilizzando il comando mqsicreatebroker o mqsichangebroker.
E' necessario che il nome produttore ripristino corrisponda a un nome produttore connessione coda creato negli oggetti gestiti da JNDI. Se viene omesso, verrà utilizzato un produttore predefinito denominato recoverXAQCF. In entrambi i casi è necessario che tale valore faccia riferimento a un oggetto gestito da JNDI già creato.
Di seguito viene riportata una stanza di esempio.
XAOpenString=com.sun.jndi.fscontext.RefFSContextFactory, /u/myJndiFileLocation, , , myRecoveryQCFNameDove i parametri LDAP sono omessi ma per il ripristino viene specificato un produttore connessione coda definito dall'utente.
Come con piattaforme Linux e Unix, sono richieste le stesse informazioni che vengono, però configurate utilizzando Esplora WebSphere MQ o lo snap-in dei servizi WebSphere MQ a seconda della versione di WebSphere MQ che si sta utilizzando. In Windows, il file Switch è denominato JMSSwitch.dll. Per ulteriori dettagli sulla modalità di aggiornamento del file qm.ini, fare riferimento alla guida di gestione del sistema di WebSphere MQ. E' necessario che la voce aggiuntiva, denominata XACloseString, corrisponda ai valori forniti per XAOpenString.
In WebSphere Message Broker il solo provider JMS correntemente supportato è il client IBM WebSphere MQ Java. La sola modalità di trasporto correntemente supportata per il client è la modalità BIND. Non sono richiesti ulteriori passi di configurazione.
E' possibile utilizzare qualsiasi provider JMS conforme alla Java Message Service Specification, version 1.1 e in grado di supportare l'API XAResource di JMS mediante la sessione JMS se è richiesta la coordinazione di transazione.
Se è stato specificato un provider compatibile XA, è supportata la sola modalità non transazionale. In tal caso, è necessario impostare la proprietàModalità transazione su no per tutti i nodi JMSInput e JMSOutput.