2015-10-27 52 views
0

首先,我总共是n00b,我真的很想理解这一点,但这些特殊的异常对我没有太大的帮助。所以,也许我只需要一个指向相应文档的指针,或者不需要,但是现在这几天让我失望了,而且我没有更接近任何类似解决方案的东西。Spring + Hibernate servlet.init()为servlet调度器抛出异常

我得到了一个示例项目,它声明了一个数据库表。该项目还通过REST公开了该表。该项目被分解成4个模块:

  • 配置:包含各种配置项目,如Hibernate的配置等,全部配置在.java文件,而不是.XML
  • 型号:包含DB模式声明/实体(也被注释为.java)
  • data:包含每个模型的DAO及其实现(迄今为止)。包含AbstractDao的(简单的sessionFactory包装/持久性实现者),userDAO的(接口其余部分的方法)和一个UserDAOImpl(实施为用户模型)
  • 幅:经由org.springframework.http.ResponseEntity

该应用程序发布到Tomcat 8控制器出版的DAO到REST并按预期工作。

现在我试着添加另一个模型到应用程序中,所以我添加了一个新的.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 

请注意,这个例外情况是,我没有修改现有的对象。我在模型/子目录中添加了一个新对象,整个世界都在我周围爆炸。

然后我试着添加DAO和控制器,但它自然没有帮助。我似乎忘记了一些事情,但是却只是一个n00b,并没有对这个问题做出任何解释,让人们对我的样品感到难以置信。

你能帮我理解吗?

回答

1

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

  • 你添加了一个新的模式(参考表)
  • 引用的表不存在(或只是不正确引用),当应用程序启动
  • 底层数据库连接得到了关闭

为了解决我会sugge问题

  • 架构验证失败暂时增加至少一个调试级别(此时你肯定会看到关闭连接的原因 - 真正的错误)。您应该考虑切换hibernate调试日志来确保。

  • +0

    模型作品。 :)我有一个愚蠢的错字:打破,而不是刹车...现在它失败了,当我添加REST控制器:(这是非常有趣的:p – velis

    +0

    是否真的没有办法告诉Hibernate在DB模型时引发致命的异常绑定失败? – velis

    相关问题