关于德鲁伊连接池链接获取问题

年轻的猴 2020-08-14 11:31:13
今天写web项目的时候出了点问题,项目一直报空指针,但是我的测试类获取链接什么的都可以用,后面问了下一起写项目的朋友,发现他们链接获取用的都是 JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
我源码用的是ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");,但是测试类什么的都可以,不知道为什么web就会报空指针,这里请问下大佬们。
package cn.zsp.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;


public class JdbcUtils {
private static DataSource ds;
static{
try {
Properties pro=new Properties();
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc" +
".properties");
pro.load(is);
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}

}


public static Connection getConnection() {

Connection conn = null;
try {
conn = ds.getConnection();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return conn;

}
public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
...全文
8316 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
高家琛i 2022-07-23
  • 打赏
  • 举报
回复

兄弟解决了嘛?我也遇到了 = =,单元测试德鲁伊连接池可以连接上,但是在web中 就报空指针。。

请叫我刘小强 2021-12-13
  • 打赏
  • 举报
回复

一个是类加载器去加载 也就是你当前项目路径下面去获取这个jdbc.properties的属性 一个是通过jdbcUtil的静态类的类加载器加载 找jdbcUtil所在类的路径下去加载jdbc.properties的属性

KeepSayingNo 2020-09-02
  • 打赏
  • 举报
回复
断点跟进去看看看ClassLoader.getSystemClassLoader() 是什么东西
s478853630 2020-09-02
  • 打赏
  • 举报
回复
把绝对路径打印出来看看就知道了
tianfang 2020-08-19
  • 打赏
  • 举报
回复 1
应该使用容器连接池或者项目模块中连接池,而不是使用自己的连接工具类,开发环境和生产环境classloader不同,导致文件路径不同

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧