Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

DataSource pool error on getConnection()

843859Oct 27 2005 — edited Oct 28 2005
Hello fine people:

I have recently upgraded to tomcat 5 and setup connection pooling following the documentation
at this all too familiar address:

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

Below is my server.xml, web.xml, and a servlet for querying the database. When I run the program
I get an error on this line:

Connection ocon = getConnection("java:comp/env/jdbc/CraigsList");

The error message found in the Tomcat logs is shown at the bottom of this reply.
Can you suggest how I might resolve this error? Any help is greatly appreciated.

Thank you,

Logan


My server.xml reads as follows:
**********************************************

<Server port="8005" shutdown="SHUTDOWN">

<GlobalNamingResources>
<!-- Used by Manager webapp -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved">
</Resource>

<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>

<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>

<Service name="Catalina">
<Connector port="8080" />

<!-- This is here for compatibility only, not required -->
<Connector port="8009" protocol="AJP/1.3" />

<Engine name="Catalina" defaultHost="localhost">
<Logger className="org.apache.catalina.logger.FileLogger" />

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />

<Host name="localhost" appBase="webapps" />

<Host name="192.168.1.103" debug="0" appBase="d:/WebSites/CraigsList">

<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="site1_log." suffix=".txt" timestamp="true"/>

<Context path="" docBase="" debug="0">

<Resource name="jdbc/CraigsList" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/CraigsList">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:CraigsList@192.168.1.103:1521:DBZ</value>
</parameter>
<parameter>
<name>username</name>
<value>Craig</value>
</parameter>
<parameter>
<name>password</name>
<value>*********</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>

</Context>
</Host>

</Engine>
</Service>
</Server>
**********************************************


I have made no changes to the default web.xml found in tomcat50/conf folder.


My application's web.xml reads as follows:
***********************************************
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<resource-ref>
<description>Oracle Datasource</description>
<res-ref-name>jdbc/CraigsList</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

<session-config>
<session-timeout>3600</session-timeout>
</session-config>

<welcome-file-list>
<welcome-file>/index.html</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>CraigsMain</servlet-name>
<servlet-class>CraigsClasses.CraigsMain</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>CraigsMain</servlet-name>
<url-pattern>/servlet/CraigsClasses.CraigsMain</url-pattern>
</servlet-mapping>

</web-app>
*************************************


Here is the servlet:
***************************************
package CraigsClasses;

import javax.servlet.*;
import javax.servlet.jsp.*;
import java.net.*;
import java.util.*;
import java.io.*;
import javax.servlet.http.*;
import java.sql.*;
import java.util.Date;
import java.text.*;
import javax.naming.*;
import javax.sql.DataSource;

public class CraigsMain extends HttpServlet {

public void init(ServletConfig config) throws ServletException {
super.init(config);
}

private Connection getConnection(String lookup) throws NamingException, SQLException {
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup(lookup);
Connection ocon = ds.getConnection();
context.close();
return ocon;
} // private Connection getConnection(String lookup) throws NamingException, SQLException {

// Process the http Get request
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

try {

response.setContentType("text/html");
PrintWriter out = response.getWriter();

String sql = "select formtitle from checkboxforms where cbformid = 157";

// error occurs at this line
Connection ocon = getConnection("java:comp/env/jdbc/CraigsList");

PreparedStatement pStmt = ocon.prepareStatement(sql);
ResultSet rs1 = pStmt.executeQuery();
rs1.next();
out.println("<br>" + rs1.getString(1));
rs1.close();
pStmt.close();
ocon.close();

} catch(SQLException sqle) {
System.err.println("sql exception error: " + sqle);
} catch(NamingException ne) {
System.err.println("naming exception error: " + ne);
}
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}

**************************************
End of servlet.

Thank you again.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 25 2005
Added on Oct 27 2005
8 comments
941 views