jsf - java.io.NotSerializedException : org.omnifaces.taghandler.Converter

标签 jsf websphere-8 omnifaces

我想使用 OmniFaces ListConverter 作为 PrimeFaces 自动完成 上的转换器。 不幸的是,当我尝试时,出现了以下异常。

就我而言,JSF 转换器不需要实现 Serialized 接口(interface)。 我读了java ee 6教程,但找不到这样的说法。

引用链接:

我感觉 MyFaces 正在尝试反序列化我的页面上使用的任何对象。我该如何处理这种情况?


环境

  • WebSphere 应用程序服务器 8.5.5.2
  • Apache MyFaces 2.0.2
  • OmniFaces 1.7
  • PrimeFaces 5.0

托管 Bean:

import javax.inject.Named;
import org.omnifaces.cdi.ViewScoped;

@Named
@ViewScoped
public class MovimentacaoOperacionalVolumeBean implements Serializable {

自动完成实现代码:

<p:autoComplete value="#{movimentacaoOperacionalVolume.listaFiltroVolumes}"
                scrollHeight="200"
                scrollable="true"
                multiple="true"
                id="listaNrVolume"
                var="estoque"
                completeMethod="#{movimentacaoVolumeBean.completarSugestoesNrVolume}"
                forceSelection="true"
                itemLabel="#{estoque.nrVolume}"
                itemValue="#{estoque}"
                placeholder="#{msg['hint.btn.busca.nrVolume']}"
                minQueryLength="6"
                emptyMessage="#{msg['msg.tabela.semregistros']}"
                styleClass="larguraFiltroAutoComplete"
                queryDelay="500" >
    <o:converter converterId="omnifaces.ListConverter"
                 list="#{movimentacaoOperacionalVolume.listaNumerosVolumeOpcionais}"/>

WebSphere 堆栈跟踪:

[22/12/14 11:12:50:078 BRST] 0000006e JspStateManag E   Exiting serializeView - Could not serialize state: org.omnifaces.taghandler.Converter
java.io.NotSerializableException: org.omnifaces.taghandler.Converter
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1555)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1516)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1379)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1379)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1379)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at java.util.ArrayList.writeObject(ArrayList.java:720)
    at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1020)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1379)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at java.util.ArrayList.writeObject(ArrayList.java:720)
    at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1020)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1379)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at java.util.ArrayList.writeObject(ArrayList.java:720)
    at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1020)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1379)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at java.util.ArrayList.writeObject(ArrayList.java:720)
    at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1020)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1379)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at java.util.ArrayList.writeObject(ArrayList.java:720)
    at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1020)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1379)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at org.apache.myfaces.application.jsp.JspStateManagerImpl.serializeView(JspStateManagerImpl.java:814)
    at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedViewInServletSession(JspStateManagerImpl.java:699)
    at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedView(JspStateManagerImpl.java:497)
    at javax.faces.application.StateManager.saveView(StateManager.java:114)
    at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveView(JspStateManagerImpl.java:460)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1379)
    at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:240)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
    at org.omnifaces.filter.FacesExceptionFilter.doFilter(FacesExceptionFilter.java:56)
    at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:77)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
    at su.comum.web.util.filter.MenuPrimefacesFilter.doFilter(MenuPrimefacesFilter.java:106)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:960)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1064)
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3837)
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:981)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:459)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:526)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:312)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:283)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1864)

最佳答案

这是 MyFaces 中的一个错误。我无法确定哪个 MyFaces 版本确切包含该修复程序,但我可以看出此构造至少在 MyFaces 2.1.12 中工作正常。然而,在 WebSphere 中升级 MyFaces 可能不是一项简单的任务(技术上和官僚主义方面)。

最好的办法是告诉 MyFaces 不要序列化 session 中的整个 View 状态,而是将其保留在内存中并保存引用(就像 Mojarra 默认情况下所做的那样)。您可以通过 web.xml 中的以下上下文参数来完成此操作:

<context-param>
    <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param‌​-name>
    <param-value>false</param-value>
</context-param>

关于jsf - java.io.NotSerializedException : org.omnifaces.taghandler.Converter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604312/

相关文章:

websphere - 安装 Websphere Application Server Network Deployment 的步骤

java - 我应该选择 == 还是 eq 来比较 EL 中的字符串?

java - @Inject 来自 EJB 项目的 bean 给出 UnsatisfiedResolutionException

jsf - 处理模板评估期间发生的域异常

java.lang.IllegalStateException : CDI API is not available in this environment. 在 org.omnifaces.config.BeanManager

jsf - 如何在一个 EAR 中的两个 WAR 中使用 OmniFaces 1.6?

jsf - Primefaces 验证细胞编辑

java - 如何使用 JSF/MyFaces 创建基于用户角色的条件?

jsf - 如何在子流程中包含弹出对话框

javascript - 您可以绑定(bind) .click() 以便它在 onclick 之前触发吗?