I use JDK1.6 and Tomcat5.5.17,I want to use JNDI in tomcat,so I do like follows: Tomcat/conf/context.xml <Context> <Resource name="jdbc/test" type="javax.sql.DataSource" auth="Container" driverClassName="ooracle.jdbc.driver.OracleDriver" maxActive="100" maxIdle="30" maxWait="10000" url="jdbc:oracle:thin:@localhost:1521:EDWARD" username="scott" password="tiger" /> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context>
Tomcat/conf/server.xml ...... <!-- Global JNDI resources --> <GlobalNamingResources> <!-- Test entry for demonstration purposes --> <Environment name="simpleValue" type="java.lang.Integer" value="30"/> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> ...... Tomcat/webapps/myweb/WEB-INF/web.xml ...... <resource-ref> <description>Oracle Datasource example</description> <res-ref-name>jdbc/test</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app> I call JNDI in my code,like follows: Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/test"); Connection conn = ds.getConnection(); But when I run it,it raise following errors: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver' at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource( BasicDataSource.java:766) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection( BasicDataSource.java:540) at SKY.manage.loginAction.execute(test.java:35) at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(Execute Action.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) Why raise above error? Please help. Thanks