Вам необходимо создать источник данных JNDI в контейнере сервлетов. По умолчанию это источник данных, объединенный в пул. Как это сделать, зависит от производителя / версии сервлетконтейнера. Итак, вот только целевой пример Tomcat:
Сначала создайте файл /META-INF/context.xml
(чтобы быть понятным, META-INF находится на том же уровне, что и WEB-INF веб-приложения) и заполните его следующим (предположим, MySQL DB).
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="jdbc/mydatabase" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
url="jdbc:mysql://localhost:3306/mydatabase"
driverClassName="com.mysql.jdbc.Driver"
username="java" password="pass"
/>
</Context>
Затем зарегистрируйте его в своем веб-приложении /WEB-INF/web.xml
.
<resource-env-ref>
<resource-env-ref-name>jdbc/mydatabase</resource-env-ref-name>
<resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
</resource-env-ref>
Получите его следующим образом в вашем менеджере баз данных / классе DAO.
try {
this.dataSource = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/mydatabase");
} catch (NamingException e) {
throw new RuntimeException("DataSource is missing in JNDI.", e);
}
Наконец, получите его соединение внутри метода DAO, где вы выполняете запрос.
connection = dataSource.getConnection();
Не забудьте close()
это внутри finally
из try
, где вы его получаете.
Смотри также: