2010-05-20 3 views
3

Я делаю веб-приложение с Tomcat 6 как контейнер, и я пытаюсь использовать пул соединений. Драйвер jdbc, который я использую, - jtds-1.2.2.
Пул отлично работает, когда курок для водителя находится под номером ${Catalina_Home}/lib, но мой хостинг-провайдер не дал мне этого сделать.Пул подключения Tomcat, установить драйвер jdbc для веб-приложения

Я получаю CNF-исключение, когда водитель помещается в WEB-INF/lib.

Может ли кто-нибудь предложить решение, где мне не нужно будет обращаться к установке tomcat?

+0

Является ли это кроваткой для net.sourceforge.jtds.jdbc.Driver или какого-либо другого класса? – JoseK

+0

да на самом деле. Исключение указывает, что класс net.sourceforge.jtds.jdbc.Driver не найден. – hkansal

+0

и запись ресурса в server.xml? – JoseK

ответ

5

Если у вас нет контроля над сервером, вы теряетесь. Просто создайте пул соединений самостоятельно, вместо того, чтобы позволить контейнеру сделать это.

Я предлагаю использовать для этого c3p0 (что намного лучше, чем встроенный DBCP от Tomcat, поскольку он заблокирован для одного потока). Помещенный библиотеки C3P0 в /WEB-INF/lib и создать его в соответствии с its documentation:

ComboPooledDataSource dataSource = new ComboPooledDataSource(); 
dataSource.setDriverClass("org.postgresql.Driver"); 
dataSource.setJdbcUrl("jdbc:postgresql://localhost/testdb"); 
dataSource.setUser("dbuser"); 
dataSource.setPassword("dbpassword"); 
// ... 

Connection connection = null; 
// ... 
try { 
    connection = dataSource.getConnection(); 
    // ... 
} finally { 
    // ... 
    if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {} // Always close resources in finally! 
} 
+0

Хорошо, тогда я должен пойти на c3p0 :). Спасибо! – hkansal

3

Чтобы использовать пул соединений Tomcat, вы необходимо скопировать банку в JDBC водителя в $CATALINA_HOME/lib (как documented), так что класс драйвера виден через Common class loader или DBCP не смогут его найти, следовательно, ClassNotFoundException. загрузчики классов иерархии Tomcat проиллюстрирована ниже:

 
     Bootstrap 
      | 
     System 
      | 
     Common 
    / \ 
    Webapp1 Webapp2 ... 

и библиотеки из WEB-INF/lib не видны из общего загрузчика класса (что хорошо).

Если вы не можете скопировать своего водителя в $CATALINA_HOME/lib, вы не сможете использовать пул соединений Tomcat. В этом случае вам придется использовать автономный пул соединений (и связать его по вашему драйверу в WEB-INF/lib). И я второй BalusC здесь, я бы использовал C3P0.

+0

Получил! Спасибо :) – hkansal

Смежные вопросы