我有一个使用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
之后它只是无限期地挂起。不再输出调试消息,也没有任何反应。我已经让它坐了几个小时,但没有。
奇怪的是,一切都运转良好。没有做出任何改变。突然间,这种情况开始发生,我不知道为什么它会冻结。
答案 0 :(得分:3)
很难说出你提供的信息会发生什么, 我可以提出一些可以解释最新情况的事情:
尝试进行线程转储,看看每个线程究竟做了什么。如果您将进行一些线程转储并且会看到看起来相关的线程卡在某处,您可能能够更好地理解堆栈跟踪的原因。
为DEBUG启用日志,您说没有显示调试消息,但在代码段中,您只显示了几条INFO消息。您可以从为DEBUG设置spring和hibernate日志开始。
尝试连接到空数据库 - 也许它尝试在初始化期间读取某些内容(像元数据一样)并且它需要太长时间(虽然我不相信它应该花费数小时),但仍然......
您可以尝试查看启动期间正在执行的SQL。只需将hibernate的“show sql”属性设置为true,也许它会有所帮助
你也可以在春天放置一个断点,看看哪个bean卡住了,并试着去理解它的代码是什么(我知道它有点模糊,但重点是找到哪个bean不能启动并调试它。)