我有一個簡單的servlet,它使用Tomcat-DBCP來獲取連接。使用Tomcat-DBCP的JDBC需要Tomcat自帶的lib驅動程序/ lib
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
Connection conn = null;
try {
conn = createConnection();
....
}
public Connection createConnection() throws SQLException {
Connection conn = null;
DataSource datasource = new DataSource();
PoolProperties p = new PoolProperties();
p.setUrl("jdbc:oracle:thin:@localhost:1521:XE");
p.setDriverClassName("oracle.jdbc.OracleDriver");
p.setUsername("SYSTEM");
p.setPassword("password");
datasource.setPoolProperties(p);
try {
conn = datasource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
它需要tomcat的/ lib文件夾中的ojdbc6.jar,而不是在WEB-INF/lib中。
- 爲什麼網絡應用程序自己的lib文件夾工作?
- 根據回答here,使用通用類加載器綁定驅動程序代碼會導致內存泄漏。如果屬實,解決方法是什麼?
看這裏:http://stackoverflow.com/questions/21015991/jdbc-driver-has-been-forcibly-unregistered-by-tomcat-6/21016037#21016037 –
tomcat的/ lib不適合你? –
是的,它的確如此。但爲什麼不是web-inf/lib不工作 – John