Newsgroup: it.comp.java
Titolo: Tomcat DataSource - DBCP

Sono un'altra vittima ti tale meccanismo!
Non riesco proprio a configurare sti caxxo di datasource, tutte le
volte ottengo il seguente errore:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC
driver of class '' for connect URL 'null'
...
Caused by: java.sql.SQLException: No suitable driver
...
Utilizzo Tomcat 5.5.20, MySQL 5.0, JDK 1.5,
common-dbcp-1.2.1.jar con common-pool-1.2.jar con common-
collections-3.2.jar
mysql-connector-java-5.0.4-bin.jar
Inutile dire che ho provata a seguire alla lettera la documentazione
sul sito del micio:
http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html
Inutile dire che mi sono googlato tutto quello che si poteva gogglare
su questa cosa... la conclusione è che sono l'ennesima vittima di
questa cosa.
A quanto pare ognuno dopo giorni e giorni trova una soluzione ad-hoc
per la sua web-app, che clamorosamente non funziona per nessun altro.
Ho provato ad inserire tutto sotto il server.xml, ho messo i jar
dentro "common/lib", ho messo i riferiemnti dentro al mio web.xml. Ho
controllato la sintassi, possibili errori di ortografia!
Altra porva:
Ho levato tutto dal server.xml e messo tutto sotto il context.xml
della mia web-app dentro META-INF.
Altre prove:
Tutte le combinazioni possibili (leva e metti, metti e leva) con i
vari xml. Ho provato diversi connectorj di mysql.
Ora mi rivolgo a voi con umiltè e fraternitè.
AIUTATEME.... ;(
Di seguito vi riporto i file xml:
--------------------------------- web.xml
------------------------------------
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/RomeDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
----------------------------------------------------------------------------------
------------------------------- context.xml
----------------------------------
<Context crossContext="true" debug="0" docBase="Rome" path="/Rome"
reloadable="false">
    <Resource name="jdbc/RomeDB" type="javax.sql.DataSource" />
    <ResourceParams name="jdbc/RomeDB">
        <parameter>
            <name>maxActive</name>
            <value>20</value>
        </parameter>
        <parameter>
            <name>maxIdle</name>
            <value>10</value>
        </parameter>
        <parameter>
            <name>maxWait</name>
            <value>10000</value>
        </parameter>
        <parameter>
            <name>username</name>
            <value>root</value>
        </parameter>
        <parameter>
            <name>password</name>
            <value>cipiripikodak</value>
        </parameter>
        <parameter>
            <name>driverClassName</name>
            <value>com.mysql.jdbc.Driver</value>
        </parameter>
        <parameter>
            <name>url</name>
            <value>jdbc:mysql://localhost:3306/rome</value>
        </parameter>
        <parameter>
            <name>removeAbandoned</name>
            <value>true</value>
        </parameter>
        <parameter>
            <name>removeAbandonedTimeout</name>
            <value>60</value>
        </parameter>
        <parameter>
            <name>logAbandoned</name>
            <value>true</value>
        </parameter>
    </ResourceParams>
</Context>
----------------------------------------------------------------------------------
Sono ben accette esperienze dirette!!!
Ciao e grazie, Luigi


A me così funziona.. (tomcat 5.5.17)
driver di mysql sotto common/lib..
questo e' il pezzo di context.xml nella META-INF della web-app
<Resource name="jdbc/MYDB" auth="Container"
type="javax.sql.DataSource"
    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
    username="******"
    password="******"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/MYDB" />
questo e' il pezzo di web.xml
<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/MYDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
Questo per ottenere la connessione:
ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/MYDB");
HTH

<cut>
Di seguito vi riporto i file xml:
--------------------------------- web.xml
------------------------------------
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/RomeDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
----------------------------------------------------------------------------
------
questo (SOPRA) secondo me non ti serve.... dalla documentazione dice che
serve se usi
<GlobalNameingResources>  e non vorrei ti andassero in conflitto i nomi...
Fammi sapere
Secondo me è sufficiente ciò che hai scritto qua sotto....


 >
http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howt.
..

A me non va!
Mannaggia Cristina D'Avena!!!
Senti ma che Connector/J utilizzi?

 Senti ma che Connector/J utilizzi?
Il caro "vecchio" mysql-connector-java-3.1.13-bin.jar...
Non ho visto questo :
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
nel tuo file di configurazione..


C'è c'è!!!
Io ho provato sia con il connector 5.0.4 che con 3.1.14.... il 3.1.13
non lo trovo! :D
Ma cmq non riesco ad uscirne....
Non hai un esempio di webapp che inizializza sta cosa e prende una
connessione?
(ormai le provo tutte)
Ciao e grazie, Luigi

 Ciao e grazie, Luigi
Intanto ti segnalo anche questo...
http://www.mokabyte.it/2005/03/j2ee-datasources.htm


Qusto tutorial mi mancava...
Pero' ho notato una cosa... e non solo sul tutorial di mokabyte!
Perchè utilizzano come Driver Class Name "org.gjt.mm.mysql.Driver" e
non "com.mysql.jdbc.Driver"?
Tu quale usi?
Ciao e grazie (so far), Luigi

 non "com.mysql.jdbc.Driver"?
A questa me so trovato risposta da solo!
Bastava continuare a laggere! :D

 sul sito del micio:
http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howt.
..

A discapito di tutti i tutorialsss e le documentazioni ho fatto ciò
che non bisognava fare (ma spero di essere smentito in modo da avere
una logica)!!!
Ho tolto da CATALINA_HOME/common/lib tutti i jar di cui avevo bisogno
e ne rimettevo uno alla volta a seconda dell'errore.
Quindi ho tolto i JAR common-pool, common-dbcp, common-collections e
mysql-connector!
Il primo errore è stato che non trovava il class Drvier di MySQL.
Ho inserito nella directory CATALINA_HOME/common/lib il JAR mysql-
connector-java-5.0.4-bin.jar.
Stoppo il Tomcat.
Lo riavvio e tutto funziona.
I file XML sono rimasti gli stessi presenti nel primo post.
Ora mi chiedo perchè tutti i tutorial di indicano come MUST
l'inserimento di tutti sti caxxo di JAR nella "common/lib"?
Ciao, Luigi.
P.S. Grazie a tutti per la collaborazione! ;)