学习JNDI创建数据库连接池出错
出现这个错误
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
无论是tomcat的lib 还是项目本身的lib 都有mysql-connector-java-5.1.18-bin.jar
Servlet代码:
web.xml
context.xml
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
无论是tomcat的lib 还是项目本身的lib 都有mysql-connector-java-5.1.18-bin.jar
Servlet代码:
package Servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ViewDictionary extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
Connection conn=getFromJNDI();
//Connection conn=getFromJDBC();
PreparedStatement pstmt = conn
.prepareStatement("SELECT * FROM t_dictionary ");
ResultSet rs = pstmt.executeQuery();
StringBuilder table = new StringBuilder();
table.append("<table border='1'>");
table.append("<tr><td>书名</td><td>价格</td></tr>");
while (rs.next()) {
table.append("<tr><td>" + rs.getString("english") + "</td><td>"
+ rs.getString("chinese") + "</td></tr>");
}
table.append("</table>");
out.println(table.toString());
pstmt.close();
} catch (Exception e) {
System.out.println(e);
}
}
public Connection getFromJNDI() throws NamingException, SQLException{
javax.naming.Context ctx = new javax.naming.InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) ctx
.lookup("java:/comp/env/jdbc/webdb");
Connection conn = ds.getConnection();
return conn;
}
public Connection getFromJDBC() throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/webdb?characterEncoding=UTF-8";
Connection conn =DriverManager.getConnection(url,"root","123456");
return conn;
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
<servlet>
<servlet-name>ViewDictionary</servlet-name>
<servlet-class>Servlet.ViewDictionary</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ViewDictionary</servlet-name>
<url-pattern>/Servlet/ViewDictionary</url-pattern>
</servlet-mapping>
<resource-ref>
<res-ref-name>jdbc/webdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/webdb" quth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/webdb?characterEncoding=UTF-8"
username="root" password="123456" maxActive="200" maxIdle="50"
maxWait="3000" />
</Context>
...全文
相关推荐
自己总结的学习笔记,请大家批评指正 datasource
当需要执行数据库操作时,应用会通过JNDI查找并获取到DataSource实例,然后创建数据库连接,执行SQL语句。3.
JBuilderX中基于OPENTOOL的JNDI连接池与JavaMail配置工具实战
最后一步,也是最关键的一步:把这些配置自动写入server.xml和。JBuilderX采用SAX+DOM混合解析策略,既能高效读取现有结构,又能安全插入新节点。每次修改都会生成备份文件(),最多保留5份,支持一键回滚。配合插件,还能直接启停服务器、查看日志、部署应用,真正实现“改完就能测”。IDE->>Plugin: 用户点击“Deploy”Plugin->>Server: GET /manager/text/list (认证)
DBCP 数据库连接池JNDI连接 学习笔记
数据库连接池(Database Connection Pool,简称 DBCP)是一种在多用户并发访问数据库时提高数据库系统性能的技术。
jdbc连接数据库(jndi连接池)
jdbc连接数据库(jndi连接池)"这个主题涉及了几个关键的技术概念,包括Java Database Connectivity (JDBC),Java Naming and Directory Interface
JNDI数据库连接池
在JNDI数据库连接池的场景下,MySQL 5通常作为后端数据库,为Java应用提供数据存储服务。


