log4j:WARN No such property [username] in service.DbAppender. 2012-03-16 10:30:28:062[INFO]: bean.UserBean@1b64e6a 2012-03-16 10:30:28:109[INFO]: Hibernate 3.3.2.GA %%%% Error Creating SessionFactory %%%% java.lang.NullPointerException at service.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:70) at service.HibernateSessionFactory.getSession(HibernateSessionFactory.java:54) at service.impl.UserBeanServiceImpl.insertUserMessage(UserBeanServiceImpl.java:18) at dao.GetObject.excuteSql(GetObject.java:52) at service.DbAppender.getLogStatement(DbAppender.java:42) at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:249) at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:146) at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230) at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65) at org.apache.log4j.Category.callAppenders(Category.java:203) at org.apache.log4j.Category.forcedLog(Category.java:388) at org.apache.log4j.Category.log(Category.java:853) at org.slf4j.impl.Log4jLoggerAdapter.info(Log4jLoggerAdapter.java:300) at org.hibernate.cfg.Environment.<clinit>(Environment.java:560) at org.hibernate.cfg.Configuration.reset(Configuration.java:217) at org.hibernate.cfg.Configuration.<init>(Configuration.java:197) at org.hibernate.cfg.Configuration.<init>(Configuration.java:201) at service.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:25) at service.impl.UserBeanServiceImpl.insertUserMessage(UserBeanServiceImpl.java:18) at dao.GetObject.excuteSql(GetObject.java:52) at service.DbAppender.getLogStatement(DbAppender.java:42) at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:249) at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:146) at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230) at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65) at org.apache.log4j.Category.callAppenders(Category.java:203) at org.apache.log4j.Category.forcedLog(Category.java:388) at org.apache.log4j.Category.info(Category.java:663) at dao.GetObject.getMethod(GetObject.java:25) at dao.GetObject.insertUserInfo(GetObject.java:35) at test.Test.testUser(Test.java:33) at test.Test.main(Test.java:22)
没被执行到是因为类的初始化只会执行一次
可以看看类的初始化顺序就明白了
这里要吗使用两个不同的日志系统,hibernate操作的日志系统不进行数据库的操作
要吗就是在日志系统里使用其他数据库连接的获取等
把这个代码贴出来看看
service.HibernateSessionFactory
at service.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:70)
是什么内容
.......这个错误就怪了,你的hibernate包是不是冲突,混乱 了
明白你错误在哪 了
at dao.GetObject.excuteSql(GetObject.java:52)
at service.DbAppender.getLogStatement(DbAppender.java:42)
你是不是自己重写了日志系统
因为你重写了日志系统
在日志系统里又调用session去操作数据库,
因为hibernate使用的是哪你一套的日志系统,hibernate在创建sesion时又去调用 你的日志系统,
而像类的初始化对于JVM只执行一次的
像
private static Configuration configuration = new Configuration();
这些是没有被执行到的
因为configuration()里面使用了log
只是因为你的rebuildsessionfactory没有添加这个
configuration = new Configuration();
一旦添加,你这个代码就是相当于跳进了死循环了,
再有就是做一个判断,如果sessionfactory没有初始化完成 ,就不进行数据库日志的记录