views:

23

answers:

1

I am getting a null pointer exception when trying to set up datasource in spring's tc server. Which is basically a Tomcat at its core. Here is the exception I am getting.

org.apache.naming.NamingContext lookup
WARNING: Unexpected exception resolving reference
java.lang.NullPointerException
 at java.util.Hashtable.put(Hashtable.java:394)
 at java.util.Properties.setProperty(Properties.java:143)
 at         org.apache.tomcat.jdbc.pool.DataSourceFactory.parsePoolProperties(DataSourceFactory.java:38  0)
 at     org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:439)
 at     org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:204)
 at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:140)
 at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:793)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at      org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1024)
 at     org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.ja  va:633)
 at     org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:23  7)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4339)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
  at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:848)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:724)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:493)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1211)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)
at    org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:741)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:587)
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:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:290)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415)
org.apache.catalina.core.NamingContextListener addResource
WARNING: Failed to register in JMX: javax.naming.NamingException
org.apache.catalina.core.StandardContext listenerStart

My server.xml has the following

<GlobalNamingResources>
<Resource auth="Container" description="User database that can be updated and saved"              factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase"          pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
<Resource auth="Container" driverClassName="com.ibm.db2.jcc.DB2Driver" name="jdbc/temp"        password="XXXX" type="javax.sql.DataSource" url="jdbc:db2://localhost:50007/temp"       username="XXXX"/>
 </GlobalNamingResources>

And web.xml has

<resource-ref>
 <description>
 </description>
 <res-ref-name>jdbc/temp</res-ref-name>
 <res-type>javax.sql.DataSource</res-type>
 <res-auth>Container</res-auth>
</resource-ref>
+1  A: 

Look at this page:
http://numberformat.wordpress.com/2009/09/07/db2-datasource-configuration-in-tomcat-6/

Romain Hippeau
Thanks for the link. I will try this tomorrow and let you know how it goes.
pacman
So I tried the example from the link now I get an exception back saying Failed to bind object: javax.naming.NameAlreadyBoundException: Name XXXShared is already bound in this Context.
pacman
@pacman That would indicate that you have duplicate names. Do it step by step and go slow.
Romain Hippeau