Hi,
I'm having trouble when attempting to access a JDBC connection pool when
using a virtual host. I have a servlet that is set to load on startup (ie.
<load-on-startup>1</load-on-startup> in web.xml), this servlet attempts to
get a pool connection to read some configuration options from the database.
This works fine when the web app is deploy without using virtual hosts.
When attempting to run with virtual hosts I get the following error: "Could
not load JDBC driver 'null'". I've seen this error reported many times on
the list, with no definite solution that has worked.
Here is information about my setup:
Tomcat Standalone, version 4.1.12
Oracle database
Solaris 8 and 9
web.xml for pool:
<resource-ref>
<description>Oracle Datasource</description>
<res-ref-name>jdbc/orapool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
server.xml for virtual host:
<Host name="blah.blah.com" debug="0" appBase="blah"
unpackWARs="true" autoDeploy="true">
<!-- Logger shared by all Contexts related to this virtual host. By
default (when using FileLogger), log files are created in the
"logs"
directory relative to $CATALINA_HOME. If you wish, you can
specify
a different directory with the "directory" attribute. Specify
either a
relative (to $CATALINA_HOME) or absolute path to the desired
directory.-->
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="blah_log." suffix=".txt"
timestamp="true"/>
<!-- Define properties for each web application. This is only
needed
if you want to set non-default properties, or have web
application
document roots in places other than the virtual host's appBase
directory. -->
<!-- Tomcat Root Context -->
<Context path="" docBase="blahweb" debug="4">
<Resource name="jdbc/orapool" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/orapool">
<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>validationQuery</name>
<value>select sysdate from dual</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>30000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>password</name>
<value>mypassword</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@192.168.0.100:1521:mysid</value>
</parameter>
<parameter>
<name>username</name>
<value>myusername</value>
</parameter>
</ResourceParams>
</Context>
</Host>
Code to get connection from pool:
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/orapool");
return ds.getConnection();
Again, the above configuration works fine when used in a Context under the
"localhost" <Host> element. It seems to only be when I define another
<Host> element that I get the error.
Any ideas?
Thanks,
Nate
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>