集群中的 Wildfly 10 尝试用 org.infinispan.commons.marshall.NotSerializableException 序列化 JSP
Wildfly 10 in cluster tries to serialize JSP with org.infinispan.commons.marshall.NotSerializableException
我正在尝试通过 JPS 中的以下代码使用我的应用程序
<c:forEach var="area" items="#{MissingSearchBean.workingAreas}">
<h:commandButton value="#{area.workingAreaName}(#{area.count})"
action="#{MissingSearchBean.selectWorkingArea(area.workingAreaName)}"
styleClass="commandButton" />
</c:forEach>
在 wilfly 10 内部。一切正常,但是当我打开包含上面代码的视图时,我在日志中看到以下错误:
Caused by: org.infinispan.commons.marshall.NotSerializableException: javax.servlet.jsp.jstl.core.IteratedExpression
Caused by: an exception which occurred:
in field iteratedExpression
in field delegate
in field savedState
in field m
in object java.util.HashMap@85e645ff
in object org.wildfly.clustering.marshalling.jboss.SimpleMarshalledValue@85e645ff
我认为 wildfly 会尝试将视图保存到 infinispan 中,以便在我重新加载页面或在另一个节点上点击此页面时能够恢复视图。
我尝试将 bean 的范围更改为 request
甚至 none
,但 wildfly 仍会尝试序列化视图。我绝对确定问题出在 c:forEach
中,因为当我将其(及其内容)注释掉时 — 我没有得到任何例外。
也很明显IteratedExpression
里面包含了Iterator,这是不对的Serializable
我正在寻找能够在集群中工作而不会抛出异常的任何 solution/workaround。
问题是 c:forEach
创建了 IteratedValueExpression
,它不是 Serializable
,因为里面包含 Iterator
。简单的解决方法是将 MissingSearchBean.workingAreas
的 return 类型更改为数组。
在 value
由数组表示的情况下,LoopTagSupport
创建 IndexedValueExpression
而不是 IteratedValueExpression
并且这是明确的 Serializable
.
我正在尝试通过 JPS 中的以下代码使用我的应用程序
<c:forEach var="area" items="#{MissingSearchBean.workingAreas}">
<h:commandButton value="#{area.workingAreaName}(#{area.count})"
action="#{MissingSearchBean.selectWorkingArea(area.workingAreaName)}"
styleClass="commandButton" />
</c:forEach>
在 wilfly 10 内部。一切正常,但是当我打开包含上面代码的视图时,我在日志中看到以下错误:
Caused by: org.infinispan.commons.marshall.NotSerializableException: javax.servlet.jsp.jstl.core.IteratedExpression
Caused by: an exception which occurred:
in field iteratedExpression
in field delegate
in field savedState
in field m
in object java.util.HashMap@85e645ff
in object org.wildfly.clustering.marshalling.jboss.SimpleMarshalledValue@85e645ff
我认为 wildfly 会尝试将视图保存到 infinispan 中,以便在我重新加载页面或在另一个节点上点击此页面时能够恢复视图。
我尝试将 bean 的范围更改为 request
甚至 none
,但 wildfly 仍会尝试序列化视图。我绝对确定问题出在 c:forEach
中,因为当我将其(及其内容)注释掉时 — 我没有得到任何例外。
也很明显IteratedExpression
里面包含了Iterator,这是不对的Serializable
我正在寻找能够在集群中工作而不会抛出异常的任何 solution/workaround。
问题是 c:forEach
创建了 IteratedValueExpression
,它不是 Serializable
,因为里面包含 Iterator
。简单的解决方法是将 MissingSearchBean.workingAreas
的 return 类型更改为数组。
在 value
由数组表示的情况下,LoopTagSupport
创建 IndexedValueExpression
而不是 IteratedValueExpression
并且这是明确的 Serializable
.