1

背景:我们有一个包含两个应用程序的架构:一个处理带有页眉和页脚的布局(通用);另一个是应用程序本身(App)。

Common 有一组处理请求的过滤器和一个将请求转发(dispatcher.forward)到 App 的 servlet。Common 之前是纯 Java 应用程序,而 App 通常基于 Spring MVC。Common 现在正在用 Spring 重写。

问题:在 App 中处理完请求后,Common 需要处理可能的错误,然后从应用程序上下文消息源中查找翻译。但是会发生以下异常:

java.lang.ClassCastException: org.springframework.web.context.support.AnnotationConfigWebApplicationContext
    at org.springframework.web.servlet.support.RequestContextUtils.getWebApplicationContext(RequestContextUtils.java:79)
    at org.springframework.web.servlet.support.RequestContext.initContext(RequestContext.java:209)
    at org.springframework.web.servlet.support.JspAwareRequestContext.initContext(JspAwareRequestContext.java:74)
    at org.springframework.web.servlet.support.JspAwareRequestContext.<init>(JspAwareRequestContext.java:48)
    at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:77)
    at org.apache.jsp.html._404_jsp._jspx_meth_spring_005fmessage_005f0(_404_jsp.java:162)

似乎 Spring 失去了对原始 ApplicationContext 的跟踪并且抛出了异常。这个问题有解决办法吗?我们能否以某种方式分离上下文。我所看到的是,Common 成为了根上下文,而 App 成为了它的子上下文。

4

0 回答 0