Ansichtsbereich: java.io.NotSerializableException: javax.faces.component.html.HtmlInputText

Jedes Mal, wenn eine Schaltfläche eine Aktion von der Backing-Bean aufruft, tritt ein Fehler auf. Gilt nur für Beans mit einem View-Bereich und ich habe keine Möglichkeit gefunden, dies ohne Regression über andere Module im Code zu beheben.

DefaultFacele E   Exiting serializeView - Could not serialize state: javax.faces.component.html.HtmlInputText 
java.io.NotSerializableException: javax.faces.component.html.HtmlInputText
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)

Oder auch:

com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0014E: Uncaught service() exception 
root cause Faces Servlet: ServletException: /jspFiles/jsf/Deployments/editQueue.faces No saved view state could be found for the view identifier /jspFiles/jsf/Deployments/editQueue.faces 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:205) 
Caused by: javax.faces.application.ViewExpiredException: /jspFiles/jsf/Deployments/editQueue.faces No saved view state could be found for the view identifier:  /jspFiles/jsf/Deployments/editQueue.faces
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute (RestoreViewExecutor.java:128)

faces-config.xml

<managed-bean>
  <managed-bean-name>pc_EditQueue</managed-bean-name>
  <managed-bean-class>pagecode.jspFiles.jsf.deployments.EditQueue</managed-bean-class>
  <managed-bean-scope>view</managed-bean-scope>
  <managed-property>
    <property-name>queueDeploymentBean</property-name>
    <value>#{queueDeploymentBean}</value>
  </managed-property>
</managed-bean>

web.xml

<context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>server</param-value>
</context-param>
<context-param>
  <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
  <param-value>true</param-value>
</context-param>

Bohne

@ManagedBean
@ViewScoped
public class EditQueue extends PageCodeBase implements Serializable {
  private static final long serialVersionUID = -1L;
  public String doButtonAddAction() {
    // calls manager (long)
    FacesUtil.setViewMapValue("queueDeploymentBean", queueDeploymentBean);
    return "";
}

Ich lese dasVorschla, um SERIALIZE_STATE_IN_SESSION auf false zu setzen, und diese Lösung funktioniert für diese View-Scope-Bean. Dieser Fix ist jedoch mit hohen Kosten verbunden: Viele der in der Anwendung vorhandenen Module funktionieren nicht mehr, sodass ich diesen Fix dort nicht verwenden kann. Einige der beobachteten Regressionen sind:

// returns null must be changed with FacesUtil.getSessionMapValue("userId"); 
getSessionScope().get("userId");`

// returns null must be changed with FacesUtil.getViewMapValue("linkerBean");
linkerBean = (Linker) getManagedBean("linkerBean");`

// NPE so must be changed with FacesContext.getCurrentInstance().addMessage(...)
getFacesContext().addMessage(...)`

Also meine Fragen sind:

Warum die NotSerializableException, obwohl die Bean Serializable implementiert? Gibt es eine Möglichkeit, den Parameter SERIALIZE_STATE_IN_SESSION nur auf eine Teilmenge der Beans anzuwenden oder nicht?

Gibt es eine andere Lösung, um meinen View-Scope zum Laufen zu bringen (ohne ihn ändern zu müssen, um den Scope anzufordern, oder sonst)?

WebSphere 8.0.0.3, Java 1.6.0, JSF 2.0, RichFaces 4.2.3.Final