Proprietà di transazione JMS

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

Diagramma in cui viene descritto il flusso di messaggi mediante un nodo JMSInput e un nodo JMSOutput, incluso un 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

Per consentire il supporto alla transazione globale per i nodi JMSInput e JMSOutput, è necessaria una configurazione aggiuntiva. Completare la procedura riportata di seguito.
  1. Impostare la proprietà del flusso di messaggi Transazione coordinata su.
  2. Per ciascun nodo JMSInput o JMSOutput al quale viene richiesto di prendere parte nella transazione globale, impostare la proprietà avanzata Modalità transazione su globale.
  3. Creare un produttore di connessione coda e fornire un nome predefinito, recoverXAQCF oppure fornire un nome definito dall'utente. Per ulteriori dettagli sulla creazione di oggetti gestiti da JNDI, fare riferimento al nodo JMSInput o JMSOutput.
  4. Su piattaforme distribuite, è richiesta un'attività di gestione di WebSphere MQ prima della distribuzione. Tale attività è necessaria per registrare un componente del broker con il gestore code. Il componente, in relazione con un file Switch, è una libreria condivisa (in Windows una DLL).

    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.

    L'attività varia in base alla piattaforma.
    • Linux e UNIX
      Per il gestore code del broker di ciascun provider JMS utilizzabile da un nodo JMSInput, posizionare una voce di stanza in un file di inizializzazione, ad esempio qm.ini. Di seguito viene riportato un esempio di una voce di stanza che è possibile aggiungere quando si utilizza Java diWebSphere MQ come provider JMS:
      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=THREAD 
      Dove:

      <Percorso di installazione > è il percorso dell'installazione WebSphere Message Broker. Questo valore è obbligatorio.

      I parametri forniti in XAOpenString sono delimitati dalla virgola e posizionali. E' necessario rappresentare qualsiasi parametro facoltativo mancante con una virgola se successivamente nella stinga vengono forniti gli altri parametri.
      • <Produttore contesto iniziale>: si tratta dell'identificativo del produttore contesto iniziale per il provider JMS. Questo valore è obbligatorio.
      • <Ubicazione dei file di associazione JNDI>: si tratta del percorso del file di associazione o dell'ubicazione della directory LDAP degli oggetti gestiti da JNDI utilizzabili per la creazione di un produttore contesto iniziale per la connessione JMS. Quando viene assegnato il percorso dei file di associazione, non includere il nome del file. Per ulteriori dettagli sulla creazione di oggetti gestiti da JNDI, fare riferimento al nodo JMSInput o JMSOutput. Questo valore è obbligatorio.
      • <Valore principale LDAP>: si tratta di un parametro facoltativo utilizzato per specificare il valore principale (ID utente) eventualmente richiesto quando viene utilizzato un database LDAP per conservare gli oggetti gestiti da JNDI.
      • <Credenziali LDAP>: si tratta di un parametro facoltativo utilizzato per specificare le credenziali (password) eventualmente richieste se viene utilizzato un database LDAP protetto da password per conservare gli oggetti gestiti da JNDI.
      • <Nome produttore connessione ripristino>: si tratta di un parametro facoltativo utilizzato per specificare il nome di un oggetto del produttore di connessione code in oggetti gestiti da JNDI per scopi di ripristino, quando viene richiesto un nome non predefinito.

      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,
           ,
           ,
           myRecoveryQCFName    
      Dove i parametri LDAP sono omessi ma per il ripristino viene specificato un produttore connessione coda definito dall'utente.
    • Su piattaforme Windows

      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 z/OS

      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.

    Per ulteriori informazioni, fare riferimento alla sezione sulle configurazioni per le transazioni coordinate all'interno degli argomenti del nodo JMSInput e del nodo JMSOutput.
  5. E' possibile che il provider JMS fornisca file jar aggiuntivi necessari per il supporto di transazione. Per ulteriori informazioni, fare riferimento alla documentazione del provider JMS. Ad esempio, su piattaforme distribuite (non z/OS), il provider JMS di WebSphere MQ fornisce un file jar aggiuntivo com.ibm,mqetclient.jar. E' necessario aggiungere tale file jar alla directory shared_classes del broker. In Windows, la directory è C:\Documents and Settings\All Users\Application Data\IBM\MQSI\shared-classes. Per ulteriori informazioni, fare riferimento alla sezione che descrive come rendere disponibile il client del provider JMS per i nodi JMS, negli argomenti seguenti: Nodo JMSInput.

Scelta del provider JMS

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.

Riferimenti correlati
Tipi di messaggio JMS
Albero dei messaggi JMS
Oggetti gestiti da JNDI
Nodo JMSInput
Nodo JMSOutput
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac24879_