java – 启动时处理mongodb连接问题

前端之家收集整理的这篇文章主要介绍了java – 启动时处理mongodb连接问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我使用Spring集成了MongoDB,我的数据服务有一个自动安装的mongo存储库,一切正常.除非在启动期间db已关闭.

当服务启动时mongo关闭时,初始化期间会抛出异常,在这种情况下,整个服务无法启动.这显然不是我想要的.

我想要发生的是捕获异常并启动服务,并优雅地处理数据库可用性问题(比如显示一个页面说我们有临时问题,使用缓存或其他)

我的存储库类:

  1. public interface MediaDataRepository extends MongoRepository

我的服务类:

  1. @Service
  2. public class MediaDataService {
  3. @Autowired
  4. private MediaDataRepository mediaDataRepository;
  5. ...
  6. }

和控制器:

  1. @Controller
  2. @RequestMapping("/api/consumer")
  3. public class MediaController extends HtmlGenerationController {
  4. private static final Logger LOG = LoggerFactory.getLogger(MediaController.class);
  5. @Autowired
  6. private MediaDataService mediaDataService;
  7. ...
  8. }

我在启动时得到的错误

  1. 2013-01-15 17:50:09.163:WARN:oejw.WebAppContext:Failed startup of context o.m.j.p.JettyWebAppContext{/,file:/code/src/main/webapp/},file:/code/src/main/webapp/
  2. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaController': Injection of autowired dependencies Failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.myservice.service.MediaDataService com.myservice.controller.MediaController.mediaDataService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaDataService': Injection of autowired dependencies Failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.myservice.repository.MediaDataRepository com.myservice.service.MediaDataService.mediaDataRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaDataRepository': factorybean threw exception on object creation; nested exception is com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/myservice_db
  3. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287)
  4. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.populateBean(AbstractAutowireCapablebeanfactory.java:1106)
  5. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.doCreateBean(AbstractAutowireCapablebeanfactory.java:517)
  6. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBean(AbstractAutowireCapablebeanfactory.java:456)
  7. at org.springframework.beans.factory.support.Abstractbeanfactory$1.getObject(Abstractbeanfactory.java:294)
  8. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
  9. at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:291)
  10. at org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:193)
  11. at org.springframework.beans.factory.support.DefaultListablebeanfactory.preInstantiateSingletons(DefaultListablebeanfactory.java:585)
  12. at org.springframework.context.support.AbstractApplicationContext.finishbeanfactoryInitialization(AbstractApplicationContext.java:913)
  13. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
  14. at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
  15. at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
  16. at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
  17. at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:764)
  18. at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:406)
  19. at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:756)
  20. at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:242)
  21. at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221)
  22. at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699)
  23. at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454)
  24. at org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:256)
  25. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  26. at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
  27. at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:167)
  28. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  29. at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
  30. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  31. at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90)
  32. at org.eclipse.jetty.server.Server.doStart(Server.java:263)
  33. at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65)
  34. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  35. at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:511)
  36. at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364)
  37. at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:516)
  38. at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
  39. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
  40. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
  41. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
  42. at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
  43. at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
  44. at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
  45. at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
  46. at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
  47. at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
  48. at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
  49. at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
  50. at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
  51. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  52. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  53. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  54. at java.lang.reflect.Method.invoke(Method.java:597)
  55. at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
  56. at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
  57. at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
  58. at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
  59. Caused by:
  60. org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.myservice.service.MediaDataService com.myservice.controller.MediaController.mediaDataService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaDataService': Injection of autowired dependencies Failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.myservice.repository.MediaDataRepository com.myservice.service.MediaDataService.mediaDataRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaDataRepository': factorybean threw exception on object creation; nested exception is com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/myservice_db
  61. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:506)
  62. at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
  63. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
  64. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.populateBean(AbstractAutowireCapablebeanfactory.java:1106)
  65. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.doCreateBean(AbstractAutowireCapablebeanfactory.java:517)
  66. [CLIPPED TO ALLOW QUESTION SIZE]
  67. at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
  68. at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
  69. Caused by:
  70. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaDataService': Injection of autowired dependencies Failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.myservice.repository.MediaDataRepository com.myservice.service.MediaDataService.mediaDataRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaDataRepository': factorybean threw exception on object creation; nested exception is com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/myservice_db
  71. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287)
  72. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.populateBean(AbstractAutowireCapablebeanfactory.java:1106)
  73. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.doCreateBean(AbstractAutowireCapablebeanfactory.java:517)
  74. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBean(AbstractAutowireCapablebeanfactory.java:456)
  75. at org.springframework.beans.factory.support.Abstractbeanfactory$1.getObject(Abstractbeanfactory.java:294)
  76. [CLIPPED TO ALLOW QUESTION SIZE]
  77. at java.lang.reflect.Method.invoke(Method.java:597)
  78. at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
  79. at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
  80. at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
  81. at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
  82. Caused by:
  83. org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.myservice.repository.MediaDataRepository com.myservice.service.MediaDataService.mediaDataRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaDataRepository': factorybean threw exception on object creation; nested exception is com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/myservice_db
  84. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:506)
  85. at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
  86. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
  87. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.populateBean(AbstractAutowireCapablebeanfactory.java:1106)
  88. [CLIPPED TO ALLOW QUESTION SIZE]
  89. at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
  90. Caused by:
  91. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaDataRepository': factorybean threw exception on object creation; nested exception is com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/myservice_db
  92. at org.springframework.beans.factory.support.factorybeanRegistrySupport.doGetObjectFromfactorybean(factorybeanRegistrySupport.java:149)
  93. at org.springframework.beans.factory.support.factorybeanRegistrySupport.getObjectFromfactorybean(factorybeanRegistrySupport.java:102)
  94. at org.springframework.beans.factory.support.Abstractbeanfactory.getObjectForBeanInstance(Abstractbeanfactory.java:1441)
  95. at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:305)
  96. [CLIPPED TO ALLOW QUESTION SIZE]
  97. at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
  98. Caused by:
  99. com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/myservice_db
  100. at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:227)
  101. at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:305)
  102. at com.mongodb.DBCollection.findOne(DBCollection.java:647)
  103. at com.mongodb.DBCollection.findOne(DBCollection.java:626)
  104. at com.mongodb.DBApiLayer$MyCollection.createIndex(DBApiLayer.java:364)
  105. at com.mongodb.DBCollection.createIndex(DBCollection.java:436)
  106. at com.mongodb.DBCollection.ensureIndex(DBCollection.java:515)
  107. at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.ensureIndex(MongoPersistentEntityIndexCreator.java:172)
  108. at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator$1.doWithPersistentProperty(MongoPersistentEntityIndexCreator.java:130)
  109. [CLIPPED TO ALLOW QUESTION SIZE]
  110. at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
  111. Caused by:
  112. java.io.IOException: couldn't connect to [/127.0.0.1:27017] bc:java.net.ConnectException: Connection refused
  113. at com.mongodb.DBPort._open(DBPort.java:228)
  114. at com.mongodb.DBPort.go(DBPort.java:112)
  115. at com.mongodb.DBPort.call(DBPort.java:79)
  116. at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:218)
  117. at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:305)
  118. at com.mongodb.DBCollection.findOne(DBCollection.java:647)
  119. at com.mongodb.DBCollection.findOne(DBCollection.java:626)
  120. at com.mongodb.DBApiLayer$MyCollection.createIndex(DBApiLayer.java:364)
  121. at com.mongodb.DBCollection.createIndex(DBCollection.java:436)
  122. at com.mongodb.DBCollection.ensureIndex(DBCollection.java:515)
  123. at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.ensureIndex(MongoPersistentEntityIndexCreator.java:172)
  124. at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator$1.doWithPersistentProperty(MongoPersistentEntityIndexCreator.java:130)
  125. at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator$1.doWithPersistentProperty(MongoPersistentEntityIndexCreator.java:112)
  126. at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:173)
  127. at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.checkForIndexes(MongoPersistentEntityIndexCreator.java:112)
  128. at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.onApplicationEvent(MongoPersistentEntityIndexCreator.java:85)
  129. at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.onApplicationEvent(MongoPersistentEntityIndexCreator.java:48)
  130. at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
  131. at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:324)
  132. at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:263)
  133. at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:364)
  134. at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:570)
  135. at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:247)
  136. at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:165)
  137. at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:140)
  138. at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:65)
  139. at org.springframework.data.mongodb.repository.support.DefaultEntityInformationCreator.getEntityInformation(DefaultEntityInformationCreator.java:59)
  140. at org.springframework.data.mongodb.repository.support.DefaultEntityInformationCreator.getEntityInformation(DefaultEntityInformationCreator.java:48)
  141. at org.springframework.data.mongodb.repository.support.MongoRepositoryFactory.getEntityInformation(MongoRepositoryFactory.java:140)
  142. at org.springframework.data.mongodb.repository.support.MongoRepositoryFactory.getTargetRepository(MongoRepositoryFactory.java:84)
  143. at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:131)
  144. at org.springframework.data.repository.core.support.RepositoryfactorybeanSupport.getObject(RepositoryfactorybeanSupport.java:114)
  145. at org.springframework.data.repository.core.support.RepositoryfactorybeanSupport.getObject(RepositoryfactorybeanSupport.java:38)
  146. at org.springframework.beans.factory.support.factorybeanRegistrySupport.doGetObjectFromfactorybean(factorybeanRegistrySupport.java:142)
  147. at org.springframework.beans.factory.support.factorybeanRegistrySupport.getObjectFromfactorybean(factorybeanRegistrySupport.java:102)
  148. at org.springframework.beans.factory.support.Abstractbeanfactory.getObjectForBeanInstance(Abstractbeanfactory.java:1441)
  149. at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:305)
  150. at org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:193)
  151. at org.springframework.beans.factory.support.DefaultListablebeanfactory.findAutowireCandidates(DefaultListablebeanfactory.java:848)
  152. at org.springframework.beans.factory.support.DefaultListablebeanfactory.doResolveDependency(DefaultListablebeanfactory.java:790)
  153. at org.springframework.beans.factory.support.DefaultListablebeanfactory.resolveDependency(DefaultListablebeanfactory.java:707)
  154. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
  155. at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
  156. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
  157. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.populateBean(AbstractAutowireCapablebeanfactory.java:1106)
  158. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.doCreateBean(AbstractAutowireCapablebeanfactory.java:517)
  159. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBean(AbstractAutowireCapablebeanfactory.java:456)
  160. at org.springframework.beans.factory.support.Abstractbeanfactory$1.getObject(Abstractbeanfactory.java:294)
  161. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
  162. at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:291)
  163. at org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:193)
  164. at org.springframework.beans.factory.support.DefaultListablebeanfactory.findAutowireCandidates(DefaultListablebeanfactory.java:848)
  165. at org.springframework.beans.factory.support.DefaultListablebeanfactory.doResolveDependency(DefaultListablebeanfactory.java:790)
  166. at org.springframework.beans.factory.support.DefaultListablebeanfactory.resolveDependency(DefaultListablebeanfactory.java:707)
  167. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
  168. at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
  169. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
  170. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.populateBean(AbstractAutowireCapablebeanfactory.java:1106)
  171. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.doCreateBean(AbstractAutowireCapablebeanfactory.java:517)
  172. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBean(AbstractAutowireCapablebeanfactory.java:456)
  173. at org.springframework.beans.factory.support.Abstractbeanfactory$1.getObject(Abstractbeanfactory.java:294)
  174. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
  175. at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:291)
  176. at org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:193)
  177. at org.springframework.beans.factory.support.DefaultListablebeanfactory.preInstantiateSingletons(DefaultListablebeanfactory.java:585)
  178. at org.springframework.context.support.AbstractApplicationContext.finishbeanfactoryInitialization(AbstractApplicationContext.java:913)
  179. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
  180. at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
  181. at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
  182. at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
  183. at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:764)
  184. at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:406)
  185. at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:756)
  186. at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:242)
  187. at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221)
  188. at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699)
  189. at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454)
  190. at org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:256)
  191. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  192. at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
  193. at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:167)
  194. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  195. at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
  196. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  197. at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90)
  198. at org.eclipse.jetty.server.Server.doStart(Server.java:263)
  199. at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65)
  200. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  201. at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:511)
  202. at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364)
  203. at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:516)
  204. at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
  205. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
  206. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
  207. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
  208. at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
  209. at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
  210. at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
  211. at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
  212. at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
  213. at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
  214. at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
  215. at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
  216. at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
  217. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  218. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  219. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  220. at java.lang.reflect.Method.invoke(Method.java:597)
  221. at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
  222. at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
  223. at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
  224. at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
最佳答案
在我的搜索中,我发现没有好的方法让Spring直接处理它.您可能需要在服务和存储库之间放置代理.这里的帖子:How to make App server to start even if database is down?接近这个问题.

对你来说,这可能意味着拥有Spring创建的bean(RepositoryProxy).这个bean将尝试手动创建Mongo连接,或者从应用程序上下文的lazy bean中获取存储库.如果Mongo连接失败,它将捕获异常并为缓存数据或错误响应创建连接/对象.它还可以创建一个计时器进程来重新连接到Mongo实例.

猜你在找的Spring相关文章