Skip to Main Content

Java Programming

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Can connect to JNDI data source in one server, but not another

661599May 12 2011 — edited May 13 2011
Hi,

I am seeing a strange problem whereby I get the following exception when trying to connect to a JNDI data source from my application:
org.springframework.jndi.JndiLookupFailureException: JndiObjectTargetSource failed to obtain new target object; nested exception is javax.naming.NamingException
	org.springframework.jndi.JndiObjectTargetSource.getTarget(JndiObjectTargetSource.java:138)
	org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:184)
	$Proxy0.getConnection(Unknown Source)
	org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
	org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:210)
	$Proxy34.prepareStatement(Unknown Source)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.getDataSourceURL(HealthCheckServlet.java:187)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.processRequest(HealthCheckServlet.java:114)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.doGet(HealthCheckServlet.java:63)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

javax.naming.NamingException
	org.apache.naming.NamingContext.lookup(NamingContext.java:805)
	org.apache.naming.NamingContext.lookup(NamingContext.java:140)
	org.apache.naming.NamingContext.lookup(NamingContext.java:781)
	org.apache.naming.NamingContext.lookup(NamingContext.java:140)
	org.apache.naming.NamingContext.lookup(NamingContext.java:781)
	org.apache.naming.NamingContext.lookup(NamingContext.java:140)
	org.apache.naming.NamingContext.lookup(NamingContext.java:781)
	org.apache.naming.NamingContext.lookup(NamingContext.java:153)
	org.apache.naming.SelectorContext.lookup(SelectorContext.java:137)
	javax.naming.InitialContext.lookup(InitialContext.java:351)
	org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155)
	org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:88)
	org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:153)
	org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:178)
	org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
	org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105)
	org.springframework.jndi.JndiObjectTargetSource.getTarget(JndiObjectTargetSource.java:131)
	org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:184)
	$Proxy0.getConnection(Unknown Source)
	org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
	org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:210)
	$Proxy34.prepareStatement(Unknown Source)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.getDataSourceURL(HealthCheckServlet.java:187)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.processRequest(HealthCheckServlet.java:114)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.doGet(HealthCheckServlet.java:63)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
The strange thing is that the same war file deployed in another tcServer instance (in a different environment) works fine, even with the same config files deployed (server.xml, wrapper.conf, catalina.properties).

So the same war file and config files works in one tcServer instance, but not another. My server.xml contains 2 other JNDI data sources both of which my application can connect to successfully.
The strange thing is that when I changed the name of one of these other data sources I got a slightly different error:
org.springframework.jndi.JndiLookupFailureException: JndiObjectTargetSource failed to obtain new target object; nested exception is javax.naming.NameNotFoundException: Name fsaDS is not bound in this Context
	org.springframework.jndi.JndiObjectTargetSource.getTarget(JndiObjectTargetSource.java:138)
	org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:184)
	$Proxy0.getConnection(Unknown Source)
	org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
	org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:210)
	$Proxy34.prepareStatement(Unknown Source)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.getDataSourceURL(HealthCheckServlet.java:187)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.processRequest(HealthCheckServlet.java:106)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.doGet(HealthCheckServlet.java:63)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

javax.naming.NameNotFoundException: Name abcDataSource not bound in this Context
	org.apache.naming.NamingContext.lookup(NamingContext.java:770)
	org.apache.naming.NamingContext.lookup(NamingContext.java:140)
	org.apache.naming.NamingContext.lookup(NamingContext.java:781)
	org.apache.naming.NamingContext.lookup(NamingContext.java:153)
	org.apache.naming.factory.ResourceLinkFactory.getObjectInstance(ResourceLinkFactory.java:97)
	javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
	org.apache.naming.NamingContext.lookup(NamingContext.java:793)
	org.apache.naming.NamingContext.lookup(NamingContext.java:140)
	org.apache.naming.NamingContext.lookup(NamingContext.java:781)
	org.apache.naming.NamingContext.lookup(NamingContext.java:140)
	org.apache.naming.NamingContext.lookup(NamingContext.java:781)
	org.apache.naming.NamingContext.lookup(NamingContext.java:140)
	org.apache.naming.NamingContext.lookup(NamingContext.java:781)
	org.apache.naming.NamingContext.lookup(NamingContext.java:153)
	org.apache.naming.SelectorContext.lookup(SelectorContext.java:137)
	javax.naming.InitialContext.lookup(InitialContext.java:351)
	org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155)
	org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:88)
	org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:153)
	org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:178)
	org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
	org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105)
	org.springframework.jndi.JndiObjectTargetSource.getTarget(JndiObjectTargetSource.java:131)
	org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:184)
	$Proxy0.getConnection(Unknown Source)
	org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
	org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:210)
	$Proxy34.prepareStatement(Unknown Source)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.getDataSourceURL(HealthCheckServlet.java:187)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.processRequest(HealthCheckServlet.java:106)
	com.myCompany.acpa.healthcheck.HealthCheckServlet.doGet(HealthCheckServlet.java:63)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
So this suggests to me that for the problematic JNDI data source, it can find it in the server.xml, but there is some other naming error.

Anyone any ideas here? I can upload code snippets if they help, but it seems like an environmental problem.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 10 2011
Added on May 12 2011
2 comments
5,268 views