Spring应用程序应该启动,即使数据库在启动时也不可用

时间:2017-09-21 13:41:04

标签: spring tomcat jndi

我有一个旧的spring应用程序,它使用jee:jndi-lookup for datasource。此应用程序在Tomcat 8上运行。

 <jee:jndi-lookup id="datasource" jndi-name="java:/comp/env/jdbc/Tomcat8Database" destroy-method="close" expected-type="javax.sql.DataSource" lookup-on-startup="false"/>

数据库可能在应用程序启动时有时会停机,但是因为我也尝试了lazy-init spring bean它没有帮助,因为看起来Spring中的JNDI查找总是发生在Startup上,或者它不在spring控件中当服务器提供连接池时。

任何想法或代码示例都会有所帮助。

1 个答案:

答案 0 :(得分:1)

根据spring javadoc,对于延迟查找,需要指定代理接口。

代理接口指定用于JNDI对象的代理接口。 通常与“lookupOnStartup”= false和/或“cache”= false一起使用。需要指定,因为在惰性查找的情况下,事先不知道实际的JNDI对象类型。

尝试:

<jee:jndi-lookup id="datasource" jndi-name="java:/comp/env/jdbc/Tomcat8Database" destroy-method="close" expected-type="javax.sql.DataSource" lookup-on-startup="false" proxy-interface="javax.sql.DataSource"/>