Deployment tomcat6中的Grails生产战争,热重部署错误:call';刷新';在通过ApplicationContext访问bean之前
我有一个在tomcat6中生产的grails WAR,但是当我重新部署WAR时,我会覆盖WAR文件。应用程序重新加载,我可以加载首页(静态页面),但当我尝试转到任何其他页面时,我会收到此警告Deployment tomcat6中的Grails生产战争,热重部署错误:call';刷新';在通过ApplicationContext访问bean之前,deployment,grails,refresh,tomcat6,war,Deployment,Grails,Refresh,Tomcat6,War,我有一个在tomcat6中生产的grails WAR,但是当我重新部署WAR时,我会覆盖WAR文件。应用程序重新加载,我可以加载首页(静态页面),但当我尝试转到任何其他页面时,我会收到此警告 org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <g:render>: Error creating bean with name 'org.codehaus.gro
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <g:render>: Error creating bean with name 'org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib': Instantiation of bean failed; nested exception is java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext at /WEB-INF/grails-app/views/layouts/baseContainer.gsp:28
at gsp_app_layoutsbaseContainerMapFb_gsp$_run_closure2.doCall(gsp_app_layoutsbaseContainer_gsp.groovy:42)
at gsp_app_layoutsbaseContainerMapFb_gsp$_run_closure2.doCall(gsp_app_layoutsbaseContainer_gsp.groovy)
at gsp_app_layoutsbaseContainerMapFb_gsp.run(gsp_app_layoutsbaseContainerMa_gsp.groovy:49)
at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib': Instantiation of bean failed; nested exception is java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
at gsp_app_templates_facebookConnect_gsp.run(gsp_app_templates_facebookConnect_gsp.groovy:23)
... 4 more
Caused by: java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
org.codehaus.groovy.grails.web.taglib.exceptions.grailstageexception:执行标记时出错:创建名为“org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib”的bean时出错:bean实例化失败;嵌套异常为java.lang.IllegalStateException:BeanFactory未初始化或已关闭-在通过位于/WEB-INF/grails app/views/layouts/baseContainer的ApplicationContext访问bean之前调用“刷新”。gsp:28
在gsp\u应用程序\u布局BaseContainerMapfB\u gsp$\u run\u closure2.doCall(gsp\u应用程序\u布局BaseContainer\u gsp.groovy:42)
在gsp\u应用程序\u布局BaseContainerMapfB\u gsp$\u run\u closure2.doCall(gsp\u应用程序\u布局BaseContainer\u gsp.groovy)
在gsp_应用程序_布局BaseContainerMapfb_gsp.run(gsp_应用程序_布局BaseContainerma_gsp.groovy:49)
位于java.lang.Thread.run(未知源)
原因:org.springframework.beans.factory.BeanCreationException:创建名为“org.codehaus.groovy.grails.plugins.web.taglib.ApplicationAglib”的bean时出错:bean实例化失败;嵌套异常为java.lang.IllegalStateException:BeanFactory未初始化或已关闭-在通过ApplicationContext访问bean之前调用“刷新”
在gsp\u app\u templates\u facebook connect\u gsp.run(gsp\u app\u templates\u facebook connect\u gsp.groovy:23)
... 4更多
原因:java.lang.IllegalStateException:BeanFactory未初始化或已关闭-在通过ApplicationContext访问bean之前调用“刷新”
什么是我没有错?我怎么能称之为“刷新”
在tomcat上重新部署WAR的最佳方法是什么?我们可能无法在Stackoverflow上解决这个问题。不过,如果你找不到更好的信息,我希望你能给我的支持尝试打分 首先,Grails文档建议在(重新)部署之后使用。但在大多数情况下,这是不必要的 当Tomcat重新加载web应用程序时,Grails
ServletContextListener
会得到关于该事件的通知,并创建(应该创建)连接所有应用程序SpringBean的Grails/SpringApplicationContext
(通过使用前面提到的refresh(…)
方法,顺便说一句)。你的情况就错了
通常,在热部署之后,您只需等待一段时间,直到ApplicationContext
完全可用,但最终应该在一段时间之后。在这两种状态之间,您的错误是正常的。(现在已经有相当一段时间)让Spring的DispatcherServlet
等待第二种状态,即使在此之前有请求。因此,这被认为是一种改进,而不是一个bug
至于Tomcat本身的部署过程,请参阅。默认情况下,热部署应该像覆盖现有WAR文件并让Tomcat解包一样简单,但这可以在conf/server.xml中的
标记上进行自定义
其他想法:
- 我猜您在重新部署后确实等待了足够长的时间,以确保仅在有限的时间内不会发生错误李>
- 你可以发布完整的stacktrace李>
- 在WAR的web.xml文件中,是否有任何
或
不属于命名空间
李>org.codehaus…
- 您是否使用任何特殊的插件、版本、规格李>
- 如果您已经在Tomcat中设置了虚拟主机,请查看
和autoDeploy
设置unpacwar