Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Database connection pool and Tomcat, Cannot create JDBC driver of class '' 
:(
    Опции темы
elnino
Дата 13.4.2006, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 27.12.2004
Где: Одесса, Украина

Репутация: нет
Всего: 1



Проблема:
При попытке создания пула соединений к базе данных падает
Код

org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
.......
Caused by: java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:243)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)

Используемое программное обеспечение:
  • jakarta-tomcat-5.0.28
  • jdk-1.5.0_05
  • Connector/J (mysql-connector-java-3.1.12-bin.jar) лежит в common/lib
По сути проблема сводится к тому, что томкат не может найти параметры соединения с базой данных.

Параметры соединения задаются следующим образом:
Код

<Context backgroundProcessorDelay="5" docBase="myapp" reloadable="true" debug="true" path="/mypath">
  <Resource name="jdbc/MySQLDB"
               auth="Container"
               type="javax.sql.DataSource"/>

  <ResourceParams name="jdbc/MySQLDB">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>10</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>5</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>10000</value>
    </parameter>
    <parameter>
     <name>username</name>
     <value>username</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>password</value>
    </parameter>
    <parameter>
       <name>driverClassName</name>
       <value>com.mysql.jdbc.Driver</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/mydatabase</value>
    </parameter>
  </ResourceParams>

</Context>

При попытке создания пула коннектов:
Код

            Context initContext = new InitialContext();
                Context envContext = (Context) initContext
                        .lookup("java:/comp/env");
                pool = (DataSource) envContext.lookup("jdbc/MySQLDB");
Connection connection = pool.getConnection();

Вылетает исключение, описанное выше.

На apache-tomcat-5.5.12 прекрасно работает следующая конфигурация:
Файл /apache-tomcat-5.5.12/webapps/myapp/META-INF/context.xml:
Код

<Context backgroundProcessorDelay="5" docBase="myapp" reloadable="true" debug="true" path="/mypath">
<Resource name="jdbc/MySQLDB"

        auth="Container"

        type="javax.sql.DataSource"

        username="username"

        password="password"

        driverClassName="com.mysql.jdbc.Driver"

        url="jdbc:mysql://localhost:3306/mydatabase"

        maxActive="10"

        maxIdle="5"

        maxWait="10000"

        validationQuery="SELECT 1"/>
</Context>

Файл /apache-tomcat-5.5.12/webapps/myapp/WEB-INF/web.xml:
Код

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app>

 .......
    
    <resource-ref>
        <res-ref-name>jdbc/MySQLDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    
</web-app>


Пробовал прописывать контекст в server.xml,
класть myapp.xml в conf/Catalina/[host],
прописывал параметры соединения в GlobalNamingResources.

Не работает.

На дебаггере обнаруживается, что томкату известно имя "jdbc/MySQL", но при этом ВСЕ параметры соединения инициализированы дефолтовыми значениями.
(В том числе url=null, password=null и.т.д)

Есть ли кто-то, кто юзал пул коннектов на Tomcat-5.0.28? Скажите, пожалуйста, каким образом вы сконфигурировали свое приложение smile

Спасибо.
PM MAIL ICQ   Вверх
tux
Дата 13.4.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Встречный вопрос. А та конфигурация, которую ты приводишь описывается в META-INF/context.xml, как и в случае с 5.5.12?
Видишь ли, похоже, что Tomcat использует context.xml только в том случае если для развертывания использовать его менеджер. Если разворачиваешь просто копированием war-файла, то попробуй положить этот context.xml в conf/Catalina/localhost с именем, соответствующим имени приложения, например, myapp.xml.

Если не поможет, опиши где у тебя определяется источник данных.
PM MAIL Skype GTalk Jabber YIM   Вверх
Tony
Дата 13.4.2006, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Код

InitialContext initCtx=new InitialContext();
DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/your_name");
Connection conn=ds.getConnection();

Попробуй.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
anti_snayper
Дата 15.7.2008, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



Подобнвая проблема: пытаюсь с помощью Tomcat создать пул соеденений с базой данных MSSQL.
При создании Connection вылетает ошибка:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

Context.xml: 
Код

<Context>
<Resource auth="Container" name="jdbc/storeDB" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/storeDB">
        <parameter>
            <name>factory</name>
            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
        </parameter> 
        <parameter>
            <name>maxActive</name>
            <value>30</value>
        </parameter> 
        <parameter>
            <name>maxIdle</name>
            <value>10</value>
        </parameter> 
        <parameter>
            <name>maxWait</name>
            <value>10000</value>
        </parameter> 
        
        <parameter>
            <name>driverClassName</name>
            <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
        </parameter> 
        <parameter>
            <name>url</name>
            <value>jdbc:sqlserver://localhost:1433:TestDB;User=***;Password=***</value>
        </parameter>
    </ResourceParams> 
</Context>


web.xml:
Код

<resource-ref>
      <description>DB connection</description>
      <res-ref-name>jdbc/storeDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
   </resource-ref>



Код

private Context    initContext   = null;
private Context    envContext    = null;
private DataSource dataSource    = null;
private Connection connection    = null;

initContext = new InitialContext();
envContext = (Context) initContext.lookup("java:comp/env");
dataSource = (DataSource) envContext.lookup("jdbc/storeDB");
connection = dataSource.getConnection();


Цитата

Код

InitialContext initCtx=new InitialContext();
DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/your_name");
Connection conn=ds.getConnection();

Попробуй.

Не помогает

Может кто-нить помочь? 


Это сообщение отредактировал(а) anti_snayper - 16.7.2008, 10:44
PM MAIL   Вверх
anti_snayper
Дата 16.7.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



Народ, хотя бы посоветуйте какую-нибудь толковую литературу на эту тему. Уже несколько дней на одном месте топчусь, то одна ошибка то другая.
PM MAIL   Вверх
garbuz
Дата 29.7.2008, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 8
Всего: 11



Возникает аналогичный эксепшн. Никак не победить. Кто-нибудь разобрался???
Самое интересное, что если запускать из-под IDE, то все валится, а если запускать руками томкат и в браузере забивать нужный адрес, то все работает. Как с этим бороться?  smile 
PM MAIL   Вверх
necromancer
Дата 30.7.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 26.7.2006
Где: Москва

Репутация: 6
Всего: 7



обычно проблема эта возникает в 2-х случаях:
1. неправильная конфигурация контекста приложения
2. наличие лишней библиотеки

Второй пункт лечится путем проверки не находится ли mysql.jar в друх папках: commons/lib и WEB_INF/lib
первый же целиком зависит от версии веб сервера
вот пример точно работающий на Tomcat 5:
Код

<?xml version="1.0" encoding="UTF-8"?>
<Context displayName="Ras Project" path="/">
    <Resource name="jdbc/sunshine" auth="Container"
              type="javax.sql.DataSource" username="sunshine" password="sunshine"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/sunshine?zeroDateTimeBehavior=convertToNull"
              maxActive="130" maxIdle="115"/>
</Context>




--------------------
С уважением, 
                 Виталий Смык
----------------------------------------------------------------------------------------------
SCJP, SCWCD, OCA
http://dev.maryno.net/video/
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0844 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.