Настроить пул соединений с базой данных JNDI в Spring и Tomcat довольно просто. Документация сервера Tomcat дает достаточно информации о том, как настроить пул соединений в Tomcat 5, 6 или 7. Здесь мы будем использовать Tomcat 7 вместе со средой Spring для создания пула соединений на сервере Tomcat и доступа к ним в Spring с использованием кода JNDI. В нашей последней статье мы увидели, как настроить пул соединений с базой данных в Spring для основного Java-приложения, которое не работает на веб-сервере или сервере приложений и не имеет управляемого контейнера J2EE. но если вы разрабатываете веб-приложение, лучше использовать более управляемый пул соединений и обращаться к ним с помощью JNDI. Конфигурация Spring будет общей и основана только на имени источника данных JNDI, поэтому она будет работать на любом сервере J2EE, например, Glassfish , WebLogic , JBoss или WebSphere, пока имя JNDI не будет одинаковым.
Кстати, Tomcat — мой любимый веб-сервер, и я часто его использую при разработке, поскольку он интегрирован с такими средами IDE, как Eclipse и Netbeans. Я использую его для всех целей тестирования и разработки, и многие компании даже используют Tomcat в Production для размещения веб-приложений на Java.
Это просто, быстро и очень надежно , хотя будьте осторожны с java.lang.OutOfMemoryError: пространство PermGen в tomcat , которое может вызвать утечку памяти в приложении Java. Обычно это происходит из-за переменных ThreadLocal и драйверов JDBC, но вы наверняка можете избежать этого, зная больше
Как использовать пул соединений с базой данных JNDI в Tomcat и Spring
Существует три шага для настройки и запуска пула соединений источника данных JNDI для любого веб-приложения Java:
1) Настройте источник данных на сервере и создайте имя JNDI.
2) Настройте web.xml
3) Настройте bean-компонент Spring с источником данных JNDI
4) Включите библиотеку драйвера JDBC на сервере lib, например, tomcat / lib
Чтобы создать JNDI DataSource на веб-сервере J2EE, вам необходимо следовать документации по серверу. В Tomcat 6 вы можете просто поместить следующий фрагмент XML в context.xml для создания пула соединений управляемой базы данных Tomcat:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
<<?xml version="1.0" encoding="UTF-8"?><Context antiJARLocking="true" path="/springDataSourceDemo"><Resource name="jdbc/springeDataSource" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:SPRING_TEST" username="root" password="root" removeAbandoned="true" removeAbandonedTimeout="90" logAbandoned="true" maxActive="20" maxIdle="10" maxWait="-1"/></Context> |
Элемент Resource создаст источник данных JNDI, на который можно ссылаться, используя имя JNDI « jdbc/springeDataSource ».
Tomcat внутренне использует DBCP и библиотеку пула Commons для управления пулом соединений с базой данных. Вы можете проверить каталог tomcat/lib наличие файла jar tomcat-dbcp.jar который отвечает за создание пула соединений с базой данных на сервере tomcat.
1. Настройка web.xml для доступа к пулу соединений с базой данных JNDI.
Чтобы получить доступ к любому ресурсу сервера из вашего веб-приложения, вам необходимо указать ресурсы JNDI в файле web.xml.
Вы можете использовать следующий XML для объявления источника данных JNDI в
|
1
2
3
4
5
6
|
<resource-ref> <description>Oracle Spring JNDI Datasource</description> <res-ref-name>jdbc/springDataSource</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth></resource-ref> |
Теперь ваше веб-приложение увидит источник данных JNDI, созданный в tomcat с именем jdbc/springDataSource .
2. Конфигурация Spring для доступа к источнику данных JNDI:
Эта весенняя конфигурация достаточно универсальна, и ее можно использовать для доступа к любому источнику данных JNDI, развернутому на любом сервере J2EE или Java EE. Это не связано с Tomcat. org.springframework.jndi.JndiObjectFactoryBean используется для поиска источника данных JNDI и связывания с javax.sql.DataSource .
|
1
2
3
4
5
|
<bean id="springDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/springDataSource"/> <property name="lookupOnStartup" value="true"/> <property name="proxyInterface" value="javax.sql.DataSource"/></bean> |
Я использовал способ XML для объявления Spring-компонента здесь, но, если вы используете Spring 3.0 или выше, вы также можете использовать конфигурацию Java и аннотацию @Bean для объявления источника данных в приложении Spring.
3. Файл драйвера JDBC в Tomcat Lib
Теперь последний шаг — убедиться, что в tomcat lib есть jar-файл драйвера JDBC . Я обычно помещаю JAR-файл в каталог lib tomcat, но вы можете поместить его в любое место, где это имеет смысл, и модифицируйте tomcat classpath для включения драйвера JAR в classpath.
Теперь остаток кода, который использует этот источник данных, должен оставаться таким же. Вы можете получить исходный код Spring DAO из предыдущей статьи Как настроить пул соединений с базой данных в среде Spring .
PS — Если вы хотите узнать, как разрабатывать RESTful Web Service с использованием Spring MVC, я предлагаю вам присоединиться к REST с сертификационным классом Spring от Eugen Paraschiv. Один из лучших курсов для изучения REST с Spring MVC.
| См. Оригинальную статью здесь: Как настроить пул соединений с базой данных JNDI в Tomcat — Spring Tutorial Example
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |
