Spring Boot App在启动时冻结

时间:2017-12-18 20:36:45

标签: spring hibernate spring-boot

我有一个使用Oracle数据源的Spring Boot应用程序,它在启动时冻结。控制台上输出的最后一条消息是:

[2017-12-18T15:34:19,425] INFO  org.hibernate.dialect.Dialect HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect 
[2017-12-18T15:34:27,186] INFO  org.hibernate.hql.internal.QueryTranslatorFactoryInitiator HHH000397: Using ASTQueryTranslatorFactory 

之后它只是无限期地挂起。不再输出调试消息,也没有任何反应。我已经让它坐了几个小时,但没有。

奇怪的是,一切都运转良好。没有做出任何改变。突然间,这种情况开始发生,我不知道为什么它会冻结。

1 个答案:

答案 0 :(得分:3)

很难说出你提供的信息会发生什么, 我可以提出一些可以解释最新情况的事情:

  1. 尝试进行线程转储,看看每个线程究竟做了什么。如果您将进行一些线程转储并且会看到看起来相关的线程卡在某处,您可能能够更好地理解堆栈跟踪的原因。

  2. 为DEBUG启用日志,您说没有显示调试消息,但在代码段中,您只显示了几条INFO消息。您可以从为DEBUG设置spring和hibernate日志开始。

  3. 尝试连接到空数据库 - 也许它尝试在初始化期间读取某些内容(像元数据一样)并且它需要太长时间(虽然我不相信它应该花费数小时),但仍然......

  4. 您可以尝试查看启动期间正在执行的SQL。只需将hibernate的“show sql”属性设置为true,也许它会有所帮助

  5. 你也可以在春天放置一个断点,看看哪个bean卡住了,并试着去理解它的代码是什么(我知道它有点模糊,但重点是找到哪个bean不能启动并调试它。)