You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Gerogiannakis Stylianos <st...@trasys.gr> on 2007/08/24 18:01:35 UTC

Problem with MyFaces in a cluster: CacheRenderKit & NotSerializableException

Hello, all,

(Please, accept my apologies for any cross-posting)

We are facing a tricky as well as blocking problem.

We are developing a JSF application on Weblogic 9.2 using Trinidad 1.0.

In stand-alone mode there is no problem. When we try to execute the
application on a cluster, as soon the first JSF page is called we get a
java.io.NotSerializable exception in the console. The exception follows
at the end of the mail.

The class in question FacesContextFactoryImpl$CacheRenderKit indeed only
extends FacesContext which is not Serializable.

My first thought would be if we are trying to do something funny in our
code, but then again the error appears upon rendering the welcome page,
before any of our business logic code. So, I guess it is an internal
framework issue.
 
Unfortunately, the stack trace is not very helpful as to pinpoint the
place in the code where the class is added in the session: session
serialization occurs asynchronously in Weblogic.

Is there some hidden parameter/switch that we have overlooked? 
Is it a known issue/limitation?
If it is the latter, do you think that making the class Serializable
would make the problem go away?
We are rather short in available time, so we need the quickest possible
fix.
 
Thank you for any help you may provide.

Cheers,
S.

java.rmi.MarshalException: failed to marshal
update(Lweblogic.cluster.replication.ROID;ILjava.io.Serializable;Ljava.l
ang.Object;); nested exception is:
        java.io.NotSerializableException:
org.apache.myfaces.trinidadinternal.context.FacesContextFactoryImpl$Cach
eRenderKit
        at
weblogic.rjvm.BasicOutboundRequest.marshalArgs(BasicOutboundRequest.java
:91)
        at
weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:222)
        at
weblogic.cluster.replication.ReplicationManager_921_WLStub.update(Lweblo
gic.cluster.replication.ROID;ILjava.io.Serializable;Ljava.lang.Object;)V
(Unknown Source)
        at
weblogic.cluster.replication.ReplicationManager.updateSecondary(Replicat
ionManager.java:528)
        at
weblogic.servlet.internal.session.ReplicatedSessionData.syncSession(Repl
icatedSessionData.java:558)
        at
weblogic.servlet.internal.session.ReplicatedSessionContext.sync(Replicat
edSessionContext.java:82)
        at
weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(S
ervletRequestImpl.java:2507)
        at
weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(S
ervletRequestImpl.java:2482)
        at
weblogic.servlet.internal.ServletResponseImpl$1.run(ServletResponseImpl.
java:1308)
        at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSu
bject.java:321)
        at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121
)
        at
weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.j
ava:1302)
        at
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java
:1368)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Caused by: java.io.NotSerializableException:
org.apache.myfaces.trinidadinternal.context.FacesContextFactoryImpl$Cach
eRenderKit
        at
java.io.ObjectOutputStream.writeObject0(Ljava.lang.Object;Z)V(Unknown
Source)
        at
java.io.ObjectOutputStream.defaultWriteFields(Ljava.lang.Object;Ljava.io
.ObjectStreamClass;)V(Unknown Source)
        at
java.io.ObjectOutputStream.writeSerialData(Ljava.lang.Object;Ljava.io.Ob
jectStreamClass;)V(Unknown Source)
        at
java.io.ObjectOutputStream.writeOrdinaryObject(Ljava.lang.Object;Ljava.i
o.ObjectStreamClass;Z)V(Unknown Source)
        at
java.io.ObjectOutputStream.writeObject0(Ljava.lang.Object;Z)V(Unknown
Source)
        at
java.io.ObjectOutputStream.writeObject(Ljava.lang.Object;)V(Unknown
Source)
        at
weblogic.servlet.internal.session.ReplicatedSessionChange.writeExternal(
ReplicatedSessionChange.java:114)
        at
java.io.ObjectOutputStream.writeExternalData(Ljava.io.Externalizable;)V(
Unknown Source)
        at
java.io.ObjectOutputStream.writeOrdinaryObject(Ljava.lang.Object;Ljava.i
o.ObjectStreamClass;Z)V(Unknown Source)
        at
java.io.ObjectOutputStream.writeObject0(Ljava.lang.Object;Z)V(Unknown
Source)
        at
java.io.ObjectOutputStream.writeObject(Ljava.lang.Object;)V(Unknown
Source)
        at
weblogic.rjvm.MsgAbbrevOutputStream.writeObject(MsgAbbrevOutputStream.ja
va:614)
        at
weblogic.rjvm.MsgAbbrevOutputStream.writeObjectWL(MsgAbbrevOutputStream.
java:605)
        at weblogic.rmi.internal.ObjectIO.writeObject(ObjectIO.java:38)
        at
weblogic.rjvm.BasicOutboundRequest.marshalArgs(BasicOutboundRequest.java
:87)
        ... 14 more