Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / maven+tomcat где правильно хранить jdbc драйвера???? / 25 сообщений из 33, страница 1 из 2
11.05.2016, 05:59
    #39232949
gema
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
Есть проект 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
11.05.2016, 06:06
    #39232952
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
gema,

имхо, в maven dependencies - более прозрачно для читающего, а так поди знай, что там на сервере в либах
...
Рейтинг: 0 / 0
11.05.2016, 09:58
    #39233057
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
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
11.05.2016, 10:01
    #39233060
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
llemingВ мавен есть понятие scope которое указывает на каком уровне подключать библиотеки. В вашем случае это будет кажется provided.
Т.е. в проекте библиотека подключится. В IDE будут работать подсказки в сборку эти файлы не попадут и если эту war-ку положить в томкат где недоступты классы jdbc Драйвера то тупо получите ClassNotFoundException.

По аналогии для web приложения требуется servlet-api dependencн который уже есть в tomcat, но нужен он для IDE чтобы IDE Не светилась красным. и кажется еще jsp-servlet (что то такое)
Присоединяюсь к ответу. Драйвер устанавливать в Tomcat, и, что не менее важно, там же настраивать DataSource.
В Maven использовать правильный dependecy scope, который использует драйвер для компиляции проекта, но не копирует его в дистрибутив.
...
Рейтинг: 0 / 0
11.05.2016, 11:52
    #39233167
gema
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
Да, согласна насчет 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
11.05.2016, 11:57
    #39233176
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
gema,

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

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

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

В папке /lib Tomcat-а хранить можно, но некультурна, потому что эта папка предназначена для самого Tomcat-а. Правильно в папке /lib/ext в Tomcat-е (подпапку /ext создать, если ещё нет). В папке lib в программе хранить тоже можно. Выбор зависит от того, понадобится JDBC драйвер для разных программ (тогда в Tomcat-е) или только для одной (тогда в ней, но хранение в Tomcat-е позволяет заменить JDBC драйвер без переустановки программы). То есть, выбор - вопрос удобства.
...
Рейтинг: 0 / 0
11.05.2016, 12:52
    #39233241
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
Partisan MВ папке /lib Tomcat-а хранить можно, но некультурна, потому что эта папка предназначена для самого Tomcat-а. Правильно в папке /lib/ext в Tomcat-е
А можно пруфлинк?
Я такого в мануалах уже давно не видел.
https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html
С тех пор как shared и commons убрали.
...
Рейтинг: 0 / 0
11.05.2016, 20:01
    #39233734
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
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
11.05.2016, 20:03
    #39233737
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
... В некоторых случаях можно использовать и класс-путя ява-рантайма, но если человек это делает, то, наверное, он и сам понимает что да как.
...
Рейтинг: 0 / 0
11.05.2016, 20:28
    #39233750
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
Basil A. SidorovПравильно это в catalina.base/lib (Tomcat 7+)Поправка: ${catalina.base}/lib это Tomcat 6+.
А вот архаичный Tomcat 5.5 - ${catalina.home}/common/lib
...
Рейтинг: 0 / 0
11.05.2016, 20:40
    #39233761
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
хранить в project/WEB-INF/lib, с учетом чтоб драйвер оказался в в итоговом jar есть преимущество в томм , что этот jar можно переносить с машины на машину, без проблем забыть что-то. ну и не замарачиваться с версиями драйвера - гарантированно знаешь что в проекте есть драйвер (пусть даже и устаревший) но проверенный, и система с ним проверенно работает.
когда под кошкой развернуто несколько приложений может быть критична замена драйвера в общей папке.
...
Рейтинг: 0 / 0
11.05.2016, 20:42
    #39233762
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
вадяхранить в project/WEB-INF/lib, с учетом чтоб драйвер оказался в в итоговом jar есть преимущество в томмНет никаких преимуществ, кроме проблем.
...
Рейтинг: 0 / 0
11.05.2016, 20:55
    #39233769
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
Basil A. Sidorovвадяхранить в project/WEB-INF/lib, с учетом чтоб драйвер оказался в в итоговом jar есть преимущество в томмНет никаких преимуществ, кроме проблем.
не будь голословным - перечисли
...
Рейтинг: 0 / 0
11.05.2016, 21:05
    #39233772
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
У контейнера есть четыре стандартных загрузчика (системный не учитываем):
1. Общий - доступен и для контейнера и для приложений;
2. Серверный - доступен только для контейнера;
3. Разделяемый - доступен всем приложениям, но не контейнеру;
4. Приватный - доступен только конкретному приложению.
Если контейнер должен "чем-то" управлять (он много чем управляет), то это "что-то" должно быть в общем загрузчике.

Да, разумеется, если ваше приложение развёртывается в одном-единственном контексте, перезапускается (только) вместе с контейнером и закатывает солнце вручную - на все рекомендации можно забивать болт. В конце-концов, программисты очень изобретательны.
Но, если вы не хотите попасть в ситуацию, когда "происходит странная хрень и непонятно - что делать" - делайте правильно сразу . Знаний это не добавит, но хотя бы исключит возникновение "странной хрени".
...
Рейтинг: 0 / 0
11.05.2016, 21:14
    #39233775
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
Basil A. Sidorov,
я не увидел ни одного аргумента, кроме перечисления того, что ты знаешь.
это не аргументы
...
Рейтинг: 0 / 0
11.05.2016, 21:22
    #39233778
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
допустим на сервере активны несколько проектов, которые коннектятся с разными базами,
не логичней ли хранить разные jdbc jar's в своих проектах?
...
Рейтинг: 0 / 0
11.05.2016, 21:25
    #39233782
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
rema174,
ну давайте спорить, что лучше - локальная переменная процедуры или на уровне класса.
Очевидно что всякие нужны и важны.
...
Рейтинг: 0 / 0
11.05.2016, 21:33
    #39233786
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
Petro123rema174,
ну давайте спорить, что лучше - локальная переменная процедуры или на уровне класса.
Очевидно что всякие нужны и важны.
вот я и хочу услышать аргументы .
...
Рейтинг: 0 / 0
11.05.2016, 21:34
    #39233787
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
Petro123rema174,
ну давайте спорить, что лучше - локальная переменная процедуры или на уровне класса.
ну это кагбе разные вещи. переменная метода не отменяет необходимость переменных класса и наоборот там где это нужно.
...
Рейтинг: 0 / 0
11.05.2016, 22:08
    #39233805
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven+tomcat где правильно хранить jdbc драйвера????
rema174,
ну тогда остался один спорщик - вадя.
Остальным и так понятно, зачем библиотеки для всего сервера сразу.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / maven+tomcat где правильно хранить jdbc драйвера???? / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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