【问题标题】:Spring + hibernate Servlet.init() for servlet dispatcher threw exceptionSpring + hibernate Servlet.init() for servlet dispatcher 抛出异常
【发布时间】:2015-10-27 10:09:14
【问题描述】:

首先也是最重要的:我对此完全不了解,我真的很想理解这一点,但这些特殊的例外对我没有太大帮助。因此,也许我只需要一个指向适当文档的指针,也可能不需要,但这已经让我死了好几天,而且我离任何类似的解决方案都不近了。

我有一个示例项目,它声明了一个数据库表。该项目还通过 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。

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

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

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 并且没有从给我样本的人那里得到任何解释,我只是难住了。

你能帮我理解一下吗?

【问题讨论】:

    标签: java spring hibernate


    【解决方案1】:

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

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

    为了解决问题,我建议暂时提高至少调试级别(此时您肯定会看到关闭连接背后的原因 - 真正的错误)。您可能应该考虑打开休眠调试日志以确保安全。

    【讨论】:

    • 模型工作。 :) 我有一个愚蠢的错字:break而不是brake ...现在当我添加REST控制器时它失败了:(这太有趣了:p
    • 当数据库模型绑定失败时,真的没有办法告诉 Hibernate 引发致命异常吗?
    猜你喜欢
    • 2017-03-22
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2023-03-24
    • 2013-02-04
    • 1970-01-01
    • 2020-11-16
    • 2014-08-21
    相关资源
    最近更新 更多