2016-04-11 3 views
0

Я проверяю код веб-страницы java, фактически веб-сайт портфеля Liferay.Что такое класс «Контекст» java?

Я проверял файлы на сервере на стороне сервера. И в файле шаблона DAO, видя, как программист имел дело с соединениями с БД. Я привык к Java SE, где вы обычно получаете объект Connection вызова к DriverManager класса, но здесь, вещи довольно разные:

initContext = new InitialContext(); 
envContext = (Context) initContext.lookup("java:/comp/env"); 
ds = (DataSource) envContext.lookup("jdbc/SSMoracle"); 
conn = ds.getConnection(); 

Делая это, объект conn получает правильное подключение к БД, и он отлично работает. Я никогда не видел, как это работает, особенно класс Context.

Что делает этот класс и почему он используется вместо использования класса, который вызывает DriverManager, чтобы получить правильное соединение? Я хотел бы знать!

+0

Контекст является интерфейс. –

+0

Это основной класс JNDI. Вам нужно прочитать некоторую документацию. Слишком широкий. – EJP

ответ

2

Это часть JNDI, интерфейса именования и интерфейса Java. Это одна из услуг, предлагаемых контейнером Java EE.

Приложения могут искать такие вещи, как источники данных (для доступа к базе данных) в JNDI. Администратор может определить и настроить источник данных в консоли администрирования контейнера Java EE.

Строки кода, которые у вас есть в вашем вопросе, делают именно это: найдите DataSource через JNDI, а затем получите соединение с базой данных с DataSource.

Посмотрите, например, документация Apache Tomcat, чтобы увидеть, как это работает, когда вы будете использовать Tomcat контейнер сервлетов: JNDI Resources HOW-TO и JNDI Datasource HOW-TO

+0

Спасибо! Но почему я должен использовать это, а не просто использовать соединение, получающее абстрактный класс (который использует DriverManager), например? Другими словами, как вы думаете, необходимо использовать JNDI в проекте J2EE? – Zerok

+0

Поскольку это дает администратору центральное место для управления подключениями к базе данных (в консоли администратора сервера Java EE) и потому, что это позволяет делать [пул соединений] (https://en.wikipedia.org/wiki/Connection_pool). – Jesper

+0

Является ли объединение пул достаточным для улучшения производительности, чтобы рассмотреть возможность применения JNDI вместе с пулом соединений для каждого проекта Java EE? – Zerok

Смежные вопросы