本人今天试用数据库连接池,但多次不成功,网上查的原因也不附。希望能找到原因。\Tomcat 5.0\conf\Catalina\localhost中的test.xml文件内容为<?xml version='1.0' encoding='utf-8'?>
<Context docBase="test" path="/test">
  <Resource description="restrant DataSource" auth="Container" name="jdbc/epet" type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/epet">
    <parameter>
      <name>maxWait</name>
      <value>5000</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>4</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>123</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=testuser</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>2</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>sa</value>
    </parameter>
  </ResourceParams>
</Context>项目中的web-inf中添加内容为:<resource-ref>
<description>restrant DataSource</description>
<res-ref-name>jdbc/epet</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
连接数据库的内容为: public static Connection getConnection() { Connection connection = null;
try {
Context context = new InitialContext();
        //括号中得java/env是不变得,而后面得jdbc/epet(数据源名)要和配置得名字一样
DataSource source = (DataSource) context.lookup("java/env/jdbc/epet");
       //从数据库连接池中获取连接
connection = source.getConnection();
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}

解决方案 »

  1.   

    忘了,异常信息为:javax.naming.NameNotFoundException: Name java is not bound in this Context
    at org.apache.naming.NamingContext.lookup(NamingContext.java:815)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:198)
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:183)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.text.Conn.getConnection(Conn.java:35)
    at com.text.ConnectDatabase.check(ConnectDatabase.java:24)
    at com.yourcompany.struts.LoginAction.execute(LoginAction.java:38)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
      

  2.   

    <Resource description="restrant DataSource" auth="Container" name="jdbc/epet" type="javax.sql.DataSource"/>
    name中jadb/后边的应该是数据库的名字吧,把他改成你的数据库名字testuser试试吧。
      

  3.   

    DataSource source = (DataSource) context.lookup("java:env/jdbc/epet");
      

  4.   

    3搂的有一点不对,应该是
    dataSource=(DataSource) context.lookup("java:comp/env/jdbc/Test");
    java:后应该有comp
      

  5.   

    楼上的是对的。不过,好像用:commons-pool-1.3.jar、commons-dbcp-1.2.2.jar应该更好吧。