X Код для використання на сайті:
Ширина px

Скопіюйте цей код і вставте його на свій сайт

X Для завантаження презентації, скористайтесь соціальною кнопкою для рекомендації сервісу SvitPPT Завантажити собі цю презентацію

Презентація на тему:
Java Naming and Directory Interface (JNDI) – одна з “універсальних” служб мови Java

Завантажити презентацію

Java Naming and Directory Interface (JNDI) – одна з “універсальних” служб мови Java

Завантажити презентацію

Презентація по слайдам:

Слайд 1

Java Naming and Directory Interface (JNDI) – одна з “універсальних” служб Java 2007-2008 JNDI

Слайд 2

Зміст JNDI та конкретні служби іменування Особливості налаштування JNDI (JRMP – IIOP) портабельність Java RMI-проектів JNDI

Слайд 3

Пригадаємо RMI/JRMP , "RMI-реєстратор" JNDI

Слайд 4

Пригадаємо RMI/IIOP-проекти та orbd rmic -iiop CalcImplPortable orbd -ORBInitialPort 1050 (“постійна” служба іменування, забезпечується “зворотна” сумісність із застарілою “тимчасовою” службою іменування tnameserv) java -Djava.naming.factory.initial = com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url = iiop://localhost:1050 HostIIOP java -Djava.naming.factory.initial = com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url = iiop://localhost:1050 CalcClientIIOP - параметри (змінні), що забезпечують налаштування JNDI на конкретну реалізацію цього API (конкретну службу іменування) – тут orbd. 1 2 1, 2 1 2 orbd є повноцінною (у відповідності зі стандартом CORBA) службою іменування JNDI

Слайд 5

Java Naming and Directory Interface (JNDI) – “універсальна” служба імен та каталогів Клієнт Сервер JNDI 1: реєстрація (публікація) - з іменем 2: пошук - за іменем 3: . . . Context ctx = new InitialContext(); ctx.rebind("SmIIOP", stub); Context ic = new InitialContext(); Sm sm = (Sm)ic.lookup("SmIIOP"); Адаптер (драйвер) 0: налаштування Конкретна служба іменування ( реалізація API JNDI ) параметри JNDI

Слайд 6

JNDI та конкретні служби іменування Специфікою JNDI є можливість завдяки спеціальним адаптерам “налаштовувати” JNDI на конкретні служби іменування: JNDI Rmiregistry Orbd Файлова система SUN Tnameserv JNDI

Слайд 7

Особливості налаштування JNDI Загалом налаштування JNDI забезпечується environment-змінними JNDI, проте важливо зазначити наступне: разом з environment-змінними JNDI визначені однойменні системні змінні Java (це так звані змінні-дублери, значення яких використовується для налаштування при невизначеності environment-змінних JNDI); з environment-змінними JNDI спряжені статичні властивості (константи) JNDI інтерфейсу Context, які також можуть використовуватись для налаштування JNDI (надання значень environment-змінним JNDI). Найчастіше використовуються наступні варіанти налаштування: шляхом надання значень системним змінним, використовуючи параметри командного рядка; шляхом надання значень властивостям (properties) інтерфейсу Context або безпосередньо у конструкторі InitialContext (це чисто програмний варіант налаштування), або ж у ресурсному файлі JNDI (у файлі jndi.properties). JNDI

Слайд 8

Системні параметри налаштування JNDI та властивості JNDI інтерфейсу Context Серед обов'язкових системних параметрів налаштування JNDI є два, для яких не передбачено замовчування, а отже їх завжди треба задавати через параметри командного рядка: java.naming.factory.initial цьому параметру відповідає (з ним спряжена) властивість Context.INITIAL_CONTEXT_FACTORY java.naming.provider.url цьому параметру відповідає (з ним спряжена) властивість Context. PROVIDER_URL INITIAL_CONTEXT_FACTORY PROVIDER_URL JNDI

Слайд 9

Приклади налаштування JNDI Використання параметрів командного рядка (тобто налаштування через системні змінні): java -Djava.naming.factory.initial = com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url = iiop://localhost:1050 HostIIOP Програмне налаштування (з використанням конструктора InitialContext та Properties): Properties props = new Properties(); props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.cosnaming.CNCtxFactory"); props.put(Context.PROVIDER_URL, " iiop://localhost:1050"); try { Context cntx = new InitialContext(props); … JNDI

Слайд 10

Параметр java.naming.factory.initial Параметр java.naming.factory.initial (йому відповідає властивість Context.INITIAL_CONTEXT_FACTORY) - уточнюється ім'я класу фабрики початкового контексту (такі імена мають надаватись розробниками конкретних служб іменування). Приклади імен класів фабрик початкового контексту для конкретних служб: com.sun.jndi.cosnaming.CNCtxFactory - для orbd чи tnameserv; com.sun.jndi.rmi.registry.RegistryContextFactory - для rmiregistry; com.sun.jndi.fscontext.RefFSContextFactory - для файлової системи SUN. JNDI

Слайд 11

Параметр java.naming.provider.url Параметр java.naming.provider.url (йому відповідає властивість Context.PROVIDER_URL) - уточнюється URL служби імен – IP-адреса вузла, порт та протокол, що використовуються службою. Приклади URL : iiop://localhost:1050 - для orbd чи tnameserv; rmi://localhost:1099 - для rmiregistry; file://c:/. . . - для файлової системи від SUN. Протоколи JNDI

Слайд 12

Порівняння проектів RMI/JRMP та RMI/ IIOP (Java-модулі SmServer та SmClient) Ключова відмінність: використовується JNDI (Java Naming and Directory Interface) – “універсальна” служба імен та каталогів використовується "RMI-реєстратор" JNDI

Слайд 13

JNDI та новий рівень (JRMP -IIOP) портабельності public class SmPImpl implements Sm{ public SmPImpl() throws Exception {} public float add(float arg1, float arg2) throws Exception { return (arg1 + arg2); }} public interface Sm extends java.rmi.Remote { float add(float arg1, float arg2) throws Exception; } SmPImpl obj = new SmPImpl(); Sm stub = (Sm)UnicastRemoteObject.exportObject(obj); Context ctx = new InitialContext(); ctx.rebind("SmJRMP", stub); SmPImpl.java Sm.java SmPImpl obj = new SmPImpl(); PortableRemoteObject.exportObject(obj); Sm stub = (Sm)obj; Context ctx = new InitialContext(); ctx.rebind("SmIIOP", stub); HostSmJRMP_JNDI.java (фрагмент) HostSmIIOP _JNDI.java (фрагмент) Context ic = new InitialContext(); Sm sm = (Sm)ic.lookup("SmIIOP"); System.out.println( sm.add(3, 2) ); Context ic = new InitialContext(); Sm sm = (Sm)ic.lookup("SmJRMP"); System.out.println( sm.add(3, 2) ); ClientSmJRMP.java (фрагмент) ClientSmIIOP.java (фрагмент) Не змінювані, спільні модулі Віддалений інтерфейс Клас реалізації віддаленого інтерфейсу JNDI JNDI

Слайд 14

Додаток JNDI

Слайд 15

JNDI. Interface Context public interface Context { public Object lookup(Name name) throws NamingException; public void bind(Name name, Object obj) throws NamingException; public void rebind(Name name, Object obj) throws NamingException; public void unbind(Name name) throws NamingException; public void rename(Name old, Name new) throws NamingException; public NamingEnumeration listBindings(Name name) throws NamingException; ... public Context createSubcontext(Name name) throws NamingException; public void destroySubcontext(Name name) throws NamingException; ... }; JNDI

Слайд 16

JNDI. Interface DirContext public interface DirContext extends Context { public Attributes getAttributes(Name name) throws NamingException; public Attributes getAttributes(Name name, String[] attrIds) throws NamingException; ... public void modifyAttributes(Name name, int modOp, Attributes attrs) throws NamingException; public void modifyAttributes(Name name, ModificationItem[] mods) throws NamingException; ... } JNDI

Завантажити презентацію

Презентації по предмету Інформатика