#java #tomcat
Попытался настроить отдельный сервер с JNDI на Tomcat 7 и обнаружил, что это невозможно. Я правильно понимаю, что доступ к ресурсам Tomcat может обеспечить только в пределах текущей Java-машины, на которой крутится сам Tomcat? Из этого следует, что получить объект, соединения с базой могут только приложения, запущенные в контексте Tomcat'a, на котором поднят JNDI? В связи с этим назрел вопрос^ а зачем это тогда вообще надо - не проще ли пользоваться конфигурационными файлами и нативными объектами внутри приложения, которому это необходимо? Я планировал поднять сервер с jndi и использовать его как единый сервис доступа к данным для различных приложений, составляющих единый программный комплекс. Как используется jndi в архитектурном смысле в распределенных системах?
Ответы
Ответ 1
JNDI не предназначен для распределённого использования по разным серверам. Для распределённого исполнения используется вызов удалённых процедур. Собственно для чего нужен jndi? Представь, что есть у тебя 2 сервака. Делать отдельные сборки для каждого вполне пойдёт. А что если их 5, или 10? Одна правка должна будет вылиться в 5, 10 реальных правок. Плюс, по-хорошему, каждую сборку надо тестировать. Вот другая ситуация. Ты написал приложение, которое является частью программного комплекса. Другой человек решил встроить его у себя, чтобы посмотреть всю цепочку локально. И теперь он должен обратится к тебе, чтобы ты сделал ему отдельную сборку. Накладно получается. А если их опять 5 или 10? Собственно JNDI это и есть в большинстве случаев конфигурация, приходящая из вне, с сервера. Кроме того, в случае с базой данных, при использовании jndi, от приложения скрыто реальное нахождение базы, а также имя пользователя и пароль, поэтому их нельзя украсть. Так же можно легко переключится на другую базу просто сделав правки в свойствах jndi, не трогая само приложения (только перезапустив).
Комментариев нет:
Отправить комментарий