hibernate未配置currentSessionContext-log4j出现故障?

hibernate未配置currentSessionContext-log4j出现故障?,hibernate,Hibernate,我正在进行一次拯救行动。这是日志 我已经试着为它找到一个依赖项,但Hibernate似乎使用了log4j,我的libs文件夹中有1.2.17版。是否有一种解决方法或解决方案是众所周知的 log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). log4j:WARN Please initialize the log4j system properly. log4j:WARN See htt

我正在进行一次拯救行动。这是日志

我已经试着为它找到一个依赖项,但Hibernate似乎使用了log4j,我的libs文件夹中有1.2.17版。是否有一种解决方法或解决方案是众所周知的

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Jan 06, 2014 12:39:29 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [PersonServlet] in context with path [/SchedulingAutomation]     threw exception
org.hibernate.HibernateException: No CurrentSessionContext configured!
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:698)
at dao.DaoFactory.getCurrentSession(DaoFactory.java:76)
at dao.DaoFactory.getDaoByClass(DaoFactory.java:57)
at dao.DaoFactory.getPersonDao(DaoFactory.java:33)
at controller.PersonServlet.save(PersonServlet.java:73)
at controller.PersonServlet.doGet(PersonServlet.java:45)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
编辑: 以下是与hibernate函数相关的类:

// save the person
DaoFactory.getPersonDao().save(person);

// returns a Person DAO
public static PersonDao getPersonDao(){
    System.out.println("getting person dao");
    return (PersonDao)getDaoByClass(PersonDao.class);
}

/* 
     * returns the Dao and configures it with the 
     * current session
     */
    public static AbstractDao getDaoByClass(Class c)
    {
        System.out.println("getting dao by class");
        try
        {
            Session s = getCurrentSession(); <--error here
            AbstractDao dao = (AbstractDao)c.newInstance();
            dao.setSession(s);
            System.out.println("success");
            return dao;
        }
        catch (InstantiationException ex) {
            ex.printStackTrace();
        }
        catch (IllegalAccessException ex) {
            ex.printStackTrace();
        }
        System.out.println("failed");

public static Session getCurrentSession()
{
    System.out.println("getting hibernate session");
    return HibernateUtil.getSessionFactory().getCurrentSession();
}


// part of the abstractDao that the person dao extends
public void save(Object o){
        session.saveOrUpdate(o);
    }
//救人
DaoFactory.getPersonDao().save(person);
//返回一个人道
公共静态PersonDao getPersonDao(){
System.out.println(“getting person dao”);
return(PersonDao)getDaoByClass(PersonDao.class);
}
/* 
*返回Dao并使用
*本届会议
*/
公共静态抽象DAO getDaoByClass(c类)
{
System.out.println(“按类获取dao”);
尝试
{

会话s=getCurrentSession();此跟踪中似乎有两个问题

第一个问题(仅警告):缺少log4j配置

在类路径中添加log4j.properties文件(通常src/main/resources是一个很好的位置)。下面是此
log4j.properties
的示例内容:

log4j.rootLogger = ALL, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.conversionPattern=%m%n 
第二个问题(严重错误):无法获取hibernate会话的实例。


为了帮助您做到这一点:您必须发布有关hibernate(和事务)配置以及引发异常的代码(DaoFactory)的更多信息

谢谢!添加日志文件消除了警告,现在hibernate打印出一大堆内容。我用代码更新了问题。您是如何配置sessionfactory的?我使用hibernate.cfd.xml文件进行配置。我将添加它,并在原始帖子中添加。我还在控制台输出中找到了关于错误消息的信息。在初始化类SessionFactoryObjectFactory注册:89c27a69436d34bb01436d34d9690000(未命名)未将工厂绑定到JNDI,未配置JNDI名称实例化会话工厂发布的stacktrace和hibernate配置似乎不一致:
当前会话上下文上下文类
是明确定义的,并且在stacktrace中您有:
未配置CurrentSessionContext!
您能检查是否确实获得了此stacktr如果是这样的话,我希望以前的一些日志可以为您提供有用的信息
log4j.rootLogger = ALL, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.conversionPattern=%m%n