title: How can I cope with "IllegalStateException: BeanFactory not initialized or already closed"?
body: <p>With Grails 2.0.0 on Tomcat 7 I get the following right at startup:</p>
  
  <pre><code>2011-08-21 11:10:09,758 [main] ERROR StackTrace  - Full Stack Trace:
  java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
          at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172)
          at org.springframework.context.support.AbstractApplicationContext.containsBean(AbstractApplicationContext.java:1109)
          at org.codehaus.groovy.grails.web.context.GrailsContextLoader$1.run(GrailsContextLoader.java:88)
          at org.codehaus.groovy.grails.lifecycle.ShutdownOperations.runOperations(ShutdownOperations.java:62)
          at org.codehaus.groovy.grails.web.context.GrailsContextLoader.closeWebApplicationContext(GrailsContextLoader.java:136)
          at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142)
          at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4763)
          at org.apache.catalina.core.StandardContext$4.run(StandardContext.java:5472)
          at java.lang.Thread.run(Thread.java:619)
          at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5481)
          at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)
          at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
          at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
          at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
          at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607)
          at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:633)
          at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:558)
          at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468)
          at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322)
          at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
          at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
          at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
          at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:379)
          at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:324)
          at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1041)
          at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)
          at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
          at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
          at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
          at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
          at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
          at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
          at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)
          at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
          at org.apache.catalina.startup.Catalina.start(Catalina.java:620)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)
          at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)
  2011-08-21 11:10:09,761 [main] ERROR StackTrace  - Full Stack Trace:
  java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
          at java.lang.Thread.run(Thread.java:619)
  </code></pre>
  
  <p><strong>What could the cause of this be? How can it be resolved?</strong></p>
  
  <p><em>NOTE: If you know the solution you may also be able to answer <a href="https://stackoverflow.com/questions/2177563/grails-call-refresh-error">&quot;call &#39;refresh&#39;&quot; error resulting from Grails WAR hot-deploy</a> as posted by a different user.</em></p>