hibernate 配置c3p0,运行时log4j报空指针异常

时间:2021-12-20 21:51:37
hibernate中的c3p0配置如下:
<!-- C3P0连接池设定 -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!-- 最大连接数 -->
<property name="hibernate.c3p0.max_size">20</property>
<!-- 最小连接数 -->
<property name="hibernate.c3p0.min_size">5</property>
<!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
<property name="hibernate.c3p0.timeout">120</property>
<!-- 最大的PreparedStatement的数量 -->
<property name="hibernate.c3p0.max_statements">100</property>
<!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒 -->
<property name="hibernate.c3p0.idle_test_period">120</property>
<!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 -->
<property name="hibernate.c3p0.acquire_increment">2</property>
<!-- 每次都验证连接是否可用 -->
<property name="hibernate.c3p0.validate">true</property>


log4j的配置文件如下:
log4j.rootLogger=INFO,A1,R
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=bbscs7log.txt
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n


报的异常如下;
Exception in thread "Timer-0" java.lang.NullPointerException
at com.mchange.v2.log.log4j.Log4jMLog$Log4jMLogger.isLoggable(Log4jMLog.java:255)
at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1934)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)

网上搜了,说是c3p0配置的时间问题,但是具体不知道是怎么回事,求大神回复!!

6 个解决方案

#1


你是在项目初始化的时候进行数据库操作了吧?log 在这时候要判断一下是否为空再用

#2


是log4j那里空指针了啊。断点下

#3


引用 1 楼 defonds 的回复:
你是在项目初始化的时候进行数据库操作了吧?log 在这时候要判断一下是否为空再用

初始化的时候没有进行数据库操作啊!

#4


引用 2 楼 huxiweng 的回复:
是log4j那里空指针了啊。断点下

这个不好断点啊,不一定会报错的,有时候报错,有时候不报错。

#5


同样的问题求解

#6


求大神解决,我也是这个问题

#1


你是在项目初始化的时候进行数据库操作了吧?log 在这时候要判断一下是否为空再用

#2


是log4j那里空指针了啊。断点下

#3


引用 1 楼 defonds 的回复:
你是在项目初始化的时候进行数据库操作了吧?log 在这时候要判断一下是否为空再用

初始化的时候没有进行数据库操作啊!

#4


引用 2 楼 huxiweng 的回复:
是log4j那里空指针了啊。断点下

这个不好断点啊,不一定会报错的,有时候报错,有时候不报错。

#5


同样的问题求解

#6


求大神解决,我也是这个问题