使用Tomcat-DBCP的JDBC需要Tomcat自己的/ lib中的JDBC驱动程序

时间:2014-01-10 19:23:07

标签: java tomcat jdbc

我有一个简单的servlet,它使用Tomcat-DBCP来获取连接。

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。

  1. 为什么网络应用程序自己的lib文件夹不起作用?
  2. 根据答案here,使用公共类加载器绑定驱动程序代码会导致内存泄漏。如果是,那么解决方法是什么?

1 个答案:

答案 0 :(得分:2)

您的第一个问题的答案是您在第二个问题中引用的链接。这就是你应该将JDBC驱动程序放在/lib中的原因。通常人们建议不要使用/lib,但JDBC驱动程序是一个很大的例外。

对于第二个问题,解决方法是将其放在Tomcat的shared / lib文件夹中。而已。那修复。