ContextLoader:上下文初始化失败
Posted
技术标签:
【中文标题】ContextLoader:上下文初始化失败【英文标题】:ContextLoader: Context initialization failed 【发布时间】:2012-04-08 17:54:16 【问题描述】:我正试图找出我的应用程序的一部分突然停止工作的原因。我正在使用 Weblogic 8.1.4.0 和 Hibernate 运行 Spring 1。报告生成器是失败的部分,首先在我们的生产服务器上,然后在周五我进行试验时在开发和质量检查服务器上。我没有对代码进行任何更改,但我现在在映射查询的编译语句中遇到了缺少数据源的异常。唯一改变的是数据库中的几条记录,但它们是相当简单的更改,我怀疑它们会产生影响。在这两个开发应用程序可能失败的时候,我还从星期五收到了以下错误:
这是来自开发服务器的日志中的错误:
04-06 14:31:34 ERROR [main] org.springframework.web.context.ContextLoader: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myDataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is javax.naming.LinkException:
从我部署到 QA 服务器大约 10 分钟后,也出现了类似的情况。
指的是WebLogic中定义的数据源和连接池。我已经检查并测试了连接,似乎没有任何问题。
可能发生了什么会导致这种情况?我什至恢复到上周的构建以确保它不是代码更改,但发生了相同的数据源所需的异常:
04-07 16:15:04 DEBUG [ExecuteThread: '14' for queue: 'default'] org.eei.survey.data.RegionDataDAO$NERCRegionMappingQuery: RdbmsOperation with SQL [call prc_NERCRegions_get] compiled
04-07 16:15:04 ERROR [ExecuteThread: '14' for queue: 'default'] error.jsp: Error page displayed to user due to unhandled exception
org.springframework.dao.InvalidDataAccessApiUsageException: dataSource is required
at org.springframework.jdbc.object.RdbmsOperation.compile(RdbmsOperation.java:300)
at org.eei.survey.data.ReportDAO$NCRMappingQuery.<init>(ReportDAO.java:535)
at org.eei.survey.data.ReportDAO.executePrcNCR(ReportDAO.java:548)
at org.eei.survey.data.ReportDAO.getNCR(ReportDAO.java:59)
at jsp_servlet._reliability._charts.__barncr._jspService(__barncr.java:235)
任何帮助将不胜感激。
更新:这是错误的完整堆栈跟踪:
04-08 14:56:19 WARN [ExecuteThread: '14' for queue: 'default'] org.apache.shale.faces.ShaleViewHandler: No ViewController for viewId /reliability/support/reportgen.faces found under name reliability$support$reportgen
04-08 14:56:19 DEBUG [ExecuteThread: '14' for queue: 'default'] org.eei.survey.data.ReportDAO: java.lang.IllegalArgumentException: No DataSource specified
04-08 14:56:19 ERROR [ExecuteThread: '14' for queue: 'default'] error.jsp: Error page displayed to user due to unhandled exception
java.lang.NullPointerException
at jsp_servlet._reliability._support.__reportgen._jspService(__reportgen.java:156)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:322)
at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
at org.apache.shale.faces.ShaleViewHandler.renderView(ShaleViewHandler.java:142)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at org.apache.shale.faces.InvokeCommand.execute(InvokeCommand.java:40)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:166)
at org.apache.shale.faces.ShaleApplicationFilter.doFilter(ShaleApplicationFilter.java:218)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at org.eei.survey.web.UserFilter.doFilterInternal(UserFilter.java:30)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6724)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
【问题讨论】:
你能得到更多的堆栈跟踪吗? 已添加完整的堆栈跟踪。 你定义你的数据源bean? 是:您的数据源的 jdni 分辨率有问题。查看 weblogic jdni 池并确保您使用的是正确的 jdni 名称。 java:comp/env/jdbc/reliabilityDS 不工作。
这可能会有所帮助:
http://books.google.com/books?id=TiAKHpphpHIC&pg=PA159&lpg=PA159&dq=weblogic+8.1+jndi+tree&source=bl&ots=cjKNXJZl4o&sig=FHs0YL6hqslNOYjuWpjyRTlCpYY&hl=en&sa=X&ei=veWBT5aVNoTMtgeJ8fC9Bg&ved=0CC0Q6AEwAQ#v=onepage&q=weblogic%208.1%20jndi%20tree&f=false
这也是
http://docs.oracle.com/cd/E13222_01/wls/docs81/jndi/jndi.html
这也是
Tomcat vs Weblogic JNDI Lookup
【讨论】:
是的,一切似乎都在匹配。这实际上是我几天前发生这种情况时检查的第一件事。知道我可能会尝试的任何其他日志或调试方法吗?谢谢。 编写单元测试并连接到容器外部的 weblogic 实例。在 jdni spring 组件中开启调试日志【参考方案2】:对于为什么会发生这种情况,我仍然没有一个可靠的答案,但我现在确实想出了如何解决它。我基本上不得不停止我部署的应用程序,然后重置连接池,然后再次重新启动。我会假设重新启动整个服务器会完成同样的事情,但我尝试了几次都没有结果。我目前没有几个小时来追查问题的根源,但是如果有人遇到这种情况,您至少可以快速解决。
【讨论】:
以上是关于ContextLoader:上下文初始化失败的主要内容,如果未能解决你的问题,请参考以下文章
如何在 spring-servlet.xml 中自动装配 crud 存储库?
上下文初始化失败:org.springframework.beans.factory.BeanDefinitionStoreException