我正在尝试使用apache负载均衡器设置tomcat集群。一切正常,直到我的应用程序的web.xml中的“distributable”为止。
在加载第一页时,我得到了以下堆栈跟踪:
java.lang.IllegalArgumentException: setAttribute: Non-serializable attribute javax.servlet.jsp.jstl.fmt.localizationContext.session
org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1441)
org.apache.catalina.ha.session.DeltaSession.setAttribute(DeltaSession.java:678)
org.apache.catalina.ha.session.DeltaSession.setAttribute(DeltaSession.java:662)
org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java:156)
org.apache.jasper.runtime.PageContextImpl.doSetAttribute(PageContextImpl.java:352)
org.apache.jasper.runtime.PageContextImpl.setAttribute(PageContextImpl.java:331)
javax.servlet.jsp.jstl.core.Config.set(Config.java:198)
org.apache.taglibs.standard.tag.common.fmt.SetBundleSupport.doEndTag(SetBundleSupport.java:86)
org.apache.jsp.index_jsp._jspx_meth_fmt_005fsetBundle_005f0(index_jsp.java:704)
org.apache.jsp.index_jsp._jspService(index_jsp.java:150)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
我知道会话中的所有类都需要实现Serializable
接口,但这来自JSTL库。那我该怎么办?
这里使用的软件包:
好的,现在我有解决方法来解决我的问题。
我已在JSP
中删除了具有会话范围的setBundle标记<fmt:setBundle basename="messages" scope="session"/>
并在web.xml中添加了上下文参数:
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
<param-value>en</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>messages</param-value>
</context-param>
我希望这是本地化的常用方式吗?!