Keşfet

JNDI Nedir?

Webci-Abi

Yeni Üye
Katılım
1 Nis 2021
Mesajlar
93
Tepkime puanı
0
Puanları
0
Yaş
29
Java Naming and Directory Interface (JNDI) : Java İsimlendirme ve Dizin Interface sınıfından türetilmiş bir Java API'sidir. JNDI sayesinde bağımsız Java yazılım istemcileri keşfetmek ve bir isim üzerinden veri ve nesneleri aramak için kullanılır. Uygulama altında JNDI sınıfı bağımsızdır. Ek olarak, JNDI uygulamaları çerçevesinde takılı izin veren bir servis sağlayıcı arayüzü (SPI : Service Provider Interface) belirtir, böylelikle frameworklerin içinede rahatça plugin mantığı ile eklenebilir. Bir server kullanımı, düz bir dosya ya da bir veri tabanı hale getirmektedir; tercih kadar satıcıya etmektir.



JNDI API bir ağ nesneleri aramak için Java RMI ve Java EE API'ler tarafından kullanılır. JINI kendi arama servisi vardır ve JNDI API kullanmaz. Api ;
- Bir objeyi isim referansı ile bir mekanizmaya bağlar,
- genel sorgular için bir dizine arama arabirimi sağlar,
- girişleri modifiye edildiğinde müşterileri belirlemek olanak veren bir olay arabirim sağlar,
- LDAP hizmet ek yeteneklerini desteklemek üzere, LDAP uzantıları sağlar.
jw-0419-jndi.gif



apısına basitçe bir göz atacak olursak;
JNDI (Java İsimlendirme ve Dizin Arabirimi) bir hiyerarşi içinde kendi isimlerini düzenlemektedir. Bir isim gibi "com.mydomain.ejb.MyBean" gibi herhangi bir dize olabilir. Bir adı da Adı arabirimini destekleyen bir nesne olabilir, ancak bir dize bir nesneyi adlandırmak için en yaygın yoldur. Bir isim nesne veya adıyla tanımlanan dizin hizmetinde nesnesine bir başvuru ya depolayarak dizindeki bir nesneye bağlıdır.
JNDI API bir nesne aramak için belirtir bir bağlam tanımlar.Başlangıç bağlamda tipik bir başlangıç noktası olarak kullanılır.
En basit durumda, bir ilk bağlamda uygulanması için gerekli özel uygulama ve ek parametre kullanılarak oluşturulması gerekir.İlk bağlamda bir isim aramak için kullanılacaktır.İlk bağlamda bir dosya sistemi için kök veya bir dizin ağacı üst benzer. Aşağıda, bir başlangıç bağlamda oluşturarak bir örneğidir:


PHP- Kodu:
Kod:
[LEFT][CODE][COLOR=#000000] [COLOR=#0000BB] Hashtable contextArgs [/COLOR][COLOR=#007700]= new [/COLOR][COLOR=#0000BB]Hashtable[/COLOR][COLOR=#007700]();   
   [/COLOR][COLOR=#FF8000]// İlk olarak context factory'i tanımlamalısınız //Bu örnek bir JBoss uygulamasıdır
 [/COLOR][COLOR=#0000BB]contextArgs[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]put[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#0000BB]Context[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]INITIAL_CONTEXT_FACTORY[/COLOR][COLOR=#007700], [/COLOR][COLOR=#DD0000]"com.jndiprovider.TheirContextFactory" [/COLOR][COLOR=#007700]);  
    [/COLOR][COLOR=#FF8000]// URL datanın nerede tutulduğunu belirtir
 [/COLOR][COLOR=#0000BB]contextArgs[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]put[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#0000BB]Context[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]PROVIDER_URL[/COLOR][COLOR=#007700], [/COLOR][COLOR=#DD0000]"jndiprovider-database" [/COLOR][COLOR=#007700]);    
  [/COLOR][COLOR=#FF8000]//Gerekli güvenlik önlemlerininde alınmasını gerekmektedir   
   // Başlangıç context(bağlam)'i üretiyoruz.
 [/COLOR][COLOR=#0000BB]Context myCurrentContext [/COLOR][COLOR=#007700]= new [/COLOR][COLOR=#0000BB]InitialContext[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]contextArgs[/COLOR][COLOR=#007700]);  [/COLOR][/COLOR]
[/LEFT][/CODE]

Bir bağlam o bağlamda daha önce bağlı isimleri aramak için kullanılır. Örneğin:


PHP- Kodu:
Kod:
[LEFT][ICODE][COLOR=#000000] [COLOR=#0000BB]MyBean myBean [/COLOR][COLOR=#007700]= ([/COLOR][COLOR=#0000BB]MyBean[/COLOR][COLOR=#007700])  [/COLOR][COLOR=#0000BB]myCurrentContext[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]lookup[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"com.mydomain.MyBean"[/COLOR][COLOR=#007700]);  [/COLOR][/COLOR][/ICODE][/LEFT]

Yukarıdaki kodu alternatif aşağıdaki gibidir: Context(Bağlam) nesnesi ayrıca sınıf içeren ilk bağlamda fabrika sınıfı adı ve sağlayıcı URL jndi.properties dosyayı ekleyerek yapılandırılabilir.Yukarıda kodu, aşağıda gösterildiği gibi azalacaktır:


PHP- Kodu:
Kod:
[LEFT][CODE][COLOR=#000000] [COLOR=#FF8000]//Başlangıç context objesini üretip, sonra jndi.properties dosyasından path vererek okumaya çalışmak.  
   [/COLOR][COLOR=#0000BB]Context myCurrentContext [/COLOR][COLOR=#007700]= new [/COLOR][COLOR=#0000BB]InitialContext[/COLOR][COLOR=#007700]()  [/COLOR][/COLOR]
[/LEFT][/CODE]

; Bir bağlam o bağlamda daha önce bağlı isimleri aramak için kullanılır. Örneğin:


PHP- Kodu:
Kod:
[LEFT][ICODE][COLOR=#000000] [COLOR=#0000BB]MyBean myBean [/COLOR][COLOR=#007700]= ([/COLOR][COLOR=#0000BB]MyBean[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]myCurrentContext[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]lookup [/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"com.mydomain.MyBean"[/COLOR][COLOR=#007700]);  [/COLOR][/COLOR][/ICODE][/LEFT]
 
Güzel bilgiler için teşekkürler
 

Konu görüntüleyen kullanıcılar

Benzer konular

Geri
Üst