Настроить пул соединений с базой данных 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, являются их собственными. |