Verejné API sa medzi verziami 10.0.37 (d2japi-37.jar
) a 10.1.39 (d2japi-10.1.39.jar
) rozšírilo a v niektorých prípadoch aj zmenilo natoľko, že sú pri prechode na novšiu verziu potrebné ručné úpravy existujúceho kódu. (Pozn. verzia 10.1.38 bola vydaná len pre vnútorné potreby a nie je jej v tejto migračnej príručke venovaná pozornosť.) Nasledujúcich kapitolách je uvedený zoznam zmien, nových funkcií a návod, ako správne upraviť aplikačný kód pri migrácii aplikácie z D2000 verzie 10.0.37 na 10.1.39.
...
Info |
---|
Pri migrácii je nutné sa uistiť, že po zavolaní close()sa následné príkazy nespoliehajú, že bol kanál okamžite uzatvorený. Pokiaľ je v kóde takéto miesto, je potrebné pred ním spraviť nasledovné: Blok kódu |
---|
| FutureEvent<Void> futureCloseResult = openedObject.close();
... // tento kód sa na uzatvorenie ešte nespolieha
futureResult.get(); // čakanie na potvrdenie uzatvorenia
... // nasleduje miesto, na ktorom už musí platiť, že bol kanál
skutočne uzatvorený |
|
Kotva |
---|
| _Toc490141294 |
---|
| _Toc490141294 |
---|
|
8.10. Rozšírenie rozhrania D2SessionEventsListenerRozhranie bolo rozšírené o 2 nové metódy:
void onTerminateRequest()
– je zavolaná v prípade, že niekto prostredníctvom systému D2000 žiada o ukončenie procesu aktuálnej JAPI Session. Napríklad cez TELL príkaz. Korektná implementácia metódy zariadi, aby došlo k uvoľneniu zdrojov a následne zavolá session.close()
.
void onRedundancyStateChanged(RedundancyStateType redundancyState)
– je zavolaná v prípade prepnutia redundancie D2000 kernela. Hodnota parametra signalizuje aktuálny stav kernela, ku ktorému je pripojená aktuálna session. Korektná implementácia zabezpečí, že sa na komunikáciu so systémom D2000 bude používať session, ktorá je pripojená na HOT kernel.
Info |
---|
Pri migrácii je potrebné všetky implementácie rozšíriť o príslušné metódy. |
Kotva |
---|
| _Toc490141295 |
---|
| _Toc490141295 |
---|
|
8.11. Volanie RPC implementujúcej ESL rozhranieOd verzie 10.1.39 pribudla možnosť volať RPC, ktorá je implementáciou ESL rozhrania. Slúžia na to preťažené metódy D2Session.callRPC
a D2Session a D2Session.callRPCNoReply
s parametrom interfaceHobj
.
Kotva |
---|
| _Toc490141296 |
---|
| _Toc490141296 |
---|
|
8.12. Test existencie RPC a SBA volaniaVzhľadom k dynamickej povahe konfigurácie D2000 je od verzie 10.1.39 možné za behu overiť, či sa predpokladaná RPC a SBA nachádza na predpokladanom mieste. Slúžia na to metódy D2Session.testRPC
a D2Session a D2Session.testSBA
.
Kotva |
---|
| _Toc490141297 |
---|
| _Toc490141297 |
---|
|
9.13. Informácie o prihlásenom používateľovi a zmena hesla používateľaAby klient knižnice JAPI mohol komunikovať s D2000 kernelom, je potrebné, aby mal k dispozícii session, v ktorej je prihlásený platným D2000 používateľským kontom. Pri prihlasovaní sa cez JAPI podliehajú používateľské kontá rovnakým pravidlám, ako pri prihlasovaní sa cez iné D2000 procesy. Napríklad povinnosti pravidelne meniť svoje prihlasovacie heslo. Z toho dôvodu od verzie 10.1.39 pribudlo volanie D2Session.getLoggedUserInformation, ktoré sprístupní informácie o prihlásenom používateľovi a stave jeho prihlasovacieho hesla.
Pre možnosť zmeny prihlasovacieho hesla prihláseného používateľa pribudla od verzie 10.1.39 metóda D2Session.changePassword
, ktorá zmenu hesla umožňuje. Nové heslo musí spĺňať všetky pravidlá, ktoré sú pre prihlasovacie heslá v systéme D2000 zapnuté.
Info |
---|
Pri migrácii je odporúčané implementovať funkcionalitu, ktorá skontroluje stav prihlasovacieho hesla. V prípade, že kernel požaduje zmenu hesla, upozorní používateľa na túto skutočnosť a umožní mu heslo zmeniť. V opačnom prípade hrozí zablokovanie používateľského účtu. |
Kotva |
---|
| _Toc490141298 |
---|
| _Toc490141298 |
---|
|
9.14. Zmena správania pri neúspešnom vytvorení D2Session
Vytvorenie objektu typu D2Session volaním D2Connector.createSession
môže zlyhať z niekoľkých príčin. Od verzie 10.1.39 sú tieto príčiny lepšie rozlíšené rôznymi typmi výnimiek, ktoré nastanú pri volaní createSession
, alebo pri volaní Future.get
.
- Ak inštancia
D2Connector
-a už nemá aktívne spojenie: IllegalStateException
- Ak kernel vyhodnotí parametre
sessionName
alebo hostName
ako invalidné: ConnectSessionException
- Ak kernel odmietne prihlásiť session s uvedenými prihlasovacími údajmi:
LoginFailedException
- Ak bolo prihlasovacie meno správne, obsahuje výnimka
PasswordInformation
, v ktorom je uvedený dôvod odmietnutia. - V opačnom prípade je dôvod
null
.
Info |
---|
Pri migrácii je odporúčané obaliť získanie session do try ... catch ... so zachytením príslušných výnimiek. |
Kotva |
---|
| _Toc490141299 |
---|
| _Toc490141299 |
---|
|
9.15. Volanie D2Session.getIndirectInfo
Volanie D2Session.getObjectInfo
umožňuje získať prístup ku konfigurácii objektu, ktorá je užitočná zvlášť pri zobrazovaní hodnoty objektu používateľovi. V prípade štruktúrovanej premennej s hodnotami získanými z odkazov na iné objekty je potrebné nasledovať „indirect" odkazy. Od verzie 10.1.39 je k dispozícii volanie D2Session.getIndirectInfo
, ktoré požiada kernel o dohľadanie informácií na jedno zavolanie.
Kotva |
---|
| _Toc490141300 |
---|
| _Toc490141300 |
---|
|
9.16. Volanie D2Session.getObjectInfo
vráti aktuálnu hodnotu objektuOd verzie 10.1.39 je súčasťou výsledku volania D2Session.getObjectInfo
aj aktuálna hodnota objektu.
Kotva |
---|
| _Toc490141301 |
---|
| _Toc490141301 |
---|
|
9.17. Volanie D2Session.openObject
vráti informácie o objekteOd verzie 10.1.39 sú súčasťou výsledku volania D2Session.openObject
aj informácie o objekte.
Kotva |
---|
| _Toc490141302 |
---|
| _Toc490141302 |
---|
|
9.18. Zmena rozhrania RPCReturnContext
Inštancie objektu RPCReturnContext
sa používajú na zaslanie návratovej hodnoty prichádzajúceho RPC volania (keď ESL zavolá CALL RPC do JAPI). Vo verzii 10.1.39 bolo jej rozhranie a logika ovládania zásadne prepracovaná.
- Metóda
doReturnError
berie ako parameter hodnotu vymenovaného typu RpcReturnContextErrorType
namiesto číselného kódu (ktorý nebol dokumentovaný). Použitím metódy sa signalizuje, že RPC bola zavolaná nesprávnym spôsobom – nesprávny počet alebo typy parametrov volania. - Pribudla metóda
doReturnException
ktorou sa signalizuje, že počas vykonávania RPC nastala výnimka. - Metóda
doReturn
, ktorej parametrom bolo pole hodnôt typu UnivalValue
zanikla. - Nahrádza ju metóda
getResponseDataSet
, ktorá sprístupní inštanciu typu RpcResponseDataSet
.
Vo verzii 10.0.37 bola návratová hodnota zasielaná ako pole hodnôt typu UnivalValue
. Nevýhodou tohto prístupu bolo, že dĺžka poľa ani typy jednotlivých Unival hodnôt v poli neboli nijak kontrolované, ale ESL interpreter pritom spoliehal na ich korentnosť.
Z toho dôvodu sa od verzie 10.1.39 návratová hodnota zadáva do objektu typu RpcResponseDataSet
, ktorý kontroluje typy hodnôt ako aj ich počet.
Info |
---|
Pri migrácii je potrebné upraviť volanie RPCReturnContext.doReturn(values) na RPCReturnContext.getResponseDataSet().setValues(values) , pričom je pred tým vhodné skontrolovať, či je zadané pole v premennej values správnej veľkosti a obsahuje hodnoty požadovaných typov. Taktiež je potrebné upraviť parameter volania RPCReturnContext.doReturnError z čísla na hodnoty vymenovaného typu RpcReturnContextErrorType . |
Kotva |
---|
| _Toc490141303 |
---|
| _Toc490141303 |
---|
|
9.19. Zmena rozhrania SBAReturnContext
Inštancie objektu SBAReturnContext
sa používajú na zaslanie návratovej hodnoty prichádzajúceho SBA volania z D2000 Java Runtime do JAPI:
- Metóda
doReturnError
berie ako parameter hodnotu vymenovaného typu SBAErrorCode
namiesto číselného kódu (ktorý nebol dokumentovaný). Použitím metódy sa signalizuje, že SBA bola zavolaná nesprávnym spôsobom a nebude ani vykonaná. - Pribudla metóda
doReturnException
ktorou sa signalizuje, že počas vykonávania SBA nastala výnimka.
Info |
---|
Pri migrácii je potrebné upraviť parameter volania SBAReturnContext.doReturnError z číselnej hodnoty na hodnotu vymenovaného typu SBAErrorCode |
...
Kotva |
---|
| _Toc490141304 |
---|
| _Toc490141304 |
---|
|
9.20. Zastaraná D2SessionUtils.getObjectHOBJByName
Od verzie 10.1.39 bola zavedená metóda D2SessionUtils.getFutureObjectHobjByName
, ktorá namiesto hotového výsledku vráti FutureEvent
, ktorého výsledok je požadované HOBJ. Typicky je potrebné získať viac HOBJ a použiť ich spolu. Pôvodná metóda vrátila výsledok až keď získala odpoveď z Kernel-a, čo značne spomaľuje beh programu. Nová metóda umožňuje rýchlo zaslať viac žiadostí a počkať na odpovede spolu.
Info |
---|
Pri migrácii je odporúčané upraviť kód na používanie novej metódy. |