Tomcat5.5.25+oracle
我的數據庫連接池出現了如下錯誤,但我不知道哪兒出錯:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Name jdbc is not bound in this Context
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause javax.servlet.ServletException: Name jdbc is not bound in this Context
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
org.apache.jsp.chklogin_jsp._jspService(chklogin_jsp.java:180)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
org.apache.naming.NamingContext.lookup(NamingContext.java:770)
org.apache.naming.NamingContext.lookup(NamingContext.java:153)
org.apache.jsp.chklogin_jsp._jspService(chklogin_jsp.java:101)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.25 logs.
--------------------------------------------------------------------------------我的步驟是這樣的:
1。下栽驅動并且把三個.JAR文件,放在C:\Tomcat5\common\lib下面。
2。在C:\Tomcat5\conf\Catalina\localhost 下加入competitor.xml,它的內容如下:<?xml version=1.0 encoding='UTF-8'?>
<Context docBase="competitor" path="/competitor" workDir="work/Catalina/localhost/competitor">
<ResourceLink global="jdbc/oracle" name="jdbc/oracle" type="javax.sql.DataSourcer">
<ResourceLink global="jdbc/oracle2" name="jdbc/oracle2" type="javax.sql.DataSourcer">
</Context>3 在C:\Tomcat5\conf\server.xml如下:<?xml version='1.0' encoding='utf-8'?>
<Context docBase="C:\test\searchTest\search" path="/search" reloadable="true" workDir="C:\test\searchTest\Copy_of_Tomcat\work\search">
   <Resource name="jdbc/oracle" type="jacax.sql.DataSource"/>
  <ResourceParams name="jdbc/oracle">
      <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@148.20.30.2:1521:ora10</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>shidiao</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>100</value>
      </parameter>
      <parameter>
        <name>maxWait</name>
        <value>5000</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>shidiao</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>100</value>
      </parameter>
    </ResourceParams>5 jsp中的相關代碼是這樣的:
InitialContext initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/oracle");
Connection conn = ds.getConnection();
……

解决方案 »

  1.   

    你的web.xml里配置了<Resource />吗?
      

  2.   

    web.xml里我是这样配的配置: <resource-ref>
        <description>oracleDB Connection</description>
        <res-ref-name>jdbc/oracle</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
      </recource-ref>  
      

  3.   

    <Resource name="jdbc/oracle" type="jacax.sql.DataSource"/> 
    這里應該是javax.sql.DataSource,你敲錯了吧。還有你少了auth="Container"我是這樣存的
    <Context path="/weblx1">
        <Resource name="jdbc/Oracle" auth="Container" type="javax.sql.DataSource" 
        maxActive="100" maxIdle="30" maxWait="10000" 
        username="shidiao" password="shidiao" driverClassName="oracle.jdbc.driver.OracleDriver" 
        url="jdbc:oracle:thin:@148.20.30.2:1521:ora10"/>
    </Context>
      

  4.   

    在web.xml中配置如下:
    <resource-ref>
    <res-ref-name>数据库名</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    在tomcat中配置如下:
    <Context path="/web的根目录名">
    <Resource name="数据库名"
    type="javax.sql.DataSource"
    username="root"
    password="root"
    driverClassName="com.mysql.jdbc.Driver"
    maxIdle="10"
    url="jdbc:mysql://localhost:3306/tarena"
    maxActive="10"/>
    </Context>数据库名要相同