Приложение Java, развернутое на Tomcat, не подключается к jdbc-mysql - PullRequest
5 голосов
/ 04 августа 2011

Я пытаюсь восстановить наш сервер Tomcat, но есть это приложение, которое не подключается к MySQL должным образом.

Вот что происходит:

У меня было приложение Java + Flex. Все приложение было помещено в каталог (не файл .war).

$TOMCAT_WEBAPP/myflex_app/WEB-INF/lib/ -> JDBC mysql driver goes here.

Вот мой конфиг приложения:

    <database>
            <rpgByMoodle user="moodle" password="moodle">
                    <url>jdbc:mysql://localhost:3306/rpgbymoodle</url>
            </rpgByMoodle>
            <moodle user="moodle" password="moodle">
                    <url>jdbc:mysql://localhost:3306/moodle</url>
            </moodle>
    </database>

Итак, я могу подключиться к MySQL через клиент командной строки, но приложение этого не делает.

Я нашел в Интернете людей, которые говорили «добавить новое соединение» с помощью некоторых меню Netbeans (или Eclipse) ... но у меня нет доступа к исходному коду приложения.

Я использую Tomcat в Linux. Я проверил файл журнала tomcat на /var/log/tomcat6/ и ничего не нашел о jdbc.

Мой журнал каталины:

Aug 4, 2011 9:24:25 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.20
Aug 4, 2011 9:24:26 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Aug 4, 2011 9:24:26 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 977 ms

Ответы [ 3 ]

4 голосов
/ 05 августа 2011

Попробуйте поместить файл jar JDBC в tomcat-dir/common/lib и перезапустите Tomcat.Сравните вопрос Управление библиотеками в Tomcat .

Если это все еще работает, опубликуйте извлечение из файла журнала Tomcat, ища соединение не jdbc как ключевое слово.

3 голосов
/ 03 декабря 2011

Раньше у меня была точно такая же проблема, и мне удалось ее решить. Apache требует дополнительного шага настройки для jdbc-msql. Во-первых, убедитесь, что у вас есть правильные разрешения GRANT, настроенные для вашей базы данных SQL.

Далее следуйте его решению, которое взято из: http://dev.mysql.com/doc/refman/5.0/en/connector-j-usagenotes-j2ee.html#connector-j-usagenotes-tomcat

Сначала установите .jar-файл, который поставляется с Connector / J, в $ CATALINA_HOME / common / lib, чтобы он был доступен для всех приложений, установленных в контейнере.

Затем настройте источник данных JNDI, добавив ресурс объявления в $ CATALINA_HOME / conf / server.xml в контексте, который определяет ваше веб-приложение:

<Context ....>

...

<Resource name="jdbc/MySQLDB"
           auth="Container"
           type="javax.sql.DataSource"/>

<!-- The name you used above, must match _exactly_ here!

   The connection pool will be bound into JNDI with the name
   "java:/comp/env/jdbc/MySQLDB"
-->

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

<!-- Don't set this any higher than max_connections on your
     MySQL server, usually this should be a 10 or a few 10's
     of connections, not hundreds or thousands -->

<parameter>
  <name>maxActive</name>
  <value>10</value>
</parameter>

<!-- You don't want to many idle connections hanging around
     if you can avoid it, only enough to soak up a spike in
     the load -->

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

<!-- Don't use autoReconnect=true, it's going away eventually
     and it's a crutch for older connection pools that couldn't
     test connections. You need to decide whether your application
     is supposed to deal with SQLExceptions (hint, it should), and
     how much of a performance penalty you're willing to pay
     to ensure 'freshness' of the connection -->

<parameter>
  <name>validationQuery</name>
  <value>SELECT 1</value> <-- See discussion below for update to this option -->
</parameter>

<!-- The most conservative approach is to test connections
    before they're given to your application. For most applications
    this is okay, the query used above is very small and takes
    no real server resources to process, other than the time used
    to traverse the network.

    If you have a high-load application you'll need to rely on
    something else. -->

 <parameter>
  <name>testOnBorrow</name>
  <value>true</value>
 </parameter>

 <!-- Otherwise, or in addition to testOnBorrow, you can test
    while connections are sitting idle -->

  <parameter>
   <name>testWhileIdle</name>
   <value>true</value>
  </parameter>

 <!-- You have to set this value, otherwise even though
     you've asked connections to be tested while idle,
     the idle evicter thread will never run -->

 <parameter>
   <name>timeBetweenEvictionRunsMillis</name>
   <value>10000</value>
 </parameter>

 <!-- Don't allow connections to hang out idle too long,
     never longer than what wait_timeout is set to on the
     server...A few minutes or even fraction of a minute
     is sometimes okay here, it depends on your application
     and how much spikey load it will see -->

<parameter>
  <name>minEvictableIdleTimeMillis</name>
  <value>60000</value>
</parameter>

<!-- Username and password used when connecting to MySQL -->

<parameter>
 <name>username</name>
 <value>someuser</value>
</parameter>

<parameter>
 <name>password</name>
 <value>somepass</value>
</parameter>

<!-- Class name for the Connector/J driver -->

<parameter>
   <name>driverClassName</name>
   <value>com.mysql.jdbc.Driver</value>
</parameter>

<!-- The JDBC connection url for connecting to MySQL, notice
     that if you want to pass any other MySQL-specific parameters
     you should pass them here in the URL, setting them using the
     parameter tags above will have no effect, you will also
     need to use &amp; to separate parameter values as the
     ampersand is a reserved character in XML -->

<parameter>
  <name>url</name>
  <value>jdbc:mysql://localhost:3306/test</value>
</parameter>

0 голосов
/ 13 мая 2017

Если вы используете Tomcat с Eclipse Java EE,
1) Перейдите на вкладку Серверы
2) Дважды щелкните Tomcat Server
3) В разделе «Общая информация» нажмите «Открыть конфигурацию запуска».1004 * 4) Перейдите на вкладку Classpath и добавьте jar-файл jdbc.
Надеюсь, это сработает .. Работает для меня.

...