context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/exhibitionxl">
    <Manager pathname=""/>
    <Resource name = "jdbc/exhibition" 
       auth="Container"
       type ="javax.sql.DataSource"
       driverClassName = "com.mysql.jdbc.Driver"
       url = "jdbc:mysql://localhost:3308/exhibitionxl"
       username = "hisen"
       password = "88608066"
       maxIdle = "2000"
       maxWait = "200"
       maxActive = "1000"
       />
</Context>web.xml<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <resource-ref>
        <description>MySql DBPool</description>
        <res-ref-name>jdbc/exhibition</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>
在netbeans里的tomcat可以部署和运行,将war部署到另一个tomcat就报错了,工程和tomcat下都有mysql的驱动包,请高手帮忙解决

解决方案 »

  1.   

    你的数据源配置方式有些问题,tomcat中不是像spring一样靠属性,而是靠子标签:给个例子:# <ResourceParams name="jdbc/test">  
    #     <parameter>  
    #       <name>factory</name>  
    #       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>  
    #     </parameter>  
    #     <!-- DBCP database connection settings -->  
    #     <parameter>  
    #       <name>url</name>  
    #       <value>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=pubs</value>  
    #     </parameter>  
    #     <parameter>  
    #       <name>driverClassName</name>  
    #       <value>net.sourceforge.jtds.jdbc.Driver</value>  
    #     </parameter>  
    #     <parameter>  
    #       <name>username</name>  
    #       <value>sa</value>  
    #     </parameter>  
    #     <parameter>  
    #       <name>password</name>  
    #       <value>sa</value>  
    #     </parameter>  
    #     <!-- DBCP connection pooling options -->  
    #     <parameter>  
    #       <name>maxWait</name>  
    #       <value>3000</value>  
    #     </parameter>  
    #     <parameter>  
    #       <name>maxIdle</name>  
    #       <value>100</value>  
    #     </parameter>  
    #     <parameter>  
    #       <name>maxActive</name>  
    #       <value>10</value>  
    #     </parameter>  
    #   </ResourceParams>  
      

  2.   

    1.这个异常是因为web.xml中res-ref-name与tomcat中(server.xml或者[yourapp]/META-INF/context.xml)配置的jndi名称不一样,当然,包括拼写错误,或者根本没找到tomcat中配置的此数据源。你可以在server.xml中配置一下Context节点看看是不是ok。
    2.tomcat必须是5.5版本以上才支持context.xml配置文件,确认你部署war包的tomcat版本,最好为6.
    3.如果部署环境是linux,或者unix,context.xml必须为小写文件名。windows大小写没有影响。
      

  3.   

    连接池配置错误
    server.xml中添加如下内容:<GlobalNamingResources>
        <Environment
          name="simpleValue"
          type="java.lang.Integer"
          value="30"/>
        <Resource
          auth="Container"
          description="User database that can be updated and saved"
          name="UserDatabase"
          type="org.apache.catalina.UserDatabase"
          pathname="conf/tomcat-users.xml"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
        <Resource
          name="jdbc/newsconnpool"
          type="javax.sql.DataSource"
          password="news"
          driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
          maxIdle="2"
          maxWait="5000"
          username="news"
          url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=news"
          maxActive="500"/>
        <Resource
          name="Test"
          type="javax.sql.DataSource"
          password="root"
          driverClassName="com.mysql.jdbc.Driver"
          maxIdle="2"
          maxWait="5000"
          username="root"
          url="jdbc:mysql://localhost:3306/jspdev"
          maxActive="4"/>
        <Resource
          name="jdbc/jspdev"
          type="javax.sql.DataSource"
          password="bn"
          driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
          maxIdle="2"
          maxWait="5000"
          username="bn"
          url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev"
          maxActive="4"/>
        <Resource
          name="jdbc/OA"
          type="javax.sql.DataSource"
          password=""
          driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
          maxIdle="50"
          maxWait="50"
          username="sa"
          url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=OA"
          maxActive="1000"/>
      </GlobalNamingResources>
      

  4.   

    1 楼所说的是 Tomcat 5.5 以下版本的配置方式,从 Tomcat 5.5 开始,采用更为简洁的属性配置了。具体的配置:启动 Tomcat,访问 http://localhost:8080/docs/jndi-datasource-examples-howto.html里面有很详细的说明和示例。
      

  5.   

    <Context path="/DBTest" docBase="DBTest"
            debug="5" reloadable="true" crossContext="true">  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
                   maxActive="100" maxIdle="30" maxWait="10000"
                   username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/></Context><web-app 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"
        version="2.4">
      <description>MySQL Test App</description>
      <resource-ref>
          <description>DB Connection</description>
          <res-ref-name>jdbc/TestDB</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
      </resource-ref>
    </web-app>上面是tomcat6官方提供的配置列子,如果不行,检测下是不是连接的代码有问题