1.问题背景
在javaweb项目中使用到了druid
数据库连接池,外部测试没有问题,但是在启动tomcat提交表单之后出现了此问题
2.解决方案
将druid工具类中静态加载配置文件的路径改为全路径即可:
static { try { Properties properties = new Properties(); properties.load(new FileInputStream("D:\\系统资源\\系统默认\\桌面\\javawebdemo\\src\\druid.properties")); ds = DruidDataSourceFactory.createDataSource(properties); } catch (Exception e) { throw new RuntimeException(e); } }
3.完整的druid工具类
import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.FileInputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /** * DruidJDBC工具类 */ public class DruidJdbcUtils { private static DataSource ds = null; static { try { Properties properties = new Properties(); properties.load(new FileInputStream("D:\\系统资源\\系统默认\\桌面\\javawebdemo\\src\\druid.properties")); ds = DruidDataSourceFactory.createDataSource(properties); } catch (Exception e) { throw new RuntimeException(e); } } /** * 获取数据库连接池连接 * * @return 一个连接池连接 */ public static Connection getConnection() throws SQLException { return ds.getConnection(); } /** * 关闭连接 * 并不是真的关闭连接,而是把Connection对象放回连接池 * * @param resultSet 结果集 * @param statement 用于执行sql语句的对象 * @param connection 数据库连接 */ public static void close(ResultSet resultSet, Statement statement, Connection connection) { try { if (resultSet != null) { resultSet.close(); } if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } catch (SQLException e) { throw new RuntimeException(e); } } }