Supporto per transazioni e commit in due fasi
In COM termwinology, una transazione è sempre un'unità di lavoro che è atomica, coerente, isolata e durevole (ACID). Nella terminologia del mainframe una transazione può o meno essere una transazione ACID; nella terminologia del mainframe, una transazione è un set di operazioni o comandi in un programma di transazione (TP). Questa differenza nella terminologia può essere confusa. La transazione di parola utilizzata in TI Manager e ti Designer si riferisce sempre a una transazione ACID.
Il commit a due fasi (2PC) è un protocollo che consente a un set di operazioni o comandi tra applicazioni o di eseguire il rollback di tutti o tutti come singola unità transazionale.
Nota
Se si richiama un server di automazione TI sul protocollo TCP/IP, non è disponibile alcun supporto per le transazioni di commit in due fasi. Il commit a due fasi funziona solo sul protocollo SNA APPC/LU 6.2.
Un componente TI ha quattro possibili proprietà transazionali:
Richiede la transazione
Richiede una nuova transazione
Supporta le transazioni
Non supporta le transazioni
Le prime due scelte richiedono che il tp del mainframe sia transazionale (ovvero soddisfare le proprietà ACID) e per supportare Sync Level 2. Questo è trasparente per il mainframe TP se è un collegamento CICS o IMS versione 6.0 o successiva. La terza scelta richiede il tp del mainframe per supportare le richieste sync level 2 e gestire la semantica delle transazioni in modo appropriato. La quarta scelta è necessaria per i provider di servizi di sicurezza istantanea prima della versione 6.0 di IMS e per tutti i TPS CICS che supportano solo Sync Level 0 o Sync Level 1.
Se un componente TI viene richiamato nell'ambito di una transazione COM+, TI stabilirà una conversazione di Sync Level 2 con CICS (in caso contrario, viene usato Sync Level 0). Questo è trasparente per il client del componente TI. Se il tp del mainframe è un programma di collegamento CICS, la natura transazionale della conversazione è trasparente anche per il TP, poiché la transazione mirror di IBM in CICS (CSMI) gestisce il protocollo Sync Level 2 e il TP a cui è collegato non è in grado di sapere se viene usato Sync Level 0 o Sync Level 2.
TI è conforme al modello di programmazione COM+ chiamando SetComplete o SetAbort al termine dell'operazione di ogni chiamata al metodo dal client. Se non sono stati rilevati errori, ti chiama SetComplete; in caso contrario, chiama SetAbort. TI chiama anche SetAbort se il tp del mainframe indica che la transazione non deve eseguire il commit impostando il flag DisableCommit nel blocco di errore dei metadati restituito. Le applicazioni client di Automazione TI possono anche scegliere di chiamare SetAbort se determinano che esistono problemi a livello di applicazione che devono impedire il commit della transazione.
Quando la chiamata al metodo del client viene restituita, il TP nel mainframe ha eseguito alcune unità di lavoro, ma le modifiche apportate alle risorse protette in CICS non sono ancora state eseguite. TI usa nuove interfacce DTC per inserire la conversazione Sync Level 2 nella transazione DTC. Quando DTC è pronto per eseguire il commit o l'interruzione della transazione, comunica con TI per guidare i flussi di commit a due fasi appropriati nella conversazione LU 6.2. Anche in questo caso, tutto il lavoro 2PC viene eseguito in modo trasparente da TI per conto del client.
Anche se l'oggetto TI può essere disattivato al termine del metodo, la conversazione deve essere mantenuta fino a quando il commit delle transazioni o interrompe. Gli utenti possono influire negativamente sulle prestazioni e collegare le risorse di sistema se il codice dell'applicazione effettua una o più chiamate di metodo transazionali, ma non esegue il commit della transazione per un lungo periodo di tempo. Le conversazioni possono essere usate rapidamente dal codice utente non strutturato.
Quando una conversazione è in attesa di eseguire il commit, verrà divorziata dall'oggetto con cui è stato associato. TI gestisce un pool di queste conversazioni "in attesa" ed esegue le operazioni a livello di sincronizzazione necessarie quando le notifiche appropriate vengono ricevute da DTC. Quando possibile, TI riutilizza queste conversazioni per ridurre al minimo il sovraccarico.
TI offre anche un servizio di risincronizzazione (SNA LU 6.2 Resync TP). Questo servizio Windows è configurato per essere il servizio richiamabile avviato automaticamente per il tp resync definito da SNA (0x06f2). Il servizio Resync implementa le funzioni "Nomi log di Exchange" e "Confronta stati" di un gestore transazioni SNA. Consente sia DTC (Distributed Transaction Coordinator) che CICS di avviare il processo di ripristino in base alle esigenze durante l'avvio del sistema o dopo un errore di sistema o di comunicazione.
Per informazioni sui flussi SNA SyncPoint o 2PC di IBM, informazioni di riferimento sull'architettura di SNA SyncPoint Services (IBM SC31-8134-00). Tutti i flussi TI 2PC vengono implementati in conformità con questa architettura.
Nota
Per informazioni su come usare i provider di servizi di collegamento CICS che usano comandi SYNCPOINT espliciti, vedere TPS con comandi SYNCPOINT espliciti.
In riepilogo, per usare il commit in due fasi, è necessario soddisfare tutti i requisiti seguenti:
Le unità LUS locali e remote devono avere il supporto syncPoint abilitato nel nodo Host Integration Server.
Le unità LUS locali e remote devono ogni punto al computer che esegue i servizi resync.
L'ambiente remoto (RE) deve avere il supporto di Sync Level 2 abilitato. Per controllare questa operazione, fare clic con il pulsante destro del mouse su RE in TI Manager, scegliere Proprietà e quindi fare clic sulla scheda LU 6.2.
Il componente TI deve avere il supporto delle transazioni impostato su Support, Obbligatorio o Richiede nuovo. Per controllare questa impostazione, fare clic con il pulsante destro del mouse sul componente TI in TI Manager, scegliere Proprietà e quindi fare clic sulla scheda Transazioni.
Il computer host remoto deve essere configurato per il supporto di Sync Level 2.