Véglegesítési mód és szinkronizálási szint feldolgozás

A választott véglegesítési mód meghatározza az IMS által végrehajtott véglegesítési feldolgozás típusát.

A véglegesítési mód határozza meg az IMS által végrehajtott véglegesítési feldolgozást. A Java ügyfél megadja a véglegesítési mód protokollt, amit akkor kell használni, amikor elküld egy tranzakció kérést az IMS felé. Az IMS Connect és az IMS kétféle véglegesítési módot támogat: a 0-s véglegesítési módot (véglegesít-majd-küld), ahol az IMS véglegesíti az IMS adatbázis módosításokat, majd elküldi a kimenetet az ügyfél felé; és az 1-es véglegesítési módot (küld-majd-véglegesít), ahol az IMS elküldi a kimenetet az ügyfél felé, majd véglegesíti az adatbázis módosításokat.

A véglegesítési mód protokollokhoz kapcsolódóan az IMS Connect és az IMS három szinkronizálási szintet támogat: NONE, CONFIRM és SYNCPT. Mindhárom szinkronizálási szint használható az 1-es véglegesítési móddal. A 0-s véglegesítési móddal csak a CONFIRM szint használható.

Míg az IMS Connector for Java automatikusan biztosítja a szinkronizálási szintet, amikor az IMS Connect programmal kommunikál, a szinkronizálási szintet a Java ügyfél kifejezetten beállíthatja NONE vagy CONFIRM értékre a setSyncLevel(int) metódus segítségével. Jelenleg a Java ügyfél a szinkronizálási szintet nem tudja kifejezetten beállítani SYNCPT értékre. Az 1 véglegesítési módú interakciók esetén az alapértelmezett szinkronizálási szint NONE. Elegendő csupán az interakciós parancsszót beállítani SYNC_SEND_RECEIVE értékre a szinkronizálási szint beállítása nélkül. A 0 véglegesítési módú interakciók esetén az alapértelmezett szinkronizálási szint CONFIRM. Elegendő csupán az interakciós parancsszót beállítani SYNC_SEND_RECEIVE értékre és a véglegesítési módot 0 értékre a szinkronizálási szint beállítása nélkül. Ha a setSyncLevel(int) metódusnak a 0 vagy 1 értékeken kívül bármely más érték kerül átadásra, akkor hiba történik.

Az IMS Connector for Java az alábbi kombinációkat támogatja:

Ha a Java ügyfél elküld egy tranzakciós kérést 1-es véglegesítési móddal CONFIRM szinkronizálási szinttel, akkor az IMS Connector for Java átadja a kérést az IMS Connect programon keresztül az IMS felé. Az IMS feldolgozza ezt a tranzakciót, majd megkísérli elküldeni a kimeneti üzenetet a Java ügyfélnek az IMS Connector for Java programon keresztül. Az IMS Connector for Java pozitív visszaigazolást küld a Java ügyfél nevében az IMS felé. Az IMS azután visszatérési kódot küld az IMS Connector for Java felé, jelezve, hogy a módosítások véglegesítésre kerültek-e. Ha igen, akkor az IMS Connector for Java elküldi a kimenetet a Java ügyfélnek. Ha nem, akkor a Java ügyfél kivételt kap. Ha a folyamat során bármilyen hiba történik, akkor a Java ügyfél kivételt kap.

A kivétel típusa azt is meghatározza, hogy egy kimeneti üzenet elérhető-e lekéréshez. Például ha a Java ügyfél egy IMSDFSMessageException kivételt kap jelezve, hogy a tranzakció leállt, akkor az alkalmazás nem futott; ezért nem áll rendelkezésre lekéréshez kimeneti üzenet. Viszont ha a tranzakció fut, de az executionTimeout értéke lejár, mielőtt a kimeneti üzenet visszaadásra kerül az IMS Connect felé, akkor a Java ügyfél egy EISSystemException kivételt kap jelezve, hogy végrehajtási időtúllépés történt. Ebben az esetben a kimeneti üzenet a megfelelő IMS OTMA aszinkron kimeneti sorba vagy TPIPE várakozási sorba kerül későbbi lekérésre.

Megjegyzés: Az IMS/OTMA terminológiában a tranzakciós adatcsatorna (TPIPE) logikai kapcsolat egy ügyfél (IMS Connect) és a kiszolgáló (IMS/OTMA) között. A 0 véglegesítési módú interakciók esetén a TPIPE adatcsatornát az interakcióhoz használt clientID azonosítja. Egy 0 véglegesítési módú tranzakcióhoz használt összes clientID saját TPIPE adatcsatornával rendelkezik. Az 1 véglegesítési módú interakciók esetében a TPIPE adatcsatornát az interakcióhoz használt IMS Connect portszám azonosítja. Ezért minden egyes port rendelkezik TPIPE adatcsatornával, amely az adott porton 1 véglegesítési módú interakciókat futtató összes ügyfélhez használt lesz.

Attól függetlenül, hogy a Java ügyfél egy IMS tranzakciót 1-es vagy 0-s véglegesítési móddal futtat, a Java ügyfél értéket ad meg az IMSInteractionSpec objektum interactionVerb tulajdonságának. A 0 véglegesítési módú interakció esetében a Java ügyfélnek az IMSInteractionSpec objektum clientID tulajdonságának is lehetséges, hogy értéket kell adnia. A clientID az IMSConnectionSpec objektum egyik tulajdonsága, amely azonosítja az IMS OTMA aszinkron kimeneti sort vagy TPIPE adatcsatornát, ahol a helyreállítható kimeneti üzenetek találhatók. Az, hogy egy Java ügyfél megad-e clientID azonosítót egy 0 véglegesítési módú interakcióhoz, a Java ügyfél által használt socket kapcsolat típusától függ.

Egy TPIPE adatcsatornáról kimeneti üzenetek lekéréséhez a Java ügyfél elküld egy kérést, amelyben a SYNC_RECEIVE_ASYNCOUTPUT, SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT vagy SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT értéket adja meg az IMSInteractionSpec objektum interactionVerb tulajdonságának, valamint megad egy értéket az IMSConnectionSpec objektum clientID tulajdonságának. Az aszinkron kimenet támogatásáról további információkért tanulmányozza az IMS Connect útmutató és kézikönyv 9. Fejezet: Protokollok fejezetét.

Általában a SYNC_RECEIVE_ASYNCOUTPUT, SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT vagy SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT interakciók segítségével lekérhetők bármely clientID azonosítóval várakozási sorban lévő kimeneti üzenetek, attól függetlenül, hogy hány üzenet került várakozási sorba a hozzá tartozó clientID azonosítóhoz. Ez lehet egy meghiúsult 0 véglegesítési módú tranzakció eredménye vagy származhat egy IMS alkalmazásból, amelyik beszúrást adott ki egy ALTPCB (Alternate Program Communication Block) blokkra. A meghiúsult 0 véglegesítési módú tranzakcióból megvalósuló kimeneti üzenet lekérése esetén az IMSConnectionSpec objektumban lekérési kérelemhez megadott clientID azonosítónak meg kell egyeznie a meghiúsult 0 véglegesítési módú tranzakcióra megadott clientID azonosítóval.

Ha semmi sincs az adott clientID OTMA aszinkron kimeneti sorában, akkor végrehajtási időtúllépés kivétel fog érkezni. Az időtúllépési kivétel vagy azt jelenti, hogy nincsenek üzenetek a várakozási sorban, vagy azt, hogy az időkorlát érék nem hagyott elegendő időt az IMS Connect számára az üzenet lekérésére a várakozási sorból. A SYNC_RECEIVE_ASYNCOUTPUT, SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT, SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT, valamint a SYNC_SEND_RECEIVE interakciókra az executionTimeout az az időtartam, amennyit az IMS Connect vár az IMS válaszára. Ha egy lekérési kérelemnek nem ad meg végrehajtási időkorlátot, akkor az alapértelmezett végrehajtási időkorlát értéke lesz érvényes. Az alapértelmezett időkorlát érték az IMS Connect TIMEOUT konfigurációs tagjának az értéke. A felhasználónak szüksége lehet kísérletezésre a végrehajtási időkorlát értékével, hogy biztosítsa minden típusú interakcióra a kimeneti üzenetek visszaérkezését.

Véglegesítési mód feldolgozás és socket kapcsolatok

Az IMS TM erőforrás-illesztő által létrehozott összes socket kapcsolat állandó. Más szavakkal az IMS Connector for Java és az IMS Connect közötti ugyanazon socket sorozatosan újrafelhasználható több interakcióhoz az IMS Connect programmal. Interakciók között a socket kapcsolat nem kerül bezárásra és újramegnyitásra. Kétfajta állandó socket létezik: megosztható és dedikált.

Megosztható állandó socket

A megosztható állandó socket-ek megoszthatók (sorozatosan újrafelhasználhatók) több alkalmazás által, amelyek akár 1, akár 0 véglegesítési módú interakciókat hajtanak végre. A 0 véglegesítési módú interakciót megosztható állandó socket-en végrehajtó alkalmazáshoz az IMS erőforrás-illesztő automatikusan a "HWS" előtaggal állítja elő a clientID azonosítót. Ez a clientID képviseli és azonosítja a socket kapcsolatot és a hozzá tartozó OTMA TPIPE adatcsatornát. Az ilyen típusú socket esetében csak az IMS TM erőforrás-illesztő által előállított clientID azonosítók engedélyezettek. A felhasználó által megadott clientID nem engedélyezett megosztható állandó socket támogatással.

Megjegyzés: Ez a clientID nem tévesztendő össze az IMSInteractionSpec objektum másodlagos clientID azonosítójával, amely az OTMA várakozási sorokból (TPIPE) kér le aszinkron kimeneti üzeneteket.
Megjegyzés: A másodlagos PCB blokkba üzeneteket beillesztő IMS alkalmazások számára tilos a "HWS" karaktersorozattal kezdődő nevek haszálata a másodlagos PCB blokkokhoz.

A megosztható állandó socket-en 0 véglegesítési módú interakciót végrehajtó Java ügyfél felé nem kézbesíthető kimeneti üzenetek várakozási sorba helyezhetők későbbi lekérésre. Ezen felül bármely 1 és 0 véglegesítési módú interakció olyan megosztható állandó socket-en, amely másodlagos kimenetet eredményezve másik 0 véglegesítési módú interakciót meghívó program-program váltást indít, várakozási sorba helyezhető későbbi lekérésre. A SYNC_RECEIVE_ASYNCOUTPUT, SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT és SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT interakciók támogatottak megosztható állandó socket-eken. Ha a másodlagos clientID nem használt, akkor az IMS OTMA aszinkron várakozási sorban vagy TPIPE adatcsatornában lévő kézbesítetlen kimeneti üzenetek lekéréséhez az interakciós parancsszavakat egyazon ügyfélalkalmazáson belül kell meghívni, mert ugyanazt az előállított ügyfélazonosítót kell használni, mint ami a megosztható socket kapcsolatot és a hozzá tartozó OTMA TPIPE adatcsatornát azonosítja.

A megosztható állandó socket-eken a kézbesítetlen kimeneti üzenetek többféle módon is kezelhetők. A kézbesítetlen kimenet lekérhető annak az OTMA várakozási sor nevének megadásával, amely az aszinkron kimeneti üzeneteket az IMSInteractionSpec objektum másodlagos clientID tulajdonságaként tárolja. Másik megoldásként a kézbesítetlen kimenet kiüríthető. A kézbesítetlen kimeneti üzenetek kiürítéséhez biztosítania kell, hogy az IMSInteractionSpec objektum purgeAsyncOutput tulajdonsága TRUE értékű legyen. Ez a bemeneti tulajdonság határozza meg, hogy az IMS Connect kiüríti-e a kézbesítetlen I/O PCB kimenetet. A purgeAsyncOutput tulajdonság csak a SYNC_SEND_RECEIVE interakciós parancsszóval érvényes. Ha a tulajdonság nincs megadva a SYNC_SEND_RECEIVE által, akkor az alapértelmezett értéke TRUE.

A kézbesítetlen kimeneti üzenet átirányítható másik célhoz az IMSInteractionSpec objektum reRoute tulajdonságának TRUE értékre állításával. Ez a tulajdonság csak a SYNC_SEND_RECEIVE interakciós parancsszóra érvényes. Ha a reRoute tulajdonság TRUE értékű, akkor a kézbesítetlen kimeneti üzenet az ügyfélalkalmazás által biztosított megnevezett címzett várakozási sorába kerül, amelyet az IMSInteractionSpec objektum reRouteName tulajdonsága ad meg. Ha a reRoute tulajdonság TRUE és nincs megadott reRouteName, akkor a reRouteName tulajdonság értéke az IMS Connect konfigurációs fájlban megadott érték lesz. Ha az IMS Connect konfigurációs fájlban nincs megadott érték, akkor a HWS$DEF alapértelmezett érték használt.

A megosztható állandó socket kapcsolatokat egy IMS kapcsolatgyár hozza létre a kívánt értékekkel a következő egyéni tulajdonságokhoz:
  • Host name = az IMS Connect programot futtató számítógép TCP/IP hosztneve
  • Port number = a hozzá tartozó portszám
  • Datastore name = a cél IMS neve
  • CM0Dedicated = FALSE
A FALSE a CM0Dedicated tulajdonság alapértelmezett értéke; ez biztosítja azt, hogy a kapcsolatgyár megosztható állandó socket kapcsolatokat fog létrehozni.

Dedikált állandó socket

A dedikált állandó socket-ek csak 0 véglegesítési módú interakciókat végrehajtó Java alkalmazásokhoz használtak. Megoszthatók (sorozatosan újrafelhasználhatók) több alkalmazás által, a felhasználó által megadott megegyező clientID azonosítóval. Az ilyen típusú socket esetében csak felhasználó által megadott clientID azonosítóval rendelkező interakciók engedélyezettek. Az érvényes, felhasználó által megadott clientID azonosítóra vonatkozó feltételek:
  • 1 és 8 közötti hosszúságú, alfanumerikus (A-Z, 0-9) és speciális (@,#,$) karaktereket tartalmazó karaktersorozatnak kell lennie.
  • Nem kezdődhet a "HWS" karaktersorozattal.
  • Nem lehet IMS Connect portszám.
  • A megadott kisbetűk nagybetűkre lesznek cserélve.

A dedikált állandó socket kapcsolat azt jelenti, hogy a socket kapcsolat adott clientID azonosítóhoz tartozik és dedikált marad ahhoz a clientID azonosítóhoz, amíg szétkapcsolásra nem kerül. A SYNC_SEND_RECEIVE, SYNC_SEND, SYNC_RECEIVE_ASYNCOUTPUT, SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT és SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT interakciók támogatottak dedikált állandó socket-eken.

A SYNC_RECEIVE_ASYNCOUTPUT, SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT és SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT interakciók dedikált állandó socket-eken lehetővé teszik az ügyfélalkalmazások számára azon üzenetek lekérését, amelyek IMS OTMA aszinkron kimeneti sorban helyezkednek el. Ez olyan meghiúsult 0 véglegesítési módú interakció eredményeként valósulhat meg, amely egy ALTPCB (Alternate Program Communication Block) blokkba beillesztést kiadó IMS alkalmazásból, vagy megosztható kapcsolatgyáron végrehajtott tranzakció kimenetének az átirányításából indul. Az üzenetek lekéréséhez az ügyfélalkalmazásnak biztosítania kell a clientID azonosítót, amely az aszinkron kimeneti üzenetek üzenetsorát tartalmazó TPIPE adatcsatornát képviseli. A kézbesítetlen kimeneti üzeneteket tartalmazó dedikált állandó socket-ek interakciói nem irányíthatók át és nem üríthetők ki.

A dedikált állandó socket kapcsolatokat egy IMS kapcsolatgyár hozza létre értékekkel együtt legalább a következő egyéni tulajdonságokhoz:
  • Host name = az IMS Connect programot futtató számítógép TCP/IP hosztnev
  • Port number = a hozzá tartozó portszám
  • Datastore name = a cél IMS neve
  • CM0Dedicated = TRUE

A CM0Dedicated tulajdonság TRUE értéke biztosítja azt, hogy a kapcsolatgyár dedikált állandó socket kapcsolatokat fog létrehozni.

Megjegyzés: Ha több kapcsolatgyár került beállításra dedikált állandó socket-ek létrehozására egyező IMS Connect példányhoz, akkor egyidejűleg csak egy kapcsolatgyár dedikálhat socket-et egy adott clientID azonosítóhoz. Például az első kapcsolatgyár sikeresen létrehoz egy socket kapcsolatot a CLIENT01 clientID azonosítóhoz dedikálva; ha a második kapcsolatgyár megkísérli a CLIENT01 azonosítóhoz socket kapcsolat létrehozását, amíg az első kapcsolatgyár által létrehozott socket kapcsolat még csatlakoztatott az IMS Connect programhoz, akkor a második kapcsolatgyár a következő kivételt kapja:
javax.resource.spi.EISSystemException: ICO0001E:
com.ibm.connector2.ims.ico.IMSTCPIPManagedConnection@23766050.processOutputOTMAMsg
(byte [], InteractionSpec,Record) hiba. Az IMS Connect által visszaadott hiba: RETCODE=[8],
REASONCODE=[DUPECLNT]. 
Többször szereplő ügyfél-azonosítót használt; az ügyfél-azonosító jelenleg használatban van. 

Állandó socket-ek felszabadítása

Az IMS Connector for Java és IMS Connect közötti TCP/IP kapcsolat állandó; vagyis megnyitott marad, amíg az IMS Connector for Java vagy az IMS Connect hiba következtében meg nem szakítja. Ez érvényes mind a megosztható állandó socket kapcsolatokra, mind a dedikált állandó socket kapcsolatokra. Azonban egy dedikált állandó socket kapcsolatot csak azok az interakciók használhatják, amelyek ugyanazzal a clientID azonosítóval rendelkeznek, mint amellyel a kapcsolat létrehozásra került. A socket kapcsolatok száma növekszik, ahogy új clientID azonosítók kerülnek használatba az interakciókhoz dedikált állandó socket kapcsolatokon.

Ha a MaxConnections tulajdonság nullától különböző értékű és a kapcsolat időkorlát értéke sem nulla, akkor az alkalmazás egy ConnectionWaitTimeoutException kivételt kap a Connection timeout által megadott másodpercek leteltével, amikor a MaxConnections értéket eléri a kapcsolatok száma és azok mindegyike használatban van. Ez a WebSphere Application Server szabványos viselkedése. A ConnectionWaitTimeoutException mind a dedikált állandó socket-ekre, mind a megosztható állandó socket-ekre vonatkozik.

Viszont ha a MaxConnections értékét eléri a kapcsolatok száma és az egyik állandó socket kapcsolat pillanatnyilag nincs használatban, akkor a WebSphere Application Server szétkapcsolja az adott socket-et, hogy tudjon válaszolni az új állandó socket kapcsolat létrehozására irányuló kérésre. Ez szintén szabványos viselkedése a WebSphere Application Server programnak, és mind a dedikált, mind a megosztható állandó socket-ekre érvényes.


Visszajelzés