Tomcat JNDI Datasources
I tried to configure a JNDI datasource in tomcat 5.0,
I am facing the following error
java.sql.SQLException: Cannot load JDBC driverclass'null'
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:529)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:312)
at com.scb.controller.actions.TestAction.testDatasource(TestAction.java:70)
at com.scb.controller.actions.TestAction.execute(TestAction.java:46)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:53)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:64)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
at com.scb.controller.ControllerServlet.process(ControllerServlet.java:157)
at com.scb.controller.ControllerServlet.doGet(ControllerServlet.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:288)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:263)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:561)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1018)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:196)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:561)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1018)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2748)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:186)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:561)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1018)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:561)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1018)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:294)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:375)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:664)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:606)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:777)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:631)
at java.lang.Thread.run(Thread.java:534)
My code :
System.out.println("Looking up for datasource!");
Context envContext = (Context)context.lookup("java:comp/env");
System.out.println("Env context = " + envContext);
ds = (DataSource)envContext.lookup("jdbc/amadeus");
System.out.println("datasource obtained and trying to establish connection");
System.out.println(" Ds = 1 " + ds);
connection = ds.getConnection();
statement = connection.createStatement();
System.out.println("Executing query");
rs = statement.executeQuery("SELECT SYSDATE FROM DUAL");
Please help if you have any ideas.

