本人今天试用数据库连接池,但多次不成功,网上查的原因也不附。希望能找到原因。\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;
}
<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;
}
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)
name中jadb/后边的应该是数据库的名字吧,把他改成你的数据库名字testuser试试吧。
dataSource=(DataSource) context.lookup("java:comp/env/jdbc/Test");
java:后应该有comp