Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Соеденение с MySql / 14 сообщений из 14, страница 1 из 1
08.02.2006, 11:12
    #33530626
ldima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соеденение с MySql
Доброго времени суток!
Проблема такая: пытаюсь с помощью 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
08.02.2006, 11:53
    #33530809
ldima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соеденение с MySql
Извините за некоторую неточность. Исключение возникает, когда я пытаюсь получить соеденение с базой.
Код: 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
08.02.2006, 12:40
    #33531025
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соеденение с MySql
Ты положил соответствующий архив с драйвером (mysql-connector-java-3.0.15-ga-bin.jar.) в $TOMCAT_HOME/common/lib?
...
Рейтинг: 0 / 0
08.02.2006, 12:50
    #33531073
ldima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соеденение с MySql
Denis Popov
Ты положил соответствующий архив с драйвером (mysql-connector-java-3.0.15-ga-bin.jar.) в $TOMCAT_HOME/common/lib?

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

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

может в этом дело? а то из настройки не ясно где ты создаешь собственно пул
...
Рейтинг: 0 / 0
09.02.2006, 17:05
    #33535013
Соеденение с MySql
у меня такой код есть
...
Рейтинг: 0 / 0
09.02.2006, 17:16
    #33535050
Иван Драго
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соеденение с MySql
А не может ли случаем быть проблема из-за амперсантов? может их экранировать нада?
Код: plaintext
&
...
Рейтинг: 0 / 0
10.02.2006, 01:28
    #33535719
facet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соеденение с MySql
Странно, но аналогичная ошибка при соединении с ораклом.
Причем под дебаггером видно, что все параметры, прописанные в 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
10.02.2006, 12:10
    #33536646
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соеденение с MySql
у меня так работает:

файл 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
19.02.2006, 19:05
    #33554569
ldima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соеденение с MySql
Проблему удалось решить. Подробности здесь .
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Соеденение с MySql / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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