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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как запустить MySQL в связке с Tomcat, Не получается подключить MySQL к Tomcat 
:(
    Опции темы
Mykle
Дата 4.7.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня на Linux работает Tomcat и MySQL. В PHP подключился к базе и получил данные. А в JSP не получается

<%@ page contentType="text/html; charset=windows-1251" %>
<%@ page import ="java.net.*" %>
<%@ page import ="java.sql.*" %>
...
<%
//Загружаем драйвер
Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=ttt,password=ee");
...
%>

На строку "Connection conn = ..." - ругается, пишет следующее

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: Unexpected exception encountered during query.
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(jasper5-compiler-5.5.17.jar.so)
    org.apache.jasper.servlet.JspServletWrapper.service(jasper5-compiler-5.5.17.jar.so)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(jasper5-compiler-5.5.17.jar.so)
    org.apache.jasper.servlet.JspServlet.service(jasper5-compiler-5.5.17.jar.so)
    javax.servlet.http.HttpServlet.service(tomcat5-servlet-2.4-api-5.5.17.jar.so)


root cause 

javax.servlet.ServletException: Unexpected exception encountered during query.
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(jasper5-runtime-5.5.17.jar.so)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(jasper5-runtime-5.5.17.jar.so)
    org.apache.jsp.inn_jsp._jspService(inn_jsp.java:116)
    org.apache.jasper.runtime.HttpJspBase.service(jasper5-runtime-5.5.17.jar.so)
    javax.servlet.http.HttpServlet.service(tomcat5-servlet-2.4-api-5.5.17.jar.so)
    org.apache.jasper.servlet.JspServletWrapper.service(jasper5-compiler-5.5.17.jar.so)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(jasper5-compiler-5.5.17.jar.so)
    org.apache.jasper.servlet.JspServlet.service(jasper5-compiler-5.5.17.jar.so)
    javax.servlet.http.HttpServlet.service(tomcat5-servlet-2.4-api-5.5.17.jar.so)


root cause 

java.sql.SQLException: Unexpected exception encountered during query.
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2581)
    com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1751)
    com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3425)
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2045)
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
    java.sql.DriverManager.getConnection(libgcj.so.7rh)
    java.sql.DriverManager.getConnection(libgcj.so.7rh)
    org.apache.jsp.inn_jsp._jspService(inn_jsp.java:58)
    org.apache.jasper.runtime.HttpJspBase.service(jasper5-runtime-5.5.17.jar.so)
    javax.servlet.http.HttpServlet.service(tomcat5-servlet-2.4-api-5.5.17.jar.so)
    org.apache.jasper.servlet.JspServletWrapper.service(jasper5-compiler-5.5.17.jar.so)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(jasper5-compiler-5.5.17.jar.so)
    org.apache.jasper.servlet.JspServlet.service(jasper5-compiler-5.5.17.jar.so)
    javax.servlet.http.HttpServlet.service(tomcat5-servlet-2.4-api-5.5.17.jar.so)

ПОМОГИТЕ ПЛЗ.!!!
И за ранее спасибо всем, кто откликнется.
PM MAIL   Вверх
Mykle
Дата 4.7.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



И что там качать, а то там много всего, но ничего интересного я так и не нашел, по подробней объясните пожалуйста что и по чем.

PM MAIL   Вверх
Mykle
Дата 4.7.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

PM MAIL   Вверх
v2v
Дата 4.7.2008, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



jdbc connector установил?


--------------------
PM   Вверх
_sten_
Дата 9.7.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

//Загружаем драйвер
Class.forName("com.mysql.jdbc.Driver").newInstance();


Зачем newInstance() достаточно просто Class.forName("com.mysql.jdbc.Driver")
--------------------
WARNING: Condition 'to_be || !to_be' is always 'true' !
PM MAIL ICQ   Вверх
EvgenZ
Дата 13.7.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


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

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



Предположение, а вот это -  "root cause ", не ключевой ли момент ?  smile  


--------------------
<удалено администрацией форума>
PM MAIL   Вверх
Ulysses4j
Дата 14.7.2008, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот смотрю я книжку про 6-ой Tomcat и ничего там про традиционный десктопный путь Class.forName нет. Написано так.

1. Добавить в какой-нибудь context.xml (или в общий в /conf или в тот, который для вашего приложения, в /webapps/yourapp/META-INF) ресурс:
Код
<Resource name="jdbc/CatalogDB" auth="SERVLET"
    type="javax.sql.DataSource"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/catalog"
    username="kmittal"
    password="pas44word"
    maxActive="30"
    maxIdle="20000"
    maxWait="120"/>

Тут надо многое подправить в соответствии с вашими установками.

2. В web.xml вашего приложения прописать:
Код
<resource-ref>
    <description/>
    <res-ref-name>jdbc/CatalogDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>SERVLET</res-auth>
</resource-ref>


3. На JSP писать:
Код
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql_rt" %>
<sql:setDataSource dataSource="jdbc/CatalogDB"/>

<sql:query var="products">
SELECT * FROM product
</sql:query>

Потом на странице можнго использовать переменную products, содержащую результат запроса. 

Естественно, как тут уже упоминали, нужен файл с классом-драйвером, его, я так понимаю, в lib  можно кинуть (после этого сервер лучше перезапустить).

Но вообще, конечно, дергать бызу из JSP, это мрак и пыхокодерство.


--------------------
Communication is critical to the job of a programmer.
C. Jazdzewski. Fatherly Advice To New Programmers
PM MAIL WWW   Вверх
w32blaster
  Дата 19.1.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.1.2006
Где: Tln/Slmae

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



Помогите, пожалуйста! 
Снова я воскрешаю старую тему.

 У меня проблема похожая: я установил все компоненты и самое любопытное, что если обратиться к базе через командную строку (а именно, сделать Ява приложение не как сервлет, выполнить простой запрос и вывести на екран через System.out.println и запустить в строке, скажем, #java test) то всё работат. Если вставить тот же код в сервлет и открыть через браузер, сказем, http://localhost:8180/sample/my, то выдаётся ошибка:
Цитата


SQLException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago.
SQLState: 08S01
VendorError: 0 



То есть косяк именно где-то в настройках TomCat - MySQL (ubuntu). Вот ключевые частки кода:

Код

 Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection  con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample?user=uuu&password=ppp"); // <- kak ja ponjal, osibka tut 

//proboval i tak:
// con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javaShop", "uuu", "ppp");
// ne pomoglo


context.xml:
Код

  <Resource name="jdbc/sample" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="root" password="123123" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/javaShop?autoReconnect=true"/>

Остальное по-дефолту...


web.xml
Код

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
  <description>MySQL Test App</description>
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/sample</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

      <servlet>
        <servlet-name>MyHelloWorld</servlet-name>
        <servlet-class>MyHelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>MyHelloWorld</servlet-name>
        <url-pattern>/my</url-pattern>
    </servlet-mapping>

</web-app>



server.xml
Код

      <ResourceParams name="jdbc/sample">
        <parameter>
          <name>factory</name>
          <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
        </parameter>

        <!-- Maximum number of dB connections in pool. Make sure you
             configure your mysqld max_connections large enough to handle
             all of your db connections. Set to 0 for no limit.
             -->
        <parameter>
          <name>maxActive</name>
          <value>10</value>
        </parameter>

        <!-- Maximum number of idle dB connections to retain in pool.
             Set to 0 for no limit.
             -->

        <parameter>
          <name>maxIdle</name>
          <value>5</value>
        </parameter>

        <!-- Maximum time to wait for a dB connection to become available
             in ms, in this example 10 seconds. An Exception is thrown if
             this timeout is exceeded.  Set to -1 to wait indefinitely.
             -->
        <parameter>
          <name>maxWait</name>
          <value>10000</value>
        </parameter>

        <!-- MySQL dB username and password for dB connections  -->
        <parameter>
         <name>username</name>
         <value>uuu</value>
        </parameter>

        <parameter>
         <name>password</name>
         <value>ppp</value>
        </parameter>

        <!-- Class name for mm.mysql JDBC driver -->
        <parameter>
           <name>driverClassName</name>
           <value>com.mysql.jdbc.Driver</value>
        </parameter>

        <!-- The JDBC connection url for connecting to your MySQL dB.
             The autoReconnect=true argument to the url makes sure that the
             mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
             connection.  mysqld by default closes idle connections after 8 hours.
             -->
        <parameter>
          <name>url</name>
          <value>jdbc:mysql://localhost:3306/sample?autoReconnect=true</value>
        </parameter>
      </ResourceParams>
    </Context>




Остальное всё как в туториалах - я скопировал mysql-connector /usr/share/tomcat5.5/common/lib/mysql-connector-java-5.1.7-bin.jar 

classpath: 
/usr/share/java/servlet-api.jar:/usr/share/java/servlet-2.3.jar:/usr/lib/jvm/java-6-sun-1.6.0.06/lib/mysql-connector-java-5.1.7-bin.jar:.

Что ещё забыл?...
Вот. Помогите, пожалуйста! Уже которые сутки мучаюсь... Может, кто сталкивался с такой проблемой...

Это сообщение отредактировал(а) w32blaster - 19.1.2009, 17:35
PM MAIL WWW ICQ MSN   Вверх
skhilkov
Дата 21.1.2009, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не совсем понял, Вы пытаетесь получить соединение вручную,  хотя натсроили datasource....
Попробуйте так :
Код

DataSource ds = (DataSource)initialContext.lookup("java:comp/env/jdbc/sample");
connection = dataSource.getConnection();

А ошибка, коотрую Вы привели, означает что по какой-то причине соединение не может быть установлено с базой. Именно нужно проверить правильность урла подключения, корректность данных пользователя...



--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
Samotnik
Дата 21.1.2009, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



w32blaster, у тебя все данные для базы есть в  context.xml вроде там все правильно
я не пойму зачем вот тут
Цитата

Connection  con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample?user=uuu&password=ppp");

ты указываешь логин и пароль ? Это для базы или для твоего сервлета ?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0906 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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