Risoluzione dei problemi dei nodi JMS
Esaminare i possibili problemi con i nodi che utilizzano il trasporto JMS.
Utilizzare il log attività come primo passo nella diagnosi di un problema quando si verifica un evento imprevisto in un flusso di messaggi JMS. Il log attività mostra le attività recenti nei flussi di messaggi e nelle risorse esterne associate e può mostrare all'utente ad alto livello eventuali problemi con le risorse JMS. È inoltre possibile visualizzare il registro eventi per informazioni sugli errori che si verificano.
In tutti i casi di errore, se la causa sottostante è un'eccezione JMS generata dal provider JMS, il messaggio di evento BIP del nodo di integrazione include il messaggio di testo dell'eccezione JMS per facilitare la diagnosi.
Gestione dei messaggi errati
Se un messaggio non può essere elaborato dal nodo di ingresso JMS, oppure è stato annullato nell'ambito di una transazione coordinata da un gestore di transazioni ( XA ), il messaggio viene restituito alla destinazione di origine. Il messaggio viene quindi consegnato nuovamente al nodo di input.
| Proprietà | Descrizione |
|---|---|
| Destinazione di backout | Questa proprietà specifica una destinazione JMS a cui vengono instradati i messaggi ritirati se la proprietà del messaggio JMS JMSX_DeliveryCount, impostato dal provider JMS, supera la soglia di backout. È necessario che la destinazione JMS sia applicabile al modello di messaggio utilizzato dal nodo: ad esempio, se nel nodo è stato configurato un argomento di sottoscrizione, è necessario impostare come argomento anche la destinazione JMS. |
| Soglia di backout | Questa proprietà specifica il valore intero che controlla un messaggio inviato alla destinazione di backout. Un valore soglia di3 indica che se il nodo di input riceve un messaggio in cui il valore di JMSX_DeliveryCount proprietà supera 3, il messaggio viene inviato alla destinazione di backout e viene rimosso dalla destinazione di origine. Vedere nodo JMSInput. |
Diagnosi dei problemi nell'utilizzo delle transazioni coordinate con l' XA
Questo problema non è applicabile a z/OS®.
Oltre alla traccia del servizio del nodo di integrazione, è disponibile un altro registro di tracciamento per diagnosticare eventuali problemi che potrebbero verificarsi quando un nodo che utilizza il trasporto JMS partecipa a una transazione con flusso di messaggi coordinata dall' XA. Vale a dire, almeno un nodo JMS nel flusso di messaggi ha la proprietà Modalità transazione impostata su Sìe la proprietà del flusso di messaggi Transazione coordinata impostata su sì.
- Definire una variabile di ambiente denominata XAJMS_TRACE disponibile per il gestore code del nodo di integrazione.
- Impostare il valore della variabile di ambiente. Questo valore deve essere una stringa di caratteri
che rappresenta il nome di file e ubicazione della registrazione traccia. Ad esempio, in Windows, la variabile può essere configurata come mostrato nel seguente esempio:
XAJMS_TRACEFILE = c:\JMSSwitchLog - Quando il gestore code del nodo di integrazione viene avviato, viene eseguito un passo di recupero per risolvere eventuali transazioni del nodo di integrazione precedenti che il provider JMS considera in dubbio. Durante questa fase, questa elaborazione del gestore code scriverà due registrazioni di traccia. Le due
registrazioni di traccia sono le seguenti:
- XAJMS_TRACEFILE valuePID.txt,
dove PID è l'ID processo del processo di avvio del gestore code. Questo file viene prodotto dalla libreria JMSSwitch del nodo di integrazione; per ulteriori informazioni, consultare Transazionalità JMS.
L'esempio precedente produce un file denominato JMSSwitchLog2596.txt, in cui l'ID processo di avvio del gestore code è 2596.
- XAJMS_TRACEFILEXARecoveryTrace.txt, prodotto dal componente di recupero del nodo di integrazione che si connette al provider JMS.
- XAJMS_TRACEFILE valuePID.txt,
dove PID è l'ID processo del processo di avvio del gestore code. Questo file viene prodotto dalla libreria JMSSwitch del nodo di integrazione; per ulteriori informazioni, consultare Transazionalità JMS.
- Una volta completato il ripristino del gestore code del nodo di integrazione, il nodo di integrazione viene avviato e crea un file denominato XAJMS_TRACEFILE valuePID.txt, dove PID è l'ID processo del processo di avvio del gestore code. Questo file viene prodotto dalla libreria JMSSwitch del nodo di integrazione; per ulteriori informazioni, consultare Transazionalità JMS.
Nessuno di questi file di traccia richiedono formattazioni aggiuntive.
Problemi con oggetti gestiti da JNDI
Descrizione del problema: il nodo JMS non è in grado di ottenere la factory di contesto iniziale o un oggetto di gestione JNDI, come la factory di connessione o la destinazione JMS, e viene emesso il messaggio BIP4640 .
- Verificare che i bind JNDI siano stati creati correttamente e che sia possibile raggiungerli nell'ubicazione specificata nel nodo.
- Verificare che i valori specificati nel nodo per le proprietà Nome factory di connessione e Coda di origine o Coda di destinazione esistano nei bind JNDI.
- Accertarsi che venga utilizzata la parola chiave corretta affinché corrisponda all'ubicazione dei file di associazione:
- file:// quando gli oggetti gestiti vengono creati in un file .bindings
- ldap:// quando gli oggetti gestiti esistono in una directory LDAP
- iiop:// quando per accedere agli oggetti gestiti viene utilizzata una struttura corba
- Quando i bind sono basati sui file, non specificare il nome file .bindings nella proprietà del nodo.
- Assicurarsi che il nome della classe produttore del contesto iniziale sia impostato correttamente, come specificato nella documentazione per il fornitore JMS.
- Verificare che il nome della classe produttore contesto iniziale non includa un percorso file.
- Accertarsi che una destinazione JMS (Argomento o Coda di origine o Coda di destinazione) specificata nelle proprietà del nodo esista negli oggetti gestiti da JNDI.
- Verificare che la proprietà jarsURL del provider JMS sia stata impostata correttamente utilizzando il comando mqsichangeproperties . Per verificare il valore, utilizzare il seguente comando:
mqsireportproperties INODE -c JMSProviders -o JMSProvider -r
- Se il problema viene risolto ricreando i collegamenti, il nodo JMS rileva automaticamente le modifiche e tenta di avviarle.
- Se il problema viene risolto aggiornando le proprietà del nodo, è necessario ridistribuire il flusso prima che possa connettersi correttamente.
Descrizione del problema: un nodo JMS non è in grado di connettersi per un provider JMS ed emette il messaggio BIP4648.
- Verificare che il server del provider JMS sia in esecuzione. Se è disattivato, avviare il server.
- Verificare che il server del provider JMS sia disponibile dall'ambiente del nodo di integrazione.
- Verificare che i file Java™ .jar del provider JMS siano stati collocati nella directory delle classi condivise del nodo di integrazione sui sistemi distribuiti o in z/OS, che tali file .jar siano stati definiti nel nodo di integrazione CLASSPATH e in qualsiasi libreria nativa definita nel nodo di integrazione LIBPATH.
Descrizione del problema: un nodo JMS non è in grado di ottenere una destinazione JMS ed emette il messaggio BIP4642.
- Determinare la causa del problema descritto dall'eventuale messaggio di eccezione JMS incluso nel messaggio di evento BIP.
- Verificare che il nome della destinazione JMS definito nella proprietà del nodo pertinente (Argomento, Coda di origine o Coda di destinazione) sia stato definito correttamente negli oggetti gestiti da JNDI.
- Verificare che la risorsa di sistema sottostante utilizzata dal provider JMS per la destinazione JMS sia stata configurata correttamente
Descrizione del problema: un nodo di input JMS non tenta di riconnettersi ad un provider JMS in seguito ad un errore di connessione o ad un riavvio del provider JMS.
Azione correttiva: se il provider JMS viene implementato utilizzando un modello che esegue il push sul client JMS, anziché un modello di polling tradizionale, il provider JMS potrebbe non generare un'eccezione quando richiama receive () su una connessione del nodo di integrazione. Per risolvere questo problema, impostare la proprietà Handle connection exceptions asynchronously della politica dei fornitori JMS su True per questo provider JMS.