JNDI – environment properties (základné informácie)
Predtým, ako klient bude môcť využiť služby ponúkané JNDI, musí túto službu vyhľadať na sieti a získať spojenie. Znie to ako paradox, pretože klient potrebuje JNDI, aby mohol vyhľadať požadované služby, ale JNDI samotné je v podstate tiež vzdialená služba. Takže ako môže klient použiť menné služby, ak ich predtým musí vyhľadať? Odpoveďou je využitie environment properties.
Environment properties (EP) je jednoduchý spôsob, ako klientská aplikácia môže použiť rôzne vlastnosti a nastavenia potrebné na vytvorenie spojenia s mennou službou. Samozrejme, že v EP môže byť špecifikované ďaleko viac, ako iba údaje potrebné na vyhľadanie JNDI mennej služby. Napríklad tu môžete stanoviť bezpečnostné pravidlá, prihlasovacie údaje, potrebné na pripojenie k službám. Tieto vlastnosti sú špecifické pre konkrétneho klienta. Každá implementácia technológie JNDI môže mať niektoré spoločné environment properties, ale aj niektoré špeciálne, určené len pre danú implementáciu.
Každá JNDI menná služba môže využívať spomínané EP rôznym spôsobom. Naozaj je to tak, že každý JNDI provider má svoje špecifické environment properties, ktoré používa iba on. Tieto špecifické nastavenia musí klient poznať, aby sa mohol pripojiť k ponúkanej službe. Napríklad pre BEA WebLogic EJB server musíte klientskej aplikácii „povedať“, že bude používať WebLogic JNDI službu a kde ju nájde.
Na začiatku je treba konzultovať dokumentáciu k implementácii JNDI, aby bolo možné identifikovať dôležité nastavenia. Môžete sa čudovať, ako je možné zachovať prenositeľnosť klientských aplikácií medzi rôznymi JNDI službami. Riešenie je v použití externého konfiguračného súboru, ako uvidíme neskôr.
Je možné, že k správnemu nastaveniu bude treba ešte ďalšie informácie, v závislosti od SPI. Typicky bude treba vytvoriť niekoľko párov kľúč=hodnota
, kde kľúč je textový reťazec definujúci konkrétnu property. Napríklad jeden z používaných kľúčov je java.naming.provider.url
. Tomuto kľúču sa následne priradí hodnota. Čo môže byť napríklad ldap://ldap.com:389
.
Nasledujúca tabuľka obsahuje zoznam štandardných environment properties, ktoré sa môžu použiť v implementáciách JNDI. Všetky majú prefix java.naming
, pre úsporu miesta ho neuvádzam. Takže napríklad hneď prvá EP má plný názov java.naming.applet
. V konfiguračnom súbore je samozrejme nutné tento prefix uviesť.
Property | Popis |
---|---|
applet |
V prípade, že k JNDI službe chcete pristupovať z appletu, ako hodnotu uvediete plne kvalifikovaný názov vašej triedy, ktorá je potomkom triedy java.applet.Applet . |
authoritative |
Tento kľúč môže nadobúdať dve hodnoty, true alebo false. V prípade, že uvediete true, bude obídená pamäť cache JNDI implementácie. Štandardná hodnota je false. |
batchsize |
Hodnota kľúču určuje veľkosť „dávky“ dát, ktorá bude naraz vrátená službou. Musí sa udávať v celých číslach. Jedná sa obvykle o ignorovaný parameter. |
dns.url |
Používa sa na špecifikovanie DNS názvového servera použitého v súvislosti s JNDI URL kontextom. Tiež nebýva často využívaný. |
factory.initial |
Tento kľúč určuje, ktorá factory trieda bude zodpovedná za vytvorenie takzvaného initial context objektu. Musí ísť o plne kvalifikované meno. |
language |
Špecifikuje preferovaný jazyk. Ak nebude stanovený, použije sa nastavenie od poskytovateľa. |
factory.object |
Zoznam plne kvalifikovaných názvov tried použitých na vytváranie JNDI objektov. Na oddelenie sa používa dvojbodka. |
provider.url |
Tento kľúč definuje URL ukazujúci na informácie potrebné na správne nakonfigurovanie SPI rozhrania. |
referral |
Kľúč špecifikuje, akým spôsobom budú spracované špeciálne kľúčové odkazy poskytnuté providerom. Môže ísť o tieto tri odkazy: „follow“, „ignore“, „throw“. |
security.authentication |
Použije sa na nastavenie bezpečnostnej úrovne. Môže ísť o tieto tri úrovne: „none“, „simple“, „strong“. |
security.credentials |
Špecifikuje bezpečnostné prístupové heslo. Závisí od použitej autentifikačnej schémy. Ak nie je špecifikované, ďalší postup je závislý od poskytovateľa. |
security.principal |
Špecifikuje bezpečnostnú identitu (užívateľské meno) pre autentifikáciu žiadateľa o službu. Opäť jeho použitie je závislé od použitej schémy. |
security.protocol |
Použije sa na stanovenie použitého bezpečnostného protokolu. Jeho označenie je určované poskytovateľom JNDI implementácie. Napríklad to môže byť SSL. |
factory.state |
Táto vlastnosť by mala obsahovať zoznam plne kvalifikovaných názvov tried, ktoré budú použité na vrátenie stavu objektu daného objektom samotným. |
Všimnite si prosím, že jednotlivé uvedené environment properties musia mať prefix java.naming
. Mohli by ste si to totiž zameniť za JNDI API, ktoré je definované v balíčku javax.naming
Pre každú jednu EP uvedenú v tabuľke definuje rozhranie javax.naming.Context
statickú String konštantu, ktorá môže byť použitá priamo vo vašom zdrojovom kóde. Takže ak napríklad potrebujete špecifikovať alebo zmeniť vlastnosť java.naming.initial.context
, môžete tak vykonať programovo použitím konštanty Context.INITIAL_CONTEXT_FACTORY
. Odporúča sa používať práve tieto konštanty. Samozrejme, že ich nemôžete použiť v konfiguračnom súbore.
Dve EP sú veľmi dôležité, bez ohľadu na poskytovateľa služby. Sú to tieto dve vlastnosti: java.naming.factory.initial
a java.naming.provider.url
.
java.naming.factory.initial
Hodnota tohto kľúča je textový reťazec špecifikujúci názov triedy, ktorá bude vedená ako initial context factory. Táto trieda bude zodpovedná za vytváranie referencií na objekt triedy InitialContext
. Zatiaľ sme sa ešte nezaoberali spomínanými objektmi InitialContext
alebo Context
. Nateraz si môžete predstaviť, že Context
je referencia na prepojenie vo vnútri mennej služby a InitialContext
je referencia na najvyššiu úroveň mennej služby.
Nasleduje príklad nastavenia tejto vlastnosti pre BEA WebLogic JNDI rozhranie:
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
Ak by ste nešpecifikovali túto EP alebo by ste ju špecifikovali chybne, výsledkom by bolo vyhodenie výnimky NoInitialContextException
alebo prípadne NamingException
, pri pokuse o pripojenie sa k mennej službe.
java.naming.provider.url
Hodnota tohto kľúča je tiež textový reťazec, uchovávajúci informáciu určenú pre SPI (Service Provider Interface). Hoci syntax hodnoty kľúča je závislá od poskytovateľa služby, obvykle dodržuje formát protokol://host:port
.
Pre spomínaný BEA WebLogic potom bude vyzerať nasledovne:
java.naming.provider.url=t3://localhost:7001
Protokol t3 je natívny protokol spoločnosti BEA, ale často sa využívajú aj iiop a ldap protokoly. V skratke povedané, uvedené URL informuje SPI rozhranie o tom, kde sa nachádza JNDI služba, kde sa nachádzajú potrebné objekty, o ktorých vyhľadanie budeme mať záujem.
Mohlo by vás také zajímat
-
Globální výpadek IT systémů: Může za to jediná aktualizace
19. července 2024 -
Členská sekce: 4 důvody proč ji mít na svém webu
12. března 2024 -
ZONER Webmail jako první v Česku přináší BIMI s VMC
11. července 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024