thank you, it works! there are two factor need to mention:
1) as i used hibernate to create Database-connection before, the connection pool C3P0 was used in hibernate. but when i try to maintain Database-connection through JNDI in tomcat, i donn't need C3P0 anymore. so, i SHOULD delete configuration about C3P0 in hibernate configuration file. The error message i got had something to do with it. 2) I SHOULD add a ResourceLink in the Context.xml, in order to let Hibernate using the global resource, witch is in read only mode. (https://forums.hibernate.org/viewtopic.php?f=1&t=937920&start=0) <ResourceLink name="jdbc/mysql" global="jdbc/mysql" type="javax.sql.DataSource"/> Pid Ster wrote: > > On 23/11/2009 16:03, dishmily wrote: >> >> i have made few changes, but it didn't work. >> (my project uses tomcat and hibernate.) > > You didn't mention that before. > > You need to configure Hibernate to use the DataSource "jdbc/mysql" that > you've created. It doesn't appear to be correctly configured at the > moment. > > > You can test that the db connection pool is working: > > InitialContext ic = new InitialContext(); > DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/mysql"); > Connection conn = ds.getConnection(); > > > >> 1) $Tomcat_Home\conf\context.xml was changed to: > > This is the default context definition, rather than a web app specific > one. Just so you know. > > To configure it for a specific web app, include a context.xml definition > in the META-INF folder of your webapp. > > > p > > >> <Context> >> >> <WatchedResource>WEB-INF/web.xml</WatchedResource> >> >> <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" >> maxActive="100" maxIdle="30" maxWait="10000" >> username="db" password="pwd" >> driverClassName="com.mysql.jdbc.Driver" >> url="jdbc:mysql://localhost:3306/db"/> >> >> </Context> >> >> 2)<resource-ref> was added into >> $Tomcat_Home\webapps\axis2\WEB-INF\web.xml >> : >> >> <web-app> >> ... >> <resource-ref> >> <description>DB Connection</description> >> <res-ref-name>jdbc/mysql</res-ref-name> >> <res-type>javax.sql.DataSource</res-type> >> <res-auth>Container</res-auth> >> </resource-ref> >> .... >> </web-app> >> >> wenn i ran the web application, i got the error message: >> >> INFO: Initializing c3p0 pool... >> com.mchange.v2.c3p0.poolbackeddatasou...@29fb0733 [ >> connectionPoolDataSource >> -> com.mchange.v2.c3p0.wrapperconnectionpooldatasou...@dd3d444b [ >> acquireIncrement -> 5, acquireRetryAttempts -> 30, acquireRetryDelay -> >> 1000, autoCommitOnClose -> false, automaticTestTable -> null, >> breakAfterAcquireFailure -> false, checkoutTimeout -> 0, >> connectionCustomizerClassName -> null, connectionTesterClassName -> >> com.mchange.v2.c3p0.impl.DefaultConnectionTester, >> debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> >> null, >> forceIgnoreUnresolvedTransactions -> false, identityToken -> >> 1hgeigx859d0cr2vfrvc8|1ba92db, idleConnectionTestPeriod -> 7200, >> initialPoolSize -> 10, maxAdministrativeTaskTime -> 0, maxConnectionAge >> -> >> 0, maxIdleTime -> 14400, maxIdleTimeExcessConnections -> 0, maxPoolSize >> -> >> 100, maxStatements -> 100, maxStatementsPerConnection -> 0, minPoolSize >> -> >> 10, nestedDataSource -> >> com.mchange.v2.c3p0.drivermanagerdatasou...@b33bd229 >> [ description -> null, driverClass -> null, factoryClassLocation -> >> null, >> identityToken -> 1hgeigx859d0cr2vfrvc8|87ad67, jdbcUrl -> null, >> properties >> -> {useUnicode=true, autocommit=false, characterEncoding=UTF8} ], >> preferredTestQuery -> null, propertyCycle -> 0, testConnectionOnCheckin >> -> >> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> >> 0, >> usesTraditionalReflectiveProxies -> false; userOverrides: {} ], >> dataSourceName -> null, factoryClassLocation -> null, identityToken -> >> 1hgeigx859d0cr2vfrvc8|15b55bc, numHelperThreads -> 3 ] >> 23.11.2009 16:51:25 >> com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run >> WARNUNG: >> com.mchange.v2.async.threadpoolasynchronousrunner$deadlockdetec...@170ec24 >> -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending >> tasks! >> 23.11.2009 16:51:25 >> com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run >> WARNUNG: >> com.mchange.v2.async.threadpoolasynchronousrunner$deadlockdetec...@170ec24 >> -- APPARENT DEADLOCK!!! Complete Status: >> Managed Threads: 3 >> Active Threads: 3 >> Active Tasks: >> com.mchange.v2.resourcepool.basicresourcepool$acquiret...@c5d9c1 >> (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2) >> >> com.mchange.v2.resourcepool.basicresourcepool$acquiret...@15b4ad2 >> (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0) >> com.mchange.v2.resourcepool.basicresourcepool$acquiret...@8d3d62 >> (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1) >> Pending Tasks: >> com.mchange.v2.resourcepool.basicresourcepool$acquiret...@b9132a >> com.mchange.v2.resourcepool.basicresourcepool$acquiret...@996b65 >> com.mchange.v2.resourcepool.basicresourcepool$acquiret...@59c8b5 >> com.mchange.v2.resourcepool.basicresourcepool$acquiret...@881cb3 >> com.mchange.v2.resourcepool.basicresourcepool$acquiret...@143753 >> >> com.mchange.v2.resourcepool.basicresourcepool$acquiret...@13c4c09 >> >> com.mchange.v2.resourcepool.basicresourcepool$acquiret...@1a40247 >> Pool thread stack traces: >> >> Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main] >> java.lang.Thread.sleep(Native Method) >> >> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805) >> >> com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547) >> >> Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main] >> java.lang.Thread.sleep(Native Method) >> >> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805) >> >> com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547) >> >> Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main] >> java.lang.Thread.sleep(Native Method) >> >> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805) >> >> com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547) >> >> >> 23.11.2009 16:51:34 >> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask run >> WARNUNG: com.mchange.v2.resourcepool.basicresourcepool$acquiret...@c5d9c1 >> -- >> Acquisition Attempt Failed!!! Clearing pending acquires. While trying to >> acquire a needed new resource, we failed to succeed more than the maximum >> number of allowed acquisition attempts (30). Last acquisition attempt >> exception: >> java.lang.NullPointerException >> at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:507) >> at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476) >> at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307) >> at java.sql.DriverManager.getDriver(DriverManager.java:253) >> at >> com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:223) >> at >> com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:119) >> at >> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143) >> at >> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132) >> at >> com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137) >> at >> com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014) >> at >> com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32) >> at >> com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810) >> at >> com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547) >> >> >> >> >> Pid Ster wrote: >>> >>> On 23/11/2009 13:00, dishmily wrote: >>>> >>>> i use 3 tomcats in one PC, in each tomcat i have a webservice, for each >>>> webservice i use a mysql database. >>>> >>>> my question is: >>>> >>>> how can i write a config file in each tomcat to let tomcat1 load DB1, >>>> tomcat2 load DB2 and tomcat3 load DB3. >>>> >>>> thanks. >>> >>> >>> I'm guessing that you're using Tomcat 6.0, because you didn't say. >>> The extensive documentation is often a good place to start: >>> >>> http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html >>> >>> >>> p >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >>> For additional commands, e-mail: users-h...@tomcat.apache.org >>> >>> >>> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > > -- View this message in context: http://old.nabble.com/config-database-in-Tomcat-tp26477627p26493458.html Sent from the Tomcat - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org