powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Соеденение с MySql
14 сообщений из 14, страница 1 из 1
Соеденение с MySql
    #33530626
ldima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Проблема такая: пытаюсь с помощью Tomcat создать пул соеденений с базой данных MySql. Для этого создаю в server.xml следующую запись:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  <Resource name="jdbc/SomeSource" type="javax.sql.DataSource"/>
 <ResourceParams name="jdbc/SomeSource">
            <parameter>
                <name>username</name>
                <value>javauser</value>
            </parameter>
            <parameter>
                <name>password</name>
                <value>javadude</value>
            </parameter>
            <parameter>
                <name>url</name>
                <value>jdbc:mysql://localhost/observer?useUnicode=true&characterEncoding=cp1251&autoReconnect=true</value>
            </parameter>
            <parameter>
                <name>driverClassName</name>
                <value>com.mysql.jdbc.Driver</value>
            </parameter>
        </ResourceParams>

В методе init() сервлета прописываю следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 DataSource pool;

  public   void  init() {
         try  {
            Context env = (Context)  new  InitialContext().lookup("java:comp/env");
            pool = (DataSource) env.lookup("jdbc/SomeSource");
        // Здесь исключения не возникает!!!
        }  catch  (Exception e) {
            e.printStackTrace();
        }
    }
   
}

Далее, когда мой сервлет пытается из базы чего-нибудь прочитать, возникает исключение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 
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 )
	at SenderServlet.doPost(SenderServlet.java: 61 )
	at javax.servlet.http.HttpServlet.service(HttpServlet.java: 709 )
	at javax.servlet.http.HttpServlet.service(HttpServlet.java: 802 )
	.................................................................................................
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 )
	...  28  more 
Я использую MySql 3.23.51-nt (Знаю старая...), MySQL Connector mysql-connector-java-3.0.15-ga-bin.jar.
Да, чуть не забыл: когда соеденяюсь с базой без использования DataSource, а с использованием DriverManager проблем никаких не возникает.
Может кто чем сможет помочь?
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33530809
ldima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините за некоторую неточность. Исключение возникает, когда я пытаюсь получить соеденение с базой.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public   void  doPost(HttpServletRequest request, HttpServletResponse response)
             throws  ServletException, IOException {
        Connection con =  null ;
        Statement stmt =  null ;
         try  {
            // Вот здесь возникает исключение
            con = pool.getConnection();
            stmt = con.createStatement();
        }  catch  (SQLException e) {
            e.printStackTrace(); 
        }

    }
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33531025
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты положил соответствующий архив с драйвером (mysql-connector-java-3.0.15-ga-bin.jar.) в $TOMCAT_HOME/common/lib?
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33531073
ldima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Popov
Ты положил соответствующий архив с драйвером (mysql-connector-java-3.0.15-ga-bin.jar.) в $TOMCAT_HOME/common/lib?

Да, конечно.
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33531089
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда какая версия Tomcat'а? Если в 5.5, то они вроде как поменяли формат Resource. Посмотри тут после фразы Versions 5.5 and later
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33532634
Andrew Bykov_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проверь - не вижу указания порта в урле
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33533098
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew Bykov_проверь - не вижу указания порта в урле
порт не обязателен. к тому же, как было сказано, без пула работает.
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33534156
сейчас пытаюсь настроить соединение с oracle таким же способом - получаю такую же ошибку (tomcat 5-й), в чем грабли кто подскажет? :(
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33534465
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В документации наблюдается такой код:

Код: plaintext
1.
2.
3.
4.
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>

может в этом дело? а то из настройки не ясно где ты создаешь собственно пул
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33535013
у меня такой код есть
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33535050
Иван Драго
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А не может ли случаем быть проблема из-за амперсантов? может их экранировать нада?
Код: plaintext
&
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33535719
Фотография facet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, но аналогичная ошибка при соединении с ораклом.
Причем под дебаггером видно, что все параметры, прописанные в server.xml для данного соединения пусты...
Проверяю это дело таким примером:
Код: plaintext
1.
2.
3.
4.
			Context initContext =  new  InitialContext();
			Context envContext  = (Context)initContext.lookup("java:/comp/env");
			DataSource ds = (DataSource)envContext.lookup("jdbc/test");
			Connection conn = ds.getConnection();
когда под дебаггером смотрю envContext - там нет параметров ни для драйвера ни для всего остального, хотя в server.xml они прописаны
Вот сам server.xml - может быть что там не так?

Код: plaintext
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.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
<?xml version=' 1 . 0 ' encoding='utf- 8 '?>

<Server>
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
  <GlobalNamingResources>
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
    <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" 

type="org.apache.catalina.UserDatabase"/>
    <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="UserDatabase">
      <parameter>
        <name>factory</name>
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
        <name>pathname</name>
        <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>
   
 <ResourceParams name="jdbc/test">
  <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
      <parameter>
        <name>validationQuery</name>
        <value>select sysdate from dual</value>
      </parameter>
      <parameter>
        <name>maxWait</name>
        <value> 5000 </value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value> 4 </value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>manager</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@utf</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.OracleDriver</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value> 2 </value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>system</value>
      </parameter>
    </ResourceParams>
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8081" redirectPort="8443" 

maxSpareThreads="75" maxThreads="150" minSpareThreads="25">
    </Connector>
    <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">
    </Connector>
    <Engine defaultHost="localhost" name="Catalina">
      <Host appBase="webapps" name="localhost">
        <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/>
      </Host>
      <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/>
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
    </Engine>
  </Service>
</Server>
в web.xml прописано:
Код: plaintext
1.
2.
3.
4.
5.
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/test</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>


проверено, что JNDI берется правильно (если поменять в web.xml <res-ref-name>jdbc/test</res-ref-name>
- возникает ошибка, как и должно быть)
Может кто снабдит правильным server.xml и web.xml ?
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33536646
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня так работает:

файл myWebApp/META-INF/context.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myWebApp">
    
    <Resource auth="Container" 
        driverClassName="org.hsqldb.jdbcDriver" 
        maxActive="20" maxIdle="10" maxWait="-1" 
        name="jdbc/MyDataBase"
        password="" type="javax.sql.DataSource"
        url="jdbc:hsqldb:hsql://localhost/xdb"
        username="sa"/>
    
</Context>

web.xml и код доступа такие же как и у автора топика. В server.xml соответственно ничего описывающего пул нет.
...
Рейтинг: 0 / 0
Соеденение с MySql
    #33554569
ldima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблему удалось решить. Подробности здесь .
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Соеденение с MySql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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