2011-08-04 30 views
5

Tomcat sunucumuzu geri yüklemeye çalışıyorum ancak MySQL'e düzgün şekilde bağlanmayan bu uygulama var.Tomcat üzerinde kurulu olan Java uygulaması jdbc-mysql'ye bağlanmıyor

İşte oluyor ne:

Bir Java + Flex uygulaması vardı. Tüm uygulama bir dizine (.war dosyası değil) yerleştirildi.

<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> 

Yani, komut satırı istemcisi üzerinden mysql bağlamak mümkün, ancak uygulama yok:

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

İşte benim başvuru yapılandırma var.

Bazı Netbeans (veya Eclipse) menülerini kullanarak "yeni bağlantı ekle" yazmasını söyleyen internet kullanıcıları buldum. Ancak, uygulamanın kaynak koduna erişemedim.

Linux'ta tomcat çalıştırıyorum. Tomcat günlük dosyasını /var/log/tomcat6/'dan kontrol ettim ve jdbc hakkında hiçbir şey bulamadım.

Benim catalina günlüğü:

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 
+0

Stacktrace nedir? Kendi bağlantı yönetiminizi oluşturmak yerine JNDI ve DataSource kullanmayı düşünün. –

+0

@ Michael-O özür dilerim, kaynak koduna erişimim yok.Bildiğim tek şey, uygulamayı çalıştırdığımda "Bağlantı başarısız oldu, yöneticiye başvurun" bir kullanıcı mesajı var. Stacktrace'i veya bana yardımcı olan herhangi bir günlük dosyasını bulmama yardımcı olsaydın ... –

+0

Catalina.out ve 'logs'daki diğer dosyaları kontrol et. Eğer bir şey olmazsa, şansınız yok :-(Bu bir kara kutu gibi gözüküyor –

cevap

4

tomcat-dir/common/lib içine JDBC jar dosyası koyarak deneyin ve Tomcat yeniden başlatın.
Karşılaştırın Soru Managing libraries in Tomcat.

bu hala şimdi işe anahtar kelime olarak bağlantı değil jdbc arayan Tomcat günlük dosyasından özü yayınlamak edin.

+0

Andreas, lib dosyalarını kopyalayın 'tomcat-dir/lib' dizini işe yaramıyor Tomcat günlüklerini kontrol ediyorum ve aldığım her şey bazı ilke hatalarıydı, tüm politika dosyaları için 'java.security.AllPermission' ayarını düzelttim. Tamamen körüm. Günlük dosyaları hiçbir şey göstermiyor, herhangi bir hata göstermiyor. –

+0

OP, Tomcat 6 kullanıyor. Önerdiğiniz klasör, Tomcat 5.5 veya daha eski sürümlere özgüdür. – BalusC

3

Daha önce aynı problemi yaşadım ve çözmeyi başardım. Apache, jdbc-msql için ek bir yapılandırma adımı gerektirir. İlk olarak, SQL veritabanınız için doğru GRANT izinlerine sahip olduğunuzdan emin olun.

Sonraki, alınır onun çözümü uygulayın: Bu yüklü tüm uygulamalar için kullanılabilir, böylece http://dev.mysql.com/doc/refman/5.0/en/connector-j-usagenotes-j2ee.html#connector-j-usagenotes-tomcat

Birincisi, $ CATALINA_HOME Bağlayıcı/J/ortak/lib ile gelir .jar dosyasını yüklemek bir kap. Eğer çalışan

<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

:

Ardından, web uygulamasını tanımladığı bağlamda $ CATALINA_HOME/conf/server.xml bir deklarasyon kaynak ekleyerek Jndi DataSource yapılandırma Eclipse Java EE ile Tomcat,
1) Sunucular Sekmesi
'a gidin. 2) Tomcat Server
öğesini çift tıklatın. 3) Genel Bilgiler bölümünde, başlatma yapılandırmasını açın.
4) Classpath sekmesine gidin ve jdbc jar dosyasını ekleyin.
Umarım bu işe yarar .. Benim için çalıştım.