I managed to find a work around on this issue. I modified my server.xml to
have the pool specific information locally rather than globally and it
worked.
Here is what I did:
Removed my pool info from <GlobalNamingResource> and put them into the local
resource tags
<Context className="org.apache.catalina.core.StandardContext"
cachingAllowed="true"
charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true"
crossContext="false" debug="0" displayName="Apache-Axis" docBase="C:\Program
Files\Apache Group\Tomcat 4.1\webapps\dbtest"
mapperClass="org.apache.catalina.core.StandardContextMapper" path="/dbtest"
privileged="false" reloadable="false" swallowOutput="false" useNaming="true"
wrapperClass="org.apache.catalina.core.StandardWrapper">
<Resource name="jdbc/CPSDataSource"
auth="Container" type="javax.sql.DataSource"/>
<ResourceParams
name="jdbc/CPSDataSource">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>validationQuery</name>
<value>select
count(*) from TEST</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://GH733021:1433</value>
</parameter>
<parameter>
<name>password</name>
<value>mw2</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>Administrator</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
</ResourceParams>
</Context>
This did the magic!
-----Original Message-----
From: Rodney Waldhoff [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, December 17, 2002 4:44 PM
To: Jakarta Commons Users List
Subject: RE: Connection pool nightmare!
There have been a couple of reports on this (e.g.,
<http://issues.apache.org/bugzilla/show_bug.cgi?id=14267>), but it doesn't
seem to be universal.
Oddly, it always seems to be this property (driver name) that isn't getting
passed.
I've been having trouble re-creating this problem personally, but I can try
to poke around a bit more if I get a chance. Perhaps someone more intimate
with the Tomcat JNDI code can try to take a look as well?
On Fri, 13 Dec 2002, MANOHARAN,MADHAN (HP-PaloAlto,ex1) wrote:
> 1. Yes, the driver exists in the common/lib directory.
> 2. I wrote a quick test method in the same java class I wrote to test
> the connection pool and it works just fine. 3. I compared the
> server.xml with the one on the DBCP site(I had already looked @ the
> file a 100 times before) and it looks just fine. 4. I checked the
> web.xml to make sure the resource ref name is the same.
>
> The problem still exists. I'm trying to install oracle and check
> against that just to eliminate the possibility that the problem is
> from the database/driver. I appreciate your help Jonathan. Thanks.
>
> Madhan
>
> -----Original Message-----
> From: Jonathan Mangano [mailto:[EMAIL PROTECTED]]
> Sent: Friday, December 13, 2002 10:58 AM
> To: Jakarta Commons Users List
> Subject: RE: Connection pool nightmare!
>
>
> By the looks of it you don't have the driver class specified properly
> in your server.xml. To debug this problem:
>
> 1. Check that your jdbc driver is in the <TomcatHome>/common/lib
> directory
>
> 2. Write a quick test class to check the driver name, driver url,
> username and password you are using. Something very simple like:
> Driver jsqlDriver =
> (Driver) Class.forName(jsqlDriverName).newInstance();
> Connection conn = DriverManager.getConnection(driverUrl, userName,
> password);
>
> 3. If this works open your server.xml in <TomcatHome>/conf and compare
> it to the example at
> http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-exampl
> es-how
> to.html#Database%20Connection%20Pool%20(DBCP)%20Configurations just
> switching the driver name, driver url, username and password with your
own.
>
> 4. Open your web.xml and also check it against the example above to
> see if everything is properly configured
>
>
> -----Original Message-----
> From: MANOHARAN,MADHAN (HP-PaloAlto,ex1)
> [mailto:[EMAIL PROTECTED]]
> Sent: December 13, 2002 1:17 PM
> To: 'Jakarta Commons Users List'
> Subject: Connection pool nightmare!
>
>
> Hi guys,
> I bet there were many postings on this issue before. I searched the
> archive, but couldn't figure out a way to solve this and so posting
> again. I use SQL Server 2000, JDBC drivers from MS for SQL Server
> 2000, Tomcat 4.1.6, windows XP. I was trying to implement connection
> pooling and this is what I did
>
> 1) created a connection pool from tomcat admin(pointing to
> http://localhost:8080/admin) ). I did use the datasource driver from
> MS(com.microsoft.jdbcx.sqlserver.SQLServerDataSource) for the
> driverclassname.
> 2) created a web.xml with the Resource reference entry
> 3) created a simple java class where I lookup the context via jndi and
> try to get a connection.
> 4) created a jsp to call the java class.
>
> When I hit the jsp, it calls the java class. The java class looks up
> the datasource and finds it( I guess), but when I try to get the
> connection, I get this error
>
> java.sql.SQLException: Cannot load JDBC driver class 'null'
> at
> org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSour
> ce.jav
> a:529)
> at
>
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:3
> 12)
> at foo.DBTest.init(DBTest.java:32)
> at org.apache.jsp.test_jsp._jspService(test_jsp.java:50)
> at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>
> >From what I see, Tomcat is not able to load the driver class for some
> reason. The jar files are in the classpath and also in the tomcat
> common lib directory.
>
> This is the method in the java program which tries to use the pool:
>
> public void init() {
> try{
> Context ctx = new InitialContext();
> if(ctx == null )
> throw new Exception("Boom - No Context");
> Context env = (Context)ctx.lookup("java:comp/env/jdbc");
> System.out.println("Environ contxt "+env);
> Enumeration e = env.list("");
> while(e.hasMoreElements())
> {
> System.out.println("Environment element
"+e.nextElement());
> }
> DataSource ds =(DataSource)env.lookup("CPSDataSource");
> System.out.println("Lookup successful...");
> if (ds != null) {
> Connection conn = ds.getConnection();
> if(conn != null) {
> foo = "Got Connection "+conn.toString();
> Statement stmt = conn.createStatement();
> ResultSet rst =
> stmt.executeQuery(
> "select ID from TEST");
> if(rst.next()) {
> foo=rst.getString(2);
> bar=rst.getInt(3);
> }
> conn.close();
> }
> }
> }catch(Exception e) {
> e.printStackTrace();
> }
> }
>
> I also tried looking up "jdbc/CPSDataSource" from the "java:comp/env"
> context; I'm looking up the "java:comp/env/jdbc" to make sure the
> CPSDataSource context exists and print the context variables in the
> program.
>
> Could someone throw some light on whatz wrong or why this fails?
>
> Thanks,
> Madhan
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
>
--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>