Hello all. I have been using Tomcat 4.x, and it's worked very well.
I had a data source defined in struts, and that worked very well. Then I
had a need to access a database from a non-JSP class, so I figured I'd use
JNDI. Oddly enough I got this to work the first time. Then I went to
tweak it, and now it does not work at all.
Here is my server.xml settings:
<Context
className="org.apache.catalina.core.StandardContext"
cachingAllowed="true"
charsetMapperClass="org.apache.catalina.util.CharsetMapper"
cookies="true"
crossContext="false"
debug="5"
docBase="/var/tomcat4/webapps/performanceServer"
mapperClass
="org.apache.catalina.core.StandardContextMapper"
path="/performanceServer"
privileged="false"
reloadable="false"
swallowOutput="false"
useNaming="true"
wrapperClass="org.apache.catalina.core.StandardWrapper">
<Resource
auth="SERVLET"
description="Performance Server database."
name="jdbc/PerformanceDatabase"
scope="Shareable"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/PerformanceDatabase">
<parameter>
<name>driverClassName</name>
<value>org.postgresql.Driver</value>
</parameter>
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:postgresql:performance</value>
</parameter>
<parameter>
<name>username</name>
<value>perfserver</value>
</parameter>
<parameter>
<name>validationQuery</name>
<value></value>
</parameter>
</ResourceParams>
</Context>
Here is my web.xml entry:
<!-- JNDI Datasource -->
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/PerformanceDatabase</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Here is my code to get a connection:
private static Connection getConnection(){
Connection connection = null;
try {
Context ctx = new InitialContext();
if (ctx == null )
throw new Exception("Boom - No Context");
System.out.println("%%%% getting data source");
Context environmentContext = (Context)ctx.lookup
("java:comp/env");
DataSource ds = (DataSource)environmentContext.lookup
("jdbc/PerformanceDatabase");
System.out.println("%%%% got datasource");
if (ds != null) {
System.out.println(ds);
connection = ds.getConnection();
}
System.out.println("%%%% got connection");
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
The sys.out 'got datasource' prints, but it never gets to 'got
connection', and no exceptions are thrown. It just hangs. There is no CPU
useage, so this leads me to think that there is some blocking going on.
Perhaps the getConnection just isn't able to do something, I just don't
know what.
Any ideas? Thanks!
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]