V tejto kapitole je na príkladoch vysvetlené, ako nadviazať nadviazaťjednoduchosť spojenie medzi klientskou aplikáciou a aplikáciou na platforme D2000. Predpokladom tejto kapitoly je aktívna D2000 aplikácia (prinajmenšom kernel), ku ktorej sa môžeme pripojiť. Spôsoby pripojenia sú rozdelené do troch kategórií, pričom možnosti z jednotlivých kategórií možno ľubovoľne kombinovať.
Pripojenie je možné nadviazať dvomi základnými spôsobmi:
...
V obidvoch prípadoch je JConnector stále pripojený na ten istý D2Connector. Po prepnutí asociovaného kernel-a z „hot" na „SBS" alebo späť je klientská aplikácia notifikovaná o zmene, ale JAPI túto situáciu inak nerieši Pre jednoduchosť nebudeme o redundancii kernel-a v nasledujúcich príkladoch uvažovať..nerieši Nadviazanie spojenia medzi klientskou aplikáciou a D2000.
Kotva | ||||
---|---|---|---|---|
|
D2Connector je proces systému D2000 a je distribuovaný ako konzolová aplikácia (d2connector.exe
). Akceptuje štandardné parametre procesov D2000 pre spustenie z príkazového riadku, ktoré sú popísané v Online referenčnej príručke systému D2000. Okrem toho akceptuje nasledovné parametre príkazového riadku:
--CONNECTOR_LISTEN_PORT=<port>
- nastaví číslo TCP portu, na ktorom D2Connector počúva na prichádzajúce spojenie od JAPI. Ak nie je uvedené inak, počúva na porte 3120. (Parameter je ignorovaný, ak sa použije v kombinácii s--DCC
)--DCC=<hostname:port>
- prepne D2Connector z režimu počúvania do režimu aktívneho pripájania sa na uvedenú adresu (DNS alebo IP) a port. Pokým sa mu nepodarí nadviazať spojenie, pokúša sa o to každých 30 sekúnd. Po ukončení spojenia sa opäť začne pokúšať o nadviazanie spojenia.--CONNECTOR_TLS_CERT=<path.crt>
- zapne TLS zabezpečenie a nastaví cestu k súboru s certifikátom vo formáte .crt.--CONNECTOR_TLS_PK=<path.pem>
- zapne TLS zabezpečenie a nastaví cestu k súboru s privátnym kľúčom k certifikátu vo formáte.pem
. Obidva TLS parametre je potrebné použiť spolu.
...
Ide o nezabezpečené spojenie, ktoré iniciuje JAPI.
D2Connector môžeme naštartovať bez parametrov a bude počúvať na pripojenie na porte 3120
Blok kódu | ||||
---|---|---|---|---|
| ||||
> d2connector.exe |
alebo zmeniť počúvajúci port napríklad na 3121:
Blok kódu | ||||
---|---|---|---|---|
| ||||
> d2connector.exe --CONNECTOR_LISTEN_PORT=3121 |
Pripojenie sa s použitím JAPI v prípade, že sa D2Connector nachádza na počítači s menom srvapp01v
a počúva na porte 3120. Inštancia JConnector-a bude na konci uložená v premennej connector
.
Blok kódu | ||||
---|---|---|---|---|
| ||||
String CONNECTION_STRING = "srvapp01v:3120"; |
...
D2ConnectorEventsListener connectorEventListener = new D2ConnectorEventsListener() |
...
{ @Override public void onClose(CloseReason reason) |
...
{ //implementation of connector close event handling ... |
...
} }; |
...
Future<D2Connector> upcomingConnection = D2Japi.getInstance().createConnector(CONNECTION_STRING, connectorEventListener); |
...
D2Connector connector = upcomingConnection.get(); |
Kotva | ||||
---|---|---|---|---|
|
Pripojený JConnector umožňuje vytvoriť novú Session vždy rovnakým spôsobom bez ohľadu na to, akým spôsobom bolo spojenie s D2Connector-om nadviazané. Nasledujúci postup je preto univerzálny pre všetky kombinácie. V príklade je JConnector reprezentovaný premennou .connector.
Na pripojenie sa použije používateľský účet SystemD2000 s heslom SystemD2000, proces bude v systéme identifikovaný menom MyD2Session.DCC Kernel môže k názvu procesu pridať dodatočné znaky, aby zabezpečil unikátnosť identifikátora v systéme. a pripája sa z počítača nb1tbac1 Je to nepovinný údaj a kernel nedokáže overiť jeho správnosť, ale korektná aplikácia by túto informáciu mala poskytnúť..
Kotva | ||||
---|---|---|---|---|
|
String PASSWORD = "SystemD2000";
String SESSION_NAME = "MyD2Session";
String HOST_NAME = "nb1tbac1";
D2SessionEventsListener sessionEventListener = new D2SessionEventsListener()
{
@Override
public void onClose(CloseReason reason)
{
//implementation
}
@Override
public void onRedundancyStateChanged(RedundancyStateType redundancyState)
{
//implementation
}
@Override
public void onTerminateRequest()
{
//implementation
}
};
Future<D2Session> upcomingSession = connector.createSession(
new SessionParametersBuilder()
.userName(USER)
.password(PASSWORD)
.sessionName(SESSION_NAME)
.build(),
sessionEventListener);
D2Session session = upcomingSession.get();
...
Trieda RedundantConnectionManager zjednodušuje pripojenie a udržiavanie aktívneho pripojenia k redundantnej skupine O redundantnej skupine hovoríme, keď D2000 aplikácia obsahuje aspoň 2 kernel-y, z ktorých je vždy práve jeden riadiaci (HOT) a ostatné sú záložné (SBS). Ak má riadiaci kernel poruchu, prevezme riadiacu funkciu automaticky jeden zo záložných.. Interným mechanizmom zabezpečí, že sa voči každému z kernel-ov vytvorí JConnector a v prípade straty spojenia sa pokúša o obnovu. Je možné ju využiť aj na pripojenie k jedinému kernel-u. Inštanciu je možné získať volaním
connectionManager = D2Japi.getInstance().createRedundantConnectionManager(...)
Kotva | ||||
---|---|---|---|---|
|