Tomcat 5.5, Datasource config lukt niet

Pagina: 1
Acties:

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Ik ben nu al een tijdje aan het proberen om onder Tomcat 5.5 een data source op te zetten, maar het wil maar niet lukken. Onder JBoss is dit namelijk zo geflikt..

Ik heb mijn mysql driver onder dir "Tomcat-5.5.9\common\lib" zitten.
Heb ook al geprobeerd om de driver in de endorsed directory te plaatsen, zonder effect.

Deze code staat in mijn server.xml:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Context path="/myWebApp" docBase="myWebApp" debug="0" reloadable="true">           
  <Resource name="jdbc/myWebAppDS" auth="Container" type="javax.sql.DataSource"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/appdb?autoReconnect=true"
            username="fox"
            password="password"
            maxActive="20"      
            maxIdle="3" 
            removeAbandoned="true"
            maxWait="3000" />
            <!-- maxActive: Maximum number of DB connections in pool (unlimited=0). -->
            <!-- maxIdle: Maximum number of idle DB connections to retain in pool (unlimited=0). -->
            <!-- maxWait: Maximum time to wait for a DB connection to become available in milliseconds -->                  
</Context>


Verder heb ik in "Tomcat-5.5.9\conf\Catalina\localhost" nog volgende file: myWebApp.xml
XML:
1
2
3
<Context path="/myWebApp" docBase="myWebApp" debug="0" reloadable="true">           
    <ResourceLink name="jdbc/myWebAppDS" auth="Container" type="javax.sql.DataSource"/>
</Context>

Maar ik weet niet goed of deze wel echt nodig is?

Als laatste heb ik volgende ook nog even toegevoegd aan mijn web.xml:
XML:
1
2
3
4
5
6
<resource-ref>
    <description>WebApp data source.</description>
    <res-ref-name>jdbc/myWebAppDS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>


Maar ik blijf volgende exceptions krijgen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
    at org.springframework.orm.hibernate.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:75)
    at net.sf.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)
    at net.sf.hibernate.cfg.Configuration.buildSettings(Configuration.java:1172)
    at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:803)
    at org.springframework.orm.hibernate.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:544)
    at org.springframework.orm.hibernate.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:479)

...

Caused by: java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:243)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
    ... 47 more


Ik weet het zo even niet meer, iemand bekend met dit probleem??

[ Voor 11% gewijzigd door -FoX- op 03-07-2005 21:37 ]


Verwijderd

Die driver heb je goed staan. (vind het zelf eigenlijk een beetje vreemde plaats aangezien deze eigenlijk web app specific is, maar goed).

Wat ik zelf heb is een context.xml die in Web Root->META-INF staat.

Daarnaast een declaratie in web.xml:

XML:
1
2
3
4
5
6
<resource-ref>
    <description> iets. vul zelf in </description>
        <res-ref-name>de naam uit context.xml</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>



Context.xml ziet er ongeveer als volgt uit:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0"?>
<Context docBase="${catalina.home}/webapps/ROOT">

    <Resource   name="naam die je wilt"
                scope="Shareable"
                type="javax.sql.DataSource"
                auth="Container"
                factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
                url="url naar je DB"
                driverClassName="volle naam van je DB driver"
                username="" password=""
                defaultReadOnly="false"
                                defaultAutoCommit="true"                
                defaultTransactionIsolation="READ_COMMITTED"
                initialSize="5"
                minIdle="3"
                maxWait="19000"
                maxIdle="20"
                maxActive="40"
                accessToUnderlyingConnectionAllowed="true"
                validationQuery="select 1"
    />
</Context>


Deze is voor web-apps die naar root gedeployed zijn. Voor een andere path kun je de context aanpassen.

[ Voor 19% gewijzigd door Verwijderd op 04-07-2005 00:41 ]


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Heb je de mysql-driver wel neergezet in $TOMCAT_HOME/common/lib ?

En bij mij staat de reut in server.xml onder
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<Server>
...
  <GlobalNamingResources>
...
    <Resource
      name="jdbc/pffrt"
      auth="Container"
      type="javax.sql.DataSource"
      driverClassName="org.postgresql.Driver"
      factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
      password="pffrt"
      maxIdle="10"
      maxWait="5000"
      username="pffrt"
      url="jdbc:postgresql://127.0.0.1/pffrt"
      maxActive="4"/>
  </GlobalNamingResources>
  <Service
      name="Catalina">
...
</server>

[ Voor 82% gewijzigd door Varienaja op 04-07-2005 09:56 ]

Siditamentis astuentis pactum.


Verwijderd

Varienaja schreef op maandag 04 juli 2005 @ 09:52:
Heb je de mysql-driver wel neergezet in $TOMCAT_HOME/common/lib ?
Hij zegt toch:

Ik heb mijn mysql driver onder dir "Tomcat-5.5.9\common\lib" zitten.

Of bedoel je dat $TOMCAT_HOME mischien niet Tomcat-5.5.9 is???

  • djengizz
  • Registratie: Februari 2004
  • Niet online
Hmmm. Kan me eenzelfde probleem herinneren. Heb het toen opgelost door de datasource via de Admin Console te installeren. Volgens mij zat het toen in m'n <Resource> tag in de server.xml.

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Verwijderd schreef op maandag 04 juli 2005 @ 20:14:
[...]


Hij zegt toch:

Ik heb mijn mysql driver onder dir "Tomcat-5.5.9\common\lib" zitten.

Of bedoel je dat $TOMCAT_HOME mischien niet Tomcat-5.5.9 is???
Vanavond pas weer voor de eerste keer kunnen uitproberen. Maar geen van de hierboven genoemde oplossingen lijkt te werken. Ik blijf een "no suitable driver" exception krijgen:
code:
1
2
3
4
Caused by: java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:243)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
    ... 47 more

Heb zelfs de mysql driver in de endorsed directory proberen te stoppen, maar ook dit leek niet te helpen. Is er geen andere, simpelere oplossing om deze datasource aan het werken te krijgen??
Het installeren via de admin kan misschien werken, maar ik dit kan toch niet de bedoeling zijn (aangezien de admin zelfs standaard niet tomcat geleverd wordt)

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Nu is het me dus wel gelukt, dit is de procedure die ik nu gevolgt heb. Heeft iemand opmerkingen/aanmerkingen op deze aanpak?

1) Mysql driver kopiëren naar de <CATALINA_HOME>/common/lib directory

2) Voeg volgende toe in de <CATALINA_HOME>/conf/server.xml, tussen de <GlobalNamingResources> en </GlobalNamingResources> tags:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    <!--
    | Begin Context definition.
    +-->
    <Resource name="jdbc/NaamDS" auth="Container" type="javax.sql.DataSource"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/dbnaam?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;mysqlEncoding=utf8"
        username="fox"
        password="password"
        maxActive="20"      
        maxIdle="3" 
        removeAbandoned="true"
        maxWait="3000" />
        <!-- maxActive: Maximum number of DB connections in pool (unlimited=0). -->
        <!-- maxIdle: Maximum number of idle DB connections to retain in pool (unlimited=0). -->
        <!-- maxWait: Maximum time to wait for a DB connection to become available in milliseconds -->
    <!--
    | End Context definition.
      +-->

3) Voeg volgende toe aan <CATALINA_HOME>/conf/context.xml; tussen <Context> en </Context>:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- The contents of this file will be loaded for each web application -->
<Context>

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>META-INF/context.xml</WatchedResource>
    
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
    <ResourceLink global="jdbc/NaamDS" name="jdbc/NaamDS" type="javax.sql.DataSource"/>
</Context>

4) Voeg volgende nog toe aan de <CONTEXT>/WEB-INF/web.xml:
XML:
1
2
3
4
5
6
7
<!-- TOMCAT DATASOURCE CONFIG -->
  <resource-ref>
    <description>Data source beschrijving</description>
    <res-ref-name>jdbc/NaamDS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

5) Herstart Tomcat

[ Voor 16% gewijzigd door -FoX- op 07-07-2005 22:35 ]

Pagina: 1