使用tomcat,连接数据库,代码如下:
package com.kursk;import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;public class doLoginServlet extends HttpServlet {
Connection conn; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
Context context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:/comp/env/jdbc/oracleds");
this.conn = ds.getConnection();
PreparedStatement ps= conn.prepareStatement("select * from admin");
ResultSet rs= ps.executeQuery();
System.out.println(rs);
rs.close();
this.conn.close();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}报错:
严重: Servlet.service() for servlet doLoginServlet threw exception
java.lang.NoClassDefFoundError: oracle/dms/instrument/ExecutionContextForJDBC
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:341)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:816)
at org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1247)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1221)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
at com.kursk.doLoginServlet.doPost(doLoginServlet.java:30)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)但是我明明已经加载了这个class ,如截图,

解决方案 »

  1.   

    位于Oracle安装路径的oc4j/lib/dms.jar
    把dms.jar 导入了没有?
      

  2.   

    tomcat的context.xml内容:<?xml version='1.0' encoding='utf-8'?>
    <Context reloadable="true">
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <Resource name="jdbc/oracleds" auth="Container" type="javax.sql.DataSource"  maxActive="100" maxIdle="30" maxWait="100"  username="stud" password="stud" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:orcl10g"/> 
    </Context>数据库是oracle10g 10.2.0.1
      

  3.   

    把jar复制到tomcat下 试下  
    关注···
      

  4.   

    tomcat/lib 和 tomcat/webapps/%appnames%/lib目录下都有ojdbc14.jar、dms.jar这两个文件
      

  5.   

    今天重新把tomcat下载,然后安装tomcat doc来重新写代码,仔细检查每个步骤后就没有问题。按DOC文档的步骤:
    1、COPY ojdbc14.jar到tomcat 的conf/lib目录下;
    2、在web.xml文件中增加如下代码
    <web-app>
    .......................... <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/oracleds</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </web-app>
    3、code application
    ............
    Context context = new InitialContext();
    Context context2 = (Context) context.lookup("java:comp/env");
    DataSource ds = (DataSource) context2.lookup("jdbc/orc");
    Connection conn = ds.getConnection();
    PreparedStatement ps = conn.prepareStatement("insert into admin values('"+username+"','"+password+"')");
    int rs = ps.executeUpdate();
    conn.close();
    ...............................
    4、在context.xml文件中<Context> configuration
    <Context>
    .......................................
    <Resource name="jdbc/orc"
    auth="Container"
    type="javax.sql.DataSource"
    username="stud"
    password="stud"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@localhost:1521:orcl10g"
    maxActive="8"
    maxIdle="4"/></Context>
    .............就成功了!但是还是有不少疑问:
    1、按照tomcat doc的说法如下:
    For Tomcat 6, these entries in per-web-application InitialContext are configured in the <Context> elements that can be specified in either $CATALINA_BASE/conf/server.xml or, preferably, the per-web-application context XML file ( META-INF/context.xml). <context>应该在server.xml文件中配置,难道这个that can be specified in either $CATALINA_BASE/conf/server.xml ....是修饰 InitialContext 的?请英文达人指教
    2、