第二次配JNDI   报了个让人疯狂了三小时的错误  麻烦高手给瞅瞅大概功能就是 使用JNDI 获取 数据源/*
* dong.jndi.GetDataBean.java
* 功能:使用JNDI获取数据源

*     Cannot create JDBC driver of class '' for connect URL 'jdbc:sqlserver://localhost:1433;DataBaseName=restrant'           数据库异常
*/
package dong.jndi;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;// 导入使用JNDI和数据源所需要的包
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;import ch03.FoodBean;public class GetDataBean {
        private Connection connection;        private PreparedStatement titlesQuery;        private ResultSet results;        // 返回FoodBeans列表
        public List getFoods() {                List foodsList = new ArrayList();                // 获取餐品列表
                try {
                        // 用JNDI读取 tomcat安装目录/conf/context.xml文件中的数据源
                        Context ic = new InitialContext();
                        DataSource source = (DataSource) ic
                                        .lookup("java:comp/env/jdbc/restrant");                        // 通过JNDI读取的数据源建立数据库连接
                        connection = source.getConnection();
                        titlesQuery = connection
                                        .prepareStatement("SELECT foodID, foodName, re, "
                                                        + "foodPrice, description, foodImage "
                                                        + "FROM foodInfo ORDER BY foodID");
                        ResultSet results = titlesQuery.executeQuery();                        // 读取行数据
                        while (results.next()) {
                                FoodBean food = new FoodBean();                                food.setFoodId(results.getString("foodID"));
                                food.setFoodName(results.getString("foodName"));
                                food.setRe(results.getString("re"));
                                food.setFoodPrice(results.getDouble("foodPrice"));
                                food.setDescription(results.getString("description"));
                                food.setFoodImage(results.getString("foodImage"));                                foodsList.add(food);
                        }
                }                // 处理数据库异常
                catch (SQLException exception) {
                        System.out.println(exception.getMessage() +"           数据库异常");
                        exception.printStackTrace();
                }                // 处理JNDI查找异常
                catch (NamingException namingException) {
                        System.out.println("JNDI    " + namingException.getMessage());
                        namingException.printStackTrace();
                }
                // 释放资源
                finally {
                        // 关闭结果集
                        try {
                                if (results != null) {
                                        results.close();
                                        results = null;
                                }
                                // 处理结果集关闭异常
                        } catch (SQLException e) {
                                e.printStackTrace();
                        }
                        // 关闭数据库连接
                        try {
                                if (connection != null && (!connection.isClosed())) {
                                        connection.close();
                                }
                                // 处理数据库连接关闭异常
                        } catch (SQLException sqlEx) {
                                sqlEx.printStackTrace();
                        }
                }
                return foodsList;        }
}Web-INF 下 web.xml  :
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
        xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <description>描述</description>
    <display-name>显示的名字</display-name>
    <!-- servlet-name要与下面servlet-mapping下的servlet-name保持一致 -->
    <servlet-name>Welcome</servlet-name>
    <!-- servlet-class对应着servlet类文件在程序中的位置 -->
    <servlet-class>ch02.Welcome</servlet-class>
  </servlet>
  <servlet>
    <description>描述</description>
    <display-name>显示的名字</display-name>
    <servlet-name>AddFoodToCart</servlet-name>
    <servlet-class>ch03.AddFoodToCart</servlet-class>
  </servlet>
  <servlet>
    <description>描述</description>
    <display-name>显示的名字</display-name>
    <servlet-name>OrderServlet</servlet-name>
    <servlet-class>ch03.OrderServlet</servlet-class>
  </servlet>  <servlet-mapping>
    <servlet-name>Welcome</servlet-name>
    <!-- url-pattern设定当前Servlet在浏览器运行的url -->
    <url-pattern>/Welcome</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AddFoodToCart</servlet-name>
    <url-pattern>/servlet/AddFoodToCart</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>OrderServlet</servlet-name>
    <url-pattern>/servlet/OrderServlet</url-pattern>
  </servlet-mapping>
  
  <resource-ref>
          <res-ref-name>jdbc/restrant</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
  </resource-ref>
  
   <welcome-file-list>
    <welcome-file>/ch06/login.jsp</welcome-file>
  </welcome-file-list> 
</web-app>Tomcat 6.0  conf下   context.xml:
         <Resource name="jdbc/restrant"
        auth="Container" type="javax.sql.DataSource" maxActive="100" maxldle="30"
        maxWait="1000" username="sa" password="0123"
        diverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        url="jdbc:sqlserver://localhost:1433;DataBaseName=restrant"/>lib下 加  sql server 2005数据库驱动  正常高手期待中。。 

解决方案 »

  1.   

    异常 信息   :
    Cannot create JDBC driver of class '' for connect URL 'jdbc:sqlserver://localhost:1433;DataBaseName=restrant'           数据库异常
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'jdbc:sqlserver://localhost:1433;DataBaseName=restrant'
            at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1150)
            at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
            at ch06.jndi.GetDataBean.getFoods(GetDataBean.java:45)
            at org.apache.jsp.ch06.show_jsp._jspService(show_jsp.java:62)
            at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
            at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
            at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
            at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
            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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
            at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
            at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
            at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
            at ch02.Welcome.doGet(Welcome.java:52)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
            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:175)
            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:844)
            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(Unknown Source)
    Caused by: java.sql.SQLException: No suitable driver
            at java.sql.DriverManager.getDriver(Unknown Source)
            at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143)
            ... 30 more 
      

  2.   

    没人理我。  我答了 : 配置文件 driverClassName 少了个 r  ....
      

  3.   

    2011-7-30 2:40:05 org.apache.catalina.core.AprLifecycleListener init
    信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\myeclipse\binary\com.sun.java.jdk.win32.x86_1.6.0.013\bin;D:\tomcat\Tomcat 6.0\bin
    2011-7-30 2:40:06 org.apache.coyote.http11.Http11Protocol init
    信息: Initializing Coyote HTTP/1.1 on http-8080
    2011-7-30 2:40:06 org.apache.catalina.startup.Catalina load
    信息: Initialization processed in 672 ms
    2011-7-30 2:40:06 org.apache.catalina.core.StandardService start
    信息: Starting service Catalina
    2011-7-30 2:40:06 org.apache.catalina.core.StandardEngine start
    信息: Starting Servlet Engine: Apache Tomcat/6.0.16
    log4j:WARN No appenders could be found for logger (org.apache.struts.util.PropertyMessageResources).
    log4j:WARN Please initialize the log4j system properly.
    2011-7-30 2:40:11 org.apache.coyote.http11.Http11Protocol start
    信息: Starting Coyote HTTP/1.1 on http-8080
    2011-7-30 2:40:11 org.apache.jk.common.ChannelSocket init
    信息: JK: ajp13 listening on /0.0.0.0:8009
    2011-7-30 2:40:11 org.apache.jk.server.JkMain start
    信息: Jk running ID=0 time=0/15  config=null
    2011-7-30 2:40:11 org.apache.catalina.startup.Catalina start
    信息: Server startup in 4962 ms
    2011-7-30 2:43:32 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet jsp threw exception
    java.lang.NullPointerException
    at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:507)
    at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476)
    at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307)
    at java.sql.DriverManager.getDriver(DriverManager.java:253)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:79)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    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:175)
    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:844)
    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:619)这种错怎么解决了
      

  4.   

    <Resource name="jdbc/epai" auth="Container"
     type="javax.sql.DataSource" maxActive="100"
     maxIdle="30" maxWait="10000" username="sa"
     password="123"
    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
    url="jdbc:sqlserver://localhost:1433;DatabaseName=epai"/>
        <resource-ref>
      <res-ref-name>jdbc/epai</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      </resource-ref>