I've been trying to get PostgreSQL set up to be accessed through JNDI
in Tomcat 5.5.x. I found the docs page describing it, "jndi-
datasource-examples-howto.html", and followed the example there, but
it still doesn't work. I'm trying to provide access to PostgreSQL for
use by both JDO and JCR in my web-apps.
Here's the Resource definition I'm using:
<Resource name="jdbc/whisper_db"
auth="Container"
type="javax.sql.Datasource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://127.0.0.1:5432/my_db"
username="-------------------"
password="-------------------""
maxActive="10"
maxIdle="100"
maxWait="3000" />
In my application's META-INF/context.xml, I have the following
ResourceLink:
<ResourceLink
global="jdbc/whisper_db" name="jdbc/whisper_orm"
type="javax.sql.Datasource" />
In my application's WEB-INF/web.xml, I have the following resource-
env-ref:
<resource-env-ref>
<description>Whisper's Database</description>
<resource-env-ref-name>jdbc/whisper_orm</resource-env-ref-name>
<resource-env-ref-type>javax.sql.Datasource</resource-env-
ref-type>
</resource-env-ref>
Depending on where I put the Resource definition, I get different
errors.
If I put it in the web-app's META-INF/context.xml, or in $TOMCAT_HOME/
conf/context.xml, my JDO implementation complains:
NestableRuntimeException: There was an error duing JNDI lookup
of the name "java:comp/env/jdbc/whisper_orm".
....
Caused by: javax.naming.NameNotFoundException: Name jdbc is not
bound in this Context
If I put it in $TOMCAT_HOME/conf/server.xml, in the
GlobalNamingResources section, I get:
2006-04-04 11:58:27,866 ERROR
[org.apache.catalina.mbeans.GlobalResourcesLifecycleListener] -
<Exception processing Global JNDI Resources>
javax.naming.NamingException: Cannot create resource instance
at
org.apache.naming.factory.ResourceFactory.getObjectInstance
(ResourceFactory.java:132)
at javax.naming.spi.NamingManager.getObjectInstance
(NamingManager.java:304)
at org.apache.naming.NamingContext.lookup(NamingContext.java:
792)
at org.apache.naming.NamingContext.lookup(NamingContext.java:
152)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:138)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:143)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:108)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.lifecycleEve
nt(GlobalResourcesLifecycleListener.java:80)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent
(LifecycleSupport.java:119)
at org.apache.catalina.core.StandardServer.start
(StandardServer.java:693)
at org.apache.catalina.startup.Catalina.start(Catalina.java:
551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start
(Bootstrap.java:275)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:
413)
I'm assuming these errors are related, and that whatever is causing
the NamingException is the same fundamental problem causing the
NameNotFoundException in the context-based configuration. My problem
is that I can't figure out what it is. The driver for the database
(postgresql-8.1-405.jdbc3.jar) is in $TOMCAT_HOME/common/lib/, and
I've also tried adding commons-dbcp-1.2.1.jar and commons-
pool-1.2.jar alongside it (even though the docs say that shouldn't be
necessary), but get the same errors.
Is there any logging that I can turn on that will tell me the WHY
Tomcat "Cannot create resource instance"? Or am I doing something
obviously stupid with my Resource definition? Or could it be
something else entirely?
Any suggestions would be really helpful.
Thanks!
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]