swedeMedlem sedan feb. 2004230 inlägg Hur sätter man upp connection pooling i Tomcat?
Jag har försökt förstå tutorialen som finns i Tomcat docs en,
men jag får bara klagomål i loggfilen när den startar och inga sessioner loggar in på mySQL servern.
Är det server.xml eller web.xml som ska editeras?
Och vad går var?
Vill skapa en generell connection pool till en mysql databas som
alla webappar ska kunna använda sig av.
Har laddat ned drivis till mysqlen och så.
JaarMedlem sedan juli 2001434 inlägg Här är hur jag har det.. kanske kan hjälpa dig fast det är för oracle...
<Resource name="jdbc/MyOracleDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/MyOracleDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</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>
<!-- Oracle dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>myUser</value>
</parameter>
<parameter>
<name>password</name>
<value>myPassword</value>
</parameter>
<!-- Class name for oracle JDBC driver -->
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<!-- The JDBC connection url for connecting to your MySQL dB.
The autoReconnect=true argument to the url makes sure that the
mm.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:oracle:thin:@195.0.0.1:1521:DATABASE</value>
</parameter>
<parameter>
<name>validationQuery</name>
<value>select count(*) from myTable</value>
</parameter>
<parameter>
<name>testOnBorrow</name>
<value>true</value>
</parameter>
<parameter>
<name>testWhileIdle</name>
<value>true</value>
</parameter>
<parameter>
<name>timeBetweenEvictionRunsMillis</name>
<value>600000</value>
</parameter>
<parameter>
<name>minEvictableIdleTimeMillis</name>
<value>600000</value>
</parameter>
</ResourceParams>
sedan i web.xml
<resource-ref>
<description>Oracle database connection for my connection</description>
<res-ref-name>jdbc/MyOracleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Sedan hämtar jag det genom följande:
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
dataSource = (DataSource) envContext.lookup("jdbc/MyOracleDB);
conn = dataSource.getConnection();
Kanske hjälper dig lite iaf... Lycka till
jmeMedlem sedan maj 20012 237 inlägg Även om jag inte var frågeställaren så tackra jag för förslaget jag med. Har haft connection-pooling i tankarna och skall i dagarna testa ditt förslag.:)
swedeMedlem sedan feb. 2004230 inlägg Lång postning, men vad är fel?
Den loggen yrar något om att den inte kan skapa naming någonting...
Får följande fel i catalina.out:
javax.naming.NamingException: Cannot create resource instance
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:189)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301)
at org.apache.naming.NamingContext.lookup(NamingContext.java:834)
at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
at org.apache.naming.NamingContext.lookup(NamingContext.java:194)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:183)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at foo.DBTest.init(Unknown Source)
<snip>
Min server.xml innehåller följande:
<!-- Global MySQL connection -->
<Resource name="jdbc/MySQLDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/MySQLDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
..En massa parametrar här...
\<parameter\>
\<name\>driverClassName\</name\>
\<value\>org.gjt.mm.mysql.Driver\</value\>
\</parameter\>
\<parameter\>
\<name\>url\</name\>
\<value\>jdbc:mysql://localhost:3306/javatest?autoReconnect=true\</value\>
\</parameter\>
\</ResourceParams\>
Och min web.xml:
<resource-ref>
<description>DB connection</description>
<res-ref-name>jdbc/MySQLDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
JaarMedlem sedan juli 2001434 inlägg Hej .. vet inte om detta är felet men <Resource> ska ligga under den context du vill använda den i enligt mitt exempel.
Tror min kod hämtar en resource i applikationens context
swedeMedlem sedan feb. 2004230 inlägg Äh, jag ger upp med connection-pooling tills vidare...
Crap :(