Hibernate Grails 2.3.11错误pool.ConnectionPool-无法创建池的初始连接

Hibernate Grails 2.3.11错误pool.ConnectionPool-无法创建池的初始连接,hibernate,grails,gorm,datasource,Hibernate,Grails,Gorm,Datasource,我在启动时三次遇到这个错误。我猜这是因为Grails在启动时基于 在三个错误提示之后,Grails在创建bean(transactionManager、transactionManagerPostProcessor等)时失败 根据我的理解,这里的问题是池的创建。我假设Hibernate在Grails上处理这个问题。它无法创建池,因为数据库尚未联机 为了让您了解这个问题的背景,Grails应用程序正在连接到数据库。数据库和Grails服务器位于不同的服务器上。这两台服务器同时重新启动。Grails

我在启动时三次遇到这个错误。我猜这是因为Grails在启动时基于

在三个错误提示之后,Grails在创建bean(transactionManager、transactionManagerPostProcessor等)时失败

根据我的理解,这里的问题是池的创建。我假设Hibernate在Grails上处理这个问题。它无法创建池,因为数据库尚未联机

为了让您了解这个问题的背景,Grails应用程序正在连接到数据库。数据库和Grails服务器位于不同的服务器上。这两台服务器同时重新启动。Grails应用程序所在的服务器在数据库服务器之前首先联机。这会导致前面提到的错误,因为Grails应用程序试图连接到尚未联机的数据库


有没有办法将Grails配置为在创建池时发生错误或异常时重新连接到数据库服务器?我目前正在使用MSSQL作为我的数据库。我希望你能在这方面帮助我。谢谢。

如果没有支持数据库,您的应用程序将无法有效启动或运行,因此即使您稍后可以重新连接,您也会错过许多启动事件,例如GORM更新


既然您的应用程序在数据库启动之前无法工作,那么您是否可以将启动Grails应用程序延迟到数据库启动之后?有多种方法可以实现这一点,而且这样做似乎可以为您提供更好、更干净的初始化过程。

我认为我可以推迟Grails应用程序的上线。但是,由于数据库位于不同的服务器中,因此即使存在延迟,也不能保证Grails应用程序可以连接到数据库,因为我不确定数据库何时会联机。我不知道如何处理拖延问题。我还需要调查一下。您是否有我可以查看的参考资料?这当然取决于您的环境和权限,但您可以使用类似
sp\u procoption
的方法来执行存储过程,该存储过程反过来使用xp\u cmdshell来执行系统命令。或者,如果一切都作为服务运行(我想是Linux或Windows,但我肯定对Linux更有信心),那么在启动后,应该可以让一个服务触发另一个服务(甚至远程触发)。或者你可以说“数据库永远不会花费超过120秒”或者类似的话,然后延迟那么长时间……更简单,但可能没有那么精确。
2018-04-19 20:57:38,504 [localhost-startStop-1] ERROR pool.ConnectionPool  - Unable to create initial connections of pool.
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host MY-PC, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".