V tejto kapitole je na príkladoch vysvetlené, ako 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ť.
...
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 Nadviazanie spojenia medzi klientskou aplikáciou a D2000.1.
Kotva |
---|
| _Toc490141238 |
---|
| _Toc490141238 |
---|
|
2.1. Parametre pre spustenie D2Connector-aD2Connector 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:
...
D2Connector nadväzuje spojenie vždy len jedným spôsobom z ôsmych možných kombinácií. Tzn. buď sa aktívne pripája, alebo počúva, ale nie obidvoje naraz. Rovnako komunikuje buď nezabezpečeným alebo zabezpečeným spôsobom, ale nikdy neumožňuje obidva spôsoby súčasne. Buď je pripojený stále k jednému Kernel-u alebo sa prepína na aktuálny „hot". V prípade, že sa ku D2000 aplikácií pripája viac rôznych klientských aplikácií, ktoré vyžadujú rôzne spôsoby pripojenia, je potrebné naštartovať pre každý spôsob samostatnú inštanciu D2Connector a.
Kotva |
---|
| _Ref422414870 |
---|
| _Ref422414870 |
---|
|
Kotva |
---|
| _Toc490141239 |
---|
| _Toc490141239 |
---|
|
2.2. Základný spôsob pripojeniaIde o nezabezpečené spojenie, ktoré iniciuje JAPI.
...
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 |
---|
| _Toc490141240 |
---|
| _Toc490141240 |
---|
|
2.3. Vytvorenie SessionPripojený 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.DCCNadviazanie spojenia medzi klientskou aplikáciou a D20002 a pripája sa z počítača nb1tbac1Nadviazanie spojenia medzi klientskou aplikáciou a D2000.3.
Kotva |
---|
| _Ref422414880 |
---|
| _Ref422414880 |
---|
|
Blok kódu |
---|
|
String USER = "SystemD2000";
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(); |
Kotva |
---|
| _Toc490141241 |
---|
| _Toc490141241 |
---|
|
2.4. Nadviazanie reverzného spojeniaIde o nezabezpečené spojenie medzi D2Connector-om a JConnector-om, pričom klientská aplikácia sa nachádza v DMZ, z ktorej nedokáže iniciovať TCP spojenie. Môže však počúvať na prichádzajúce TCP spojenie, ktoré bude iniciovať D2Connector.
Klientská aplikácia je umiestnená na počítači portal.dmz.customer.com
a počúva na porte 3125 na všetkých svojich sieťových rozhraniach4. D2connector spustíme v režime pripájania sa:
...
Blok kódu |
---|
|
String INTERFACE_NAME = ""; // all interfaces
int PORT_NUMBER = 3125;
ListeningHandle handle = D2Japi.getInstance().startListeningForConnection(INTERFACE_NAME, PORT_NUMBER, listener); |
Kotva |
---|
| _Toc490141242 |
---|
| _Toc490141242 |
---|
|
2.5. Nadviazanie zabezpečeného spojeniaIde o spojenie medzi D2Connector-om a JConnector-om zabezpečené protokolom TLS v1.2. Postup je podobný pre štandardné aj reverzné spojenie, príklad preto zahŕňa obidve možnosti.
Pre nadviazanie TLS spojenia je potrebné, aby bol jeden z účastníkov v roli „TLS servera" a druhý „TLS klienta", pričom tieto roly nie sú závislé na tom, kto inicioval TCP spojenie. „TLS server" sa preukazuje certifikátom, ku ktorému vlastní aj súkromný kľúč. „TLS klient" overuje platnosť certifikátu a pravosť kľúčov5. Pre JAPI je „TLS server" vždy D2Connector a „TLS klient" vždy JConnector.
...
Blok kódu |
---|
|
ListeningHandle handle = D2Japi.getInstance().startListeningForConnection(INTERFACE_NAME, PORT_NUMBER, CERTIFICATE_PATH, listener); |
Kotva |
---|
| _Toc490141243 |
---|
| _Toc490141243 |
---|
|
2.5.1. Vytvorenie certifikátu pre účely zabezpečeného spojeniaPre vytvorenie „self-signed" certifikátu je možné použiť napríklad aplikáciu OpenSSL z príkazového riadku. Najskôr musíme vytvoriť kľúčový pár pre RSA šifru. V príklade generujeme 2048 bitový kľúčový pár do súboru private.pem
.
...
Blok kódu |
---|
language | powershell |
---|
theme | Eclipse |
---|
|
> openssl.exe x509 -req -days 365 -in request.csr -signkey private.pem -out certificate.crt |
Kotva |
---|
| _Toc490141244 |
---|
| _Toc490141244 |
---|
|
2.6. Spojenie riadené triedou RedundantConnectionManagerTrieda RedundantConnectionManager zjednodušuje pripojenie a udržiavanie aktívneho pripojenia k redundantnej skupine6. 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
...