I'm having trouble moving my webapp from Tomcat 5.0 to 5.5. The dataSource in
Context.xml seems to be the issue.
According to the 'JNDI how-to' documentation for 5.0 and 5.5, it looks like the
'<ResourceParams>' tag has been removed from the Context.xml and instead you
can now supply arbitrary attributes to the <Resource> tag itself.
In 5.0, my Context.xml looked like this and it worked fine:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="true" docBase="myapp" path="/myapp">
<Resource name="jdbc/db1" auth="Container"
type="oracle.jdbc.pool.OracleDataSource" />
<ResourceParams name="jdbc/db1">
<parameter>
<name>factory</name>
<value>oracle.jdbc.pool.OracleDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@xx:xx:xx</value>
</parameter>
<parameter>
<name>user</name>
<value>xx</value>
</parameter>
<parameter>
<name>password</name>
<value>xx</value>
</parameter>
</ResourceParams>
</Context>
...note that oracle's factory requires "user", not "username".
Moving to 5.5, I changed it to:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="true" docBase="myapp" path="/myapp">
<Resource auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver"
factory="oracle.jdbc.pool.OracleDataSourceFactory"
name="jdbc/db1"
password="xxx"
type="oracle.jdbc.pool.OracleDataSource"
url="jdbc:oracle:thin:@xx:xx:xx"
user="xx"/>
</Context>
...this new Context.xml doesn't work. I get the following:
javax.naming.NamingException: Cannot create resource instance
at
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:132)
at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source)
at org.apache.naming.NamingContext.lookup(NamingContext.java:792)
....any ideas? Almost seems as if the "factory" attribute of <Resource> is not
being used.
thanks
tk_