Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемВарвара Вагнер
1 Evgeniy Krivosheev Vyacheslav Yakovenko Last update: Feb, 2012 Spring Framework Module 4 – JNDI
2 2 Содержание Интеграция Spring c JNDI
3 3 Spring :: Интеграция c JNDI Основной функцией любой службы имен является отображение понятных для людей имен объектов ( таких как адреса, идентификаторы ) и их связывания с объектами, которые обычно используются в ПО. Например, DNS переводит имена компьютеров ( в IP- адреса ( ).
4 4 Spring :: JNDI JNDI – Java Naming and Directory Interface Предназначен для мэппинга имени к объектам в распределенной системе
5 5 Spring :: JNDI Операции над каталогом JNDI: // get the Initial Context Context ctx = new InitialContext(); // bind object String name = "mary"; String = ctx.bind(name, ); // lookup object String str = (String) ctx.lookup("mary"); // unbind object ctx.unbind(name);
6 6 Spring :: JNDI new InitialContext()
7 7 Spring :: JNDI vs. IoC / DI AB AB Репозиторий JNDI Имя B_NAME для поиска B Регистрация в JNDI под именем B_NAME Традиционный подход: связи между объектами внутри кода Паттерн Service Locator (JNDI в JEE): объекты в репозитории IoC: объекты ничего не знают друг о друге AB Application context - создает объект A - инициализирует - создает объект A - инициализирует, сообщая о B class A { private B b; } class B { }
8 8 Spring :: Интеграция c JNDI В большинстве случаев, в производстве обращение к JNDI требуется для получения доступа к DataSource и JtaTransactionManager. Spring предоставляет достаточно простой и интуитивно понятный вариант обращения к ним:
9 9 Spring :: Интеграция c JNDI Тем не менее поддержка JNDI в Spring, на этом не заканчивается; Основные классы для работы с JNDI в Spring: –org.springframework.jndi.JndiTemplate –Interface org.springframework.jndi.JndiCallback –org.springframework.jndi.JndiObjectFactoryBean
10 10 Spring :: Интеграция c JNDI org.springframework.jndi.JndiTemplate: Отвечает за операции поиска и связывания объектов (lookup, binding, rebinding, unbind); А также предоставляет интерфейс основанный на callbackах: – T execute(JndiCallback contextCallback) Пример: JndiTemplate template = new JndiTemplate(); … template.bind("SomeKey", "SomeValue"); … String value = (String)template.lookup("SomeKey"); template.rebind("SomeKey", "SomeOtherValue");
11 11 Spring :: Интеграция c JNDI org.springframework.jndi.JndiCallback : Например, если мы хотим логировать JNDI операции необходимо: –Создать новый класс, реализующий JndiCallback; –Передать его в метод execute из JndiTemplate;
12 12 Spring :: Интеграция c JNDI org.springframework.jndi.JndiCallback : JndiTemplate template = new JndiTemplate(); CustomJndiAccessForLogging callback = new CustomJndiAccessForLogging("key"); Object result = template.execute(callback); public class CustomJndiAccessForLogging implements JndiCallback { private String key; public CustomJndiAccessForLogging(String key) { this.key = key;} public Object doInContext(Context context) throws NamingException { System.out.println("Start lookup operation"); Object value = context.lookup(key); System.out.println("End lookup operation"); return value; }
13 13 Spring :: Интеграция c JNDI org.springframework.jndi.JndiObjectFactoryBean : Отвечает за получение информации из JNDI репозитория; Основная стратегия – поиск и кэширование объектов; Она может быть изменена декларативно или программно;
14 14 Spring :: Интеграция c JNDI org.springframework.jndi.JndiObjectFactoryBean : В бине InfoFromJndi значение поля welcomeMessage должно браться из JNDI Вместо атрибута value для свойства welcomeMessage определен JndiObjectFactoryBean – он получает значение из JNDI public class InfoFromJndi { String welcomeMessage; }
15 15 Вопросы!?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.