powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / maven+tomcat где правильно хранить jdbc драйвера????
33 сообщений из 33, показаны все 2 страниц
maven+tomcat где правильно хранить jdbc драйвера????
    #39232949
gema
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть проект spring+maven+tomcat. И у меня встал вопрос где более правильно хранить jdbc драйвера, в tomcat/lib или локально в проекте project/WEB-INF/lib? Читала,что более правильно все же в tomcat, но как заставить maven подлючить библиотеки из tomcat/lib?
Пробовала в pom.xml прописать:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
....
<properties>
	<oracle.version>14</oracle.version>
	<jaybird.version>2.2.5</jaybird.version>
</properties>
....
<build>
		
		<plugins>
                      <plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>tomcat-maven-plugin</artifactId>
				<version>2.0</version>
				<configuration>
					<mode>context</mode>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>ojdbc</groupId>
						<artifactId>ojdbc</artifactId>
						<version>${oracle.version}</version>
					</dependency>
					<dependency>
						<groupId>org.firebirdsql.jdbc</groupId>
						<artifactId>jaybird-jdk17</artifactId>
						<version>${jaybird.version}</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>



DbConfig.java

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
package com.himprom.config;

import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
@EnableTransactionManagement

public class DbConfig {
	
	@Bean(destroyMethod = "close")
	public DataSource getDataSource1(){
	    HikariConfig hikariConfig = new HikariConfig();
	    hikariConfig.setDriverClassName("oracle.jdbc.pool.OracleDataSource");
	    hikariConfig.setJdbcUrl("jdbc:oracle:thin:@....."); 
	    hikariConfig.setUsername("........");
	    hikariConfig.setPassword(".........");

	    hikariConfig.setMinimumIdle(1);
	    hikariConfig.setMaximumPoolSize(1);
	    hikariConfig.setConnectionTestQuery("SELECT 1 from dual");	  
	    hikariConfig.addDataSourceProperty("dataSource.cachePrepStmts", "true");
	    hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSize", "250");
	    hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSqlLimit", "2048");
	    
	    hikariConfig.addDataSourceProperty("dataSource.useServerPrepStmts", "true");
	    HikariDataSource dataSource = new HikariDataSource(hikariConfig);
	    return dataSource;   
	    	    
	}

	@Bean(destroyMethod = "close")
	public DataSource getDataSource2(){
	    HikariConfig hikariConfig = new HikariConfig();
	    hikariConfig.setDriverClassName("org.firebirdsql.jdbc.FBDriver");
	    hikariConfig.setJdbcUrl("jdbc:firebirdsql:.........."); 
	    hikariConfig.setUsername("........");
	    hikariConfig.setPassword(".........");
	    hikariConfig.setMinimumIdle(1);
	    hikariConfig.setMaximumPoolSize(1);	 
	    hikariConfig.addDataSourceProperty("dataSource.cachePrepStmts", "true");
	    hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSize", "250");
	    hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSqlLimit", "2048");	    
	    hikariConfig.addDataSourceProperty("dataSource.useServerPrepStmts", "true");
	    HikariDataSource dataSource = new HikariDataSource(hikariConfig);
	    return dataSource;   	    	    
	}
}



,но получаю ошибки
Код: powershell
1.
Error creating bean with name 'getDataSource2' defined in class path resource [com/himprom/config/DbConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'getDataSource2' threw exception; nested exception is java.lang.NoClassDefFoundError: javax/resource/ResourceException.........



При этом если прописать драйвера просто в maven dependencies,то все подлючения к БД проходят.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39232952
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gema,

имхо, в maven dependencies - более прозрачно для читающего, а так поди знай, что там на сервере в либах
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233057
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gemaЕсть проект spring+maven+tomcat. И у меня встал вопрос где более правильно хранить jdbc драйвера, в tomcat/lib или локально в проекте project/WEB-INF/lib? Читала,что более правильно все же в tomcat, но как заставить maven подлючить библиотеки из tomcat/lib?

При этом если прописать драйвера просто в maven dependencies,то все подлючения к БД проходят.

В мавен есть понятие scope которое указывает на каком уровне подключать библиотеки. В вашем случае это будет кажется provided.
Т.е. в проекте библиотека подключится. В IDE будут работать подсказки в сборку эти файлы не попадут и если эту war-ку положить в томкат где недоступты классы jdbc Драйвера то тупо получите ClassNotFoundException.

По аналогии для web приложения требуется servlet-api dependencн который уже есть в tomcat, но нужен он для IDE чтобы IDE Не светилась красным. и кажется еще jsp-servlet (что то такое)
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233060
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingВ мавен есть понятие scope которое указывает на каком уровне подключать библиотеки. В вашем случае это будет кажется provided.
Т.е. в проекте библиотека подключится. В IDE будут работать подсказки в сборку эти файлы не попадут и если эту war-ку положить в томкат где недоступты классы jdbc Драйвера то тупо получите ClassNotFoundException.

По аналогии для web приложения требуется servlet-api dependencн который уже есть в tomcat, но нужен он для IDE чтобы IDE Не светилась красным. и кажется еще jsp-servlet (что то такое)
Присоединяюсь к ответу. Драйвер устанавливать в Tomcat, и, что не менее важно, там же настраивать DataSource.
В Maven использовать правильный dependecy scope, который использует драйвер для компиляции проекта, но не копирует его в дистрибутив.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233167
gema
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, согласна насчет provided для driver.jar
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
....
<properties>
	<oracle.version>14</oracle.version>
	<jaybird.version>2.2.5</jaybird.version>
</properties>
....
<dependencies>
	<dependency>
			<groupId>ojdbc</groupId>
			<artifactId>ojdbc</artifactId>
			<version>${oracle.version}</version>
			<scope>provided</scope>

		</dependency>
		<dependency>
			<groupId>org.firebirdsql.jdbc</groupId>
			<artifactId>jaybird-jdk17</artifactId>
			<version>${jaybird.version}</version>
			<scope>provided</scope>
		</dependency>

	</dependencies>

.
Драйвера отображаются в ide, но в war не попадают. Но ошибка о недоступности ресурса так и остается при варианте provided
"Caused by: java.lang.NoClassDefFoundError: javax/resource/ResourceException". В чем может быть причина?
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233176
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gema,

JFGI
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233194
gema
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,а почему и DataSource более логично настаивать в tomcat???Чтобы был был один ресурс для нескольких проектов, в которых она может быть использована?Или есть и другие причины?
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233214
SovietUnion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какие ЗП у разрабов нынче в Новочебоксарском Химпроме?
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233219
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gema,

Обычно, в организации есть как минимум 3 среды в которых крутится система. Production, QA, Development. Иногда больше.
Если вы настроите соединение с базой внутри проекта, или даже в Maven профиле. То для Production, QA и Development у вас будет 3 разных версии одного и того же сервера. При этом, что самое смешное, пароли от вашего Production, хранятся в SVN и доступны всем разработчикам и не только им.

Если же DataSource настроен в сервере, то, вместо 3х разных сборок, у вас всего одна, которая деплоится в любой сервер без каких либо манипуляций.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233220
gema
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,спасибо за помощь. Не заметила,что проблема только firebird.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233228
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gemaГде более правильно хранить jdbc драйвера, в tomcat/lib или локально в проекте project/WEB-INF/lib? Читала,что более правильно все же в tomcat

В папке /lib Tomcat-а хранить можно, но некультурна, потому что эта папка предназначена для самого Tomcat-а. Правильно в папке /lib/ext в Tomcat-е (подпапку /ext создать, если ещё нет). В папке lib в программе хранить тоже можно. Выбор зависит от того, понадобится JDBC драйвер для разных программ (тогда в Tomcat-е) или только для одной (тогда в ней, но хранение в Tomcat-е позволяет заменить JDBC драйвер без переустановки программы). То есть, выбор - вопрос удобства.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233241
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MВ папке /lib Tomcat-а хранить можно, но некультурна, потому что эта папка предназначена для самого Tomcat-а. Правильно в папке /lib/ext в Tomcat-е
А можно пруфлинк?
Я такого в мануалах уже давно не видел.
https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html
С тех пор как shared и commons убрали.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233734
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MВ папке /lib Tomcat-а хранить можно, но некультурна, потому что эта папка предназначена для самого Tomcat-а. Правильно в папке /lib/extПравильно это в catalina.base/lib (Tomcat 7+) или, таки в catalina.home/lib (Tomcat 6-), а не во всякой странной хренотени.

P.S. "По умолчанию" catalina.base == catalina.home
Чтобы понимать почему такая разница по версиям котяры, надо внимательно посмотреть на значение common.loader в catalina.properties
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233737
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... В некоторых случаях можно использовать и класс-путя ява-рантайма, но если человек это делает, то, наверное, он и сам понимает что да как.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233750
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovПравильно это в catalina.base/lib (Tomcat 7+)Поправка: ${catalina.base}/lib это Tomcat 6+.
А вот архаичный Tomcat 5.5 - ${catalina.home}/common/lib
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233761
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хранить в project/WEB-INF/lib, с учетом чтоб драйвер оказался в в итоговом jar есть преимущество в томм , что этот jar можно переносить с машины на машину, без проблем забыть что-то. ну и не замарачиваться с версиями драйвера - гарантированно знаешь что в проекте есть драйвер (пусть даже и устаревший) но проверенный, и система с ним проверенно работает.
когда под кошкой развернуто несколько приложений может быть критична замена драйвера в общей папке.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233762
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяхранить в project/WEB-INF/lib, с учетом чтоб драйвер оказался в в итоговом jar есть преимущество в томмНет никаких преимуществ, кроме проблем.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233769
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovвадяхранить в project/WEB-INF/lib, с учетом чтоб драйвер оказался в в итоговом jar есть преимущество в томмНет никаких преимуществ, кроме проблем.
не будь голословным - перечисли
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233772
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У контейнера есть четыре стандартных загрузчика (системный не учитываем):
1. Общий - доступен и для контейнера и для приложений;
2. Серверный - доступен только для контейнера;
3. Разделяемый - доступен всем приложениям, но не контейнеру;
4. Приватный - доступен только конкретному приложению.
Если контейнер должен "чем-то" управлять (он много чем управляет), то это "что-то" должно быть в общем загрузчике.

Да, разумеется, если ваше приложение развёртывается в одном-единственном контексте, перезапускается (только) вместе с контейнером и закатывает солнце вручную - на все рекомендации можно забивать болт. В конце-концов, программисты очень изобретательны.
Но, если вы не хотите попасть в ситуацию, когда "происходит странная хрень и непонятно - что делать" - делайте правильно сразу . Знаний это не добавит, но хотя бы исключит возникновение "странной хрени".
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233775
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
я не увидел ни одного аргумента, кроме перечисления того, что ты знаешь.
это не аргументы
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233778
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
допустим на сервере активны несколько проектов, которые коннектятся с разными базами,
не логичней ли хранить разные jdbc jar's в своих проектах?
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233782
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
ну давайте спорить, что лучше - локальная переменная процедуры или на уровне класса.
Очевидно что всякие нужны и важны.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233786
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123rema174,
ну давайте спорить, что лучше - локальная переменная процедуры или на уровне класса.
Очевидно что всякие нужны и важны.
вот я и хочу услышать аргументы .
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233787
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123rema174,
ну давайте спорить, что лучше - локальная переменная процедуры или на уровне класса.
ну это кагбе разные вещи. переменная метода не отменяет необходимость переменных класса и наоборот там где это нужно.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233805
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
ну тогда остался один спорщик - вадя.
Остальным и так понятно, зачем библиотеки для всего сервера сразу.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233813
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123rema174,
ну тогда остался один спорщик - вадя.
Остальным и так понятно, зачем библиотеки для всего сервера сразу.
я и не говорил, что мне не понятно. речь о предпочтениях.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233831
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174речь о предпочтениях
тогда я тебя опять не понял.
Как может быть предпочтение между локальной и переменной класса?
Места рессурсов - такая же хрень. IMHO
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233833
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
у меня пока Log4J один на все проекты. Сервер только мой = размещаю в Lib томката.
Так?
И т.д.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233847
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123rema174,
у меня пока Log4J один на все проекты. Сервер только мой = размещаю в Lib томката.
Так?
И т.д.
в этом случае ,конечно, проще хранить в папке кота, ты сам всё конролируешь, всё помнишь.
но если придется перенести на другую машину, можно и забыть какие дрова нужно взять с собой.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233851
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123rema174речь о предпочтениях
тогда я тебя опять не понял.
Как может быть предпочтение между локальной и переменной класса?
Места рессурсов - такая же хрень. IMHO
про локальные и переменной класса я уже говорил, как я это понимаю - т.е. это мало похоже на ситуацию с либами в проекте или на общими либами сервере

твой пример про Log4J - согласен в Вадей, зачем повторяться...
а если бы у тебя, допустим, было несколько версий Log4J на проекты? ты бы их тоже хранил на сервере? не логичней бы их по проектам? это про "предпочтения"...
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233856
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяно если придется перенести на другую машину, можно и забыть какие дрова нужно взять с собой.
для забывающих варежки, есть резинка между ними.
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39233870
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123вадяно если придется перенести на другую машину, можно и забыть какие дрова нужно взять с собой.
для забывающих варежки, есть резинка между ними.
а те кто держит либы в депенденсях, варежки принципиально не забывают :)
...
Рейтинг: 0 / 0
maven+tomcat где правильно хранить jdbc драйвера????
    #39234613
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяв этом случае ,конечно, проще хранить в папке кота, ты сам всё конролируешь, всё помнишь.
но если придется перенести на другую машину, можно и забыть какие дрова нужно взять с собой.Вот ровно по таким же идиотским причинам разработчик сложил кучу всякого барахла в свой war.
В результате сайт зависал при редеплое и выдавал ошибки при завершении работы.
В конечном итоге WEB-INF/lib осталось только то, что невозможно было оттуда убрать, а я в очередной раз убедился, что сисадмины из программистов от "так себе" до "весьма посредственно".
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / maven+tomcat где правильно хранить jdbc драйвера????
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]