Tuesday, May 17, 2005

Setup JDBC DataSources under Tomcat

Reference: http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html

  • server.xml before </host>
<!-- This is added for JDBC DataSource by zhibin -->
<Context path="/cpg" docBase="cpg" debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/bioDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/bioDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>30000</value>
</parameter>
<parameter>
<name>username</name>
<value>UHN</value>
</parameter>
<parameter>
<name>password</name>
<value>microarray</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/test</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
</ResourceParams>
</Context>
  • web.xml
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/bioDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
  • test code
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/bioDB">
select id, cont from aainno;
</sql:query>

<html>
<head>
<title>DB Test</title>
</head>
<body>

<h2>Results</h2>

<c:forEach var="row" items="${rs.rows}">
Foo ${row.id}<br/>
Bar ${row.cont}<br/>
</c:forEach>

</body>
</html>
  • servlet
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

Context env = new InitialContext();
DataSource pool = (DataSource) env.lookup("java:comp/env/jdbc/bioDB");
Connection database = pool.getConnection();
  • Global Resources
If put JDBC resource under <GlobalNaming Resources> and put <ResourceLink name="jdbc/bioDB" global="jdbc/bioDB" type="javax.sql.DataSource" /> inside <DefaultContext>, the Database Pool can be used by every application under the server, which means globally.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home