Problème de configuration de ma datasource MySQL avec TOMCAT 5.5.7...
Le
Patrick Gelin
Bonjour,
Depuis trois jour que je suis dessus je n'arrive pas à configurer ma
DataSource jdbc/rpn_database avec TOMCAT 5.5.7 et MySQL Voici ce que
j'ai fait hier:
1. Mon Driver MySQL
j'ai copié dans common/lib:
file:/opt/jakarta-tomcat-5.5.7/common/lib/mysql-connector-java-3.1.10-bin.jar
2. Voici mon premier essais avec /conf/server.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener
className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<GlobalNamingResources>
<Environment
name="simpleValue"
type="java.lang.Integer"
value="30"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
<Resource
name="jdbc/rpn_database"
type="javax.sql.DataSource"
password="#####"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
validationQuery="select 1"
username="root"
url="jdbc:mysql://www.rpn.ch:3306/rpn?autoReconnect=true"
maxActive="4"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"/>
</GlobalNamingResources>
<Service
name="Catalina">
<Connector
port="8080"
redirectPort="8443">
</Connector>
<Connector
port="8009"
protocol="AJP/1.3"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"
redirectPort="8443">
</Connector>
<Engine
defaultHost="localhost"
name="Catalina">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
<Host
appBase="webapps"
name="localhost">
</Host>
</Engine>
</Service>
</Server>
3. Voici mon second essai avec /conf/server.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener
className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<GlobalNamingResources>
<Environment
name="simpleValue"
type="java.lang.Integer"
value="30"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
</GlobalNamingResources>
<Service
name="Catalina">
<Connector
port="8080"
redirectPort="8443">
</Connector>
<Connector
port="8009"
protocol="AJP/1.3"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"
redirectPort="8443">
</Connector>
<Engine
defaultHost="localhost"
name="Catalina">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
<Host
appBase="webapps"
name="localhost">
<!--
| Begin MyWebApp context definition.
+-->
<Context path="/webapp_newsevent" docBase="webapp_newsevent"
reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_webapp_newsevent." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/rpn_database" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/rpn_database">
<parameter>
<name>factory</name>
<value>org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory</value>
</parameter>
<!--
| The JDBC connection URL for connecting to your MySQL DB.
| The autoReconnect=true argument to the URL makes sure that the
| 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://www.rpn.ch:3306/rpn?autoReconnect=true</value>
</parameter>
<!--
| MySQL username and password for DB connections.
+-->
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>mybd07</value>
</parameter>
<!--
| Class name for MySQL JDBC driver.
+-->
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</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>100</value>
</parameter>
<!--
| Maximum number of idle DB connections to retain in pool.
| Set to 0 for no limit.
+-->
<parameter>
<name>maxIdle</name>
<value>30</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>
</ResourceParams>
</Context>
<!--
| End MyWebApp context definition.
+-->
</Host>
</Engine>
</Service>
</Server>
4. voici mon fichier web.xml:
--
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="2.4" 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...">
<display-name>j2EE news and events for RPN</display-name>
()
<resource-ref>
<description>RPN DataBase</description>
<res-ref-name>jdbc/rpn_database</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
5. Voici mon code source:
public final class CollectionCtrl extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
()
private static DataSource dataSource=null;
public void init() throws ServletException {
super.init();
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:comp/env");
dataSource = (DataSource)envContext.lookup("jdbc/rpn_database");
} catch(Exception e){
log("Exception in ElmtCtrl.doGet()");
}
}
()
6. Voici le bug montré par le debugger de Eclipse à la ligne "dataSource =
(DataSource)envContext.lookup("jdbc/rpn_database");";
"dataSource"= BasicDataSource (idc)
abandonedConfig= null
accessToUnderlyingConnectionAllowed= false
connectionPool= null
connectionProperties= Properties (idf)
dataSource= null
defaultAutoCommit= true
defaultCatalog= null
defaultReadOnly= null
defaultTransactionIsolation= -1
driverClassName= null
initialSize= 0
logWriter= PrintWriter (idr)
maxActive= 8
maxIdle= 8
maxOpenPreparedStatements= -1
maxWait= -1
minEvictableIdleTimeMillis= 1800000
minIdle= 0
numTestsPerEvictionRun= 3
password= null
poolPreparedStatements= false
restartNeeded= false
testOnBorrow= true
testOnReturn= false
testWhileIdle= false
timeBetweenEvictionRunsMillis= -1
url= null
username= null
validationQuery= null
Remarquez que url, username etvalidationquerysont null
7. Après cela, il y a une exception à la ligne "conn =
dataSource.getConnection();"
"e"= SQLNestedException (id3)
cause (SQLNestedException)= SQLException (id0)
cause (Throwable)= SQLNestedException (id3)
detailMessage= "Cannot create JDBC driver of class '' for connect URL
'null'"
next= null
SQLState= null
stackTrace= null
vendorCode= 0
Toute aide est la bienvenue
Merci.
P.S.: Je poste ici car je n'arrive pos à poster dans le forum
gmane.comp.jakarta.tomcat.user
--
Depuis trois jour que je suis dessus je n'arrive pas à configurer ma
DataSource jdbc/rpn_database avec TOMCAT 5.5.7 et MySQL Voici ce que
j'ai fait hier:
1. Mon Driver MySQL
j'ai copié dans common/lib:
file:/opt/jakarta-tomcat-5.5.7/common/lib/mysql-connector-java-3.1.10-bin.jar
2. Voici mon premier essais avec /conf/server.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener
className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<GlobalNamingResources>
<Environment
name="simpleValue"
type="java.lang.Integer"
value="30"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
<Resource
name="jdbc/rpn_database"
type="javax.sql.DataSource"
password="#####"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
validationQuery="select 1"
username="root"
url="jdbc:mysql://www.rpn.ch:3306/rpn?autoReconnect=true"
maxActive="4"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"/>
</GlobalNamingResources>
<Service
name="Catalina">
<Connector
port="8080"
redirectPort="8443">
</Connector>
<Connector
port="8009"
protocol="AJP/1.3"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"
redirectPort="8443">
</Connector>
<Engine
defaultHost="localhost"
name="Catalina">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
<Host
appBase="webapps"
name="localhost">
</Host>
</Engine>
</Service>
</Server>
3. Voici mon second essai avec /conf/server.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener
className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<GlobalNamingResources>
<Environment
name="simpleValue"
type="java.lang.Integer"
value="30"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
</GlobalNamingResources>
<Service
name="Catalina">
<Connector
port="8080"
redirectPort="8443">
</Connector>
<Connector
port="8009"
protocol="AJP/1.3"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"
redirectPort="8443">
</Connector>
<Engine
defaultHost="localhost"
name="Catalina">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
<Host
appBase="webapps"
name="localhost">
<!--
| Begin MyWebApp context definition.
+-->
<Context path="/webapp_newsevent" docBase="webapp_newsevent"
reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_webapp_newsevent." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/rpn_database" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/rpn_database">
<parameter>
<name>factory</name>
<value>org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory</value>
</parameter>
<!--
| The JDBC connection URL for connecting to your MySQL DB.
| The autoReconnect=true argument to the URL makes sure that the
| 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://www.rpn.ch:3306/rpn?autoReconnect=true</value>
</parameter>
<!--
| MySQL username and password for DB connections.
+-->
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>mybd07</value>
</parameter>
<!--
| Class name for MySQL JDBC driver.
+-->
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</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>100</value>
</parameter>
<!--
| Maximum number of idle DB connections to retain in pool.
| Set to 0 for no limit.
+-->
<parameter>
<name>maxIdle</name>
<value>30</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>
</ResourceParams>
</Context>
<!--
| End MyWebApp context definition.
+-->
</Host>
</Engine>
</Service>
</Server>
4. voici mon fichier web.xml:
--
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="2.4" 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...">
<display-name>j2EE news and events for RPN</display-name>
()
<resource-ref>
<description>RPN DataBase</description>
<res-ref-name>jdbc/rpn_database</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
5. Voici mon code source:
public final class CollectionCtrl extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
()
private static DataSource dataSource=null;
public void init() throws ServletException {
super.init();
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:comp/env");
dataSource = (DataSource)envContext.lookup("jdbc/rpn_database");
} catch(Exception e){
log("Exception in ElmtCtrl.doGet()");
}
}
()
6. Voici le bug montré par le debugger de Eclipse à la ligne "dataSource =
(DataSource)envContext.lookup("jdbc/rpn_database");";
"dataSource"= BasicDataSource (idc)
abandonedConfig= null
accessToUnderlyingConnectionAllowed= false
connectionPool= null
connectionProperties= Properties (idf)
dataSource= null
defaultAutoCommit= true
defaultCatalog= null
defaultReadOnly= null
defaultTransactionIsolation= -1
driverClassName= null
initialSize= 0
logWriter= PrintWriter (idr)
maxActive= 8
maxIdle= 8
maxOpenPreparedStatements= -1
maxWait= -1
minEvictableIdleTimeMillis= 1800000
minIdle= 0
numTestsPerEvictionRun= 3
password= null
poolPreparedStatements= false
restartNeeded= false
testOnBorrow= true
testOnReturn= false
testWhileIdle= false
timeBetweenEvictionRunsMillis= -1
url= null
username= null
validationQuery= null
Remarquez que url, username etvalidationquerysont null
7. Après cela, il y a une exception à la ligne "conn =
dataSource.getConnection();"
"e"= SQLNestedException (id3)
cause (SQLNestedException)= SQLException (id0)
cause (Throwable)= SQLNestedException (id3)
detailMessage= "Cannot create JDBC driver of class '' for connect URL
'null'"
next= null
SQLState= null
stackTrace= null
vendorCode= 0
Toute aide est la bienvenue
Merci.
P.S.: Je poste ici car je n'arrive pos à poster dans le forum
gmane.comp.jakarta.tomcat.user
--

Poser une question


Et si tu ajoutes ceci dans context.xml (avec la 1ere tentative de
server.xml)?
<ResourceLink global="jdbc/rpn_database" name="jdbc/rpn_database"
type="javax.sql.DataSource"/>
ok, super,ça march... Merci mille fois!
--
Bon c'est pour Oracle mais je pense pas que c'est le driver qui te pose
problème :
<Server port="8005" shutdown="SHUTDOWN" debug="0">
<Listener
className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<GlobalNamingResources>
<Resource
name="jdbc/gedelo"
type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@thorgal:1521:intradev"
username="gedelo"
password="xxxxxxxx"
maxActive="20"
maxIdle="10"
maxWait="-1"
/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector acceptCount="100" connectionTimeout="20000"
disableUploadTimeout="true" port="8080" redirectPort="8443"
maxSpareThreads="75" maxThreads="150" minSpareThreads="25">
</Connector>
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreType="JKS"
keystoreFile="C:keystore" keystorePass="xxxxxxxx"/>
<Engine defaultHost="localhost" name="Catalina">
<Host appBase="webapps" name="localhost" autoDeploy="false"
deployOnStartup="false">
<DefaultContext allowLinking="true">
</DefaultContext>
<!--Context debug="3" docBase="/M:/workflow/web/"
path="/workflow" allowLinking="true" swallowOutput="true">
<ResourceLink name="jdbc/gedelo" global="jdbc/gedelo"
type="javax.sql.DataSource"/>
</Context-->
</Host>
</Engine>
</Service>
</Server>
Tchô
--
mailto:
E2 ici : http://www.cnbt-cdpn.org