用于servlet调度程序的Spring + hibernate Servlet.init()抛出异常

时间:2015-10-27 10:09:14

标签: java spring hibernate

首先:我在这方面总计n00b并且我真的想要理解这一点,但这些特殊的例外并没有太多帮助我。所以也许我只需要一个指向适当文档的指针,或者可能不需要,但是现在这几天就让我失望了,而且我对任何类似解决方案的内容都没有了。

我有一个声明一个数据库表的示例项目。该项目还通过REST公开了这个表。该项目分为4个模块:

  • config:包含各种配置项,例如hibernate配置等。所有配置都在.java文件中,而不是.xml
  • model:包含DB模型声明/实体(也是.java注释)
  • data:包含每个模型的DAO及其实现(目前为止)。包含AbstractDao(简单的sessionFactory包装器/持久性实现器),UserDao(用于休息方法的接口)和UserDaoImpl(用户模型的实现)
  • web:控制器通过org.springframework.http.ResponseEntity
  • 将DAO发布到REST

该应用程序发布到tomcat 8并按预期工作。

现在我尝试在应用程序中添加另一个模型,因此我将一个新的.java添加到包含另一个带注释的模型/实体的models子目录中。

当我这样做时,我的应用程序将不再启动。

我得到servlet调度程序的异常Servlet.init()抛出异常

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': Injection of autowired dependencies failed; 
org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory sima.data.AbstractDao.sessionFactory;
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in sima.config.HibernateConfiguration: Invocation of init method failed;
org.hibernate.tool.schema.spi.SchemaManagementException: Unable to open JDBC connection for schema management target
java.sql.SQLException: Data source is closed

请注意,此例外是针对我尚未修改的现有对象。我在models /子目录中添加了一个新对象,整个世界在我周围爆炸。

然后我尝试添加DAO和Controller,但它自然没有帮助。这似乎是我忘了什么,但是作为一个n00b并且没有对这个问题的解释,人们给我的样本我只是难倒。

你能帮我理解吗?

1 个答案:

答案 0 :(得分:1)

由于后台发生错误,您的DataSource已关闭。该错误可能是由您添加到项目中的新模型定义引起的。既然你提到你正在使用hibernate但没有太多的经验,我相信发生的事情就是:

  • 您添加了一个新模型(引用表格)
  • 引用的表不存在(或者没有正确引用)
  • 应用程序启动时架构验证失败
  • 基础数据库连接已关闭

为了解决这个问题,我建议暂时增加至少调试级别(此时你肯定会看到关闭连接背后的原因 - 真正的错误)。你可能应该考虑开启hibernate调试日志,以确保。