Hi, All
     I have used the jetty server 7.1.3 as the app server for a while. First
the JAAS (Java Authentication and Authorization service) is used and it
worked with no error.
     Secondly, we tried to use the Session Clustering with Database, a
feature offered by the jetty server also. It's for the case in which there
are multiple server instances running in a load balancing environment. The
DB is used as a persistent storage for the session's attributes so the
attributes can be shared by the server instances.

     However, when the JAAS and Session Clustering with DB are in effect at
the same time, a NonSerializableException  was thrown as follows,

     2010-10-06 15:51:08.549:WARN::Problem persisting changed session data
id=fredsft3xjud8yc59jaiszql57lo

*java.io.NotSerializableException*:
org.eclipse.jetty.server.session.JDBCSessionManager

      at java.io.ObjectOutputStream.writeObject0(Unknown Source)

      at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

      at java.io.ObjectOutputStream.writeSerialData(Unknown Source)

      at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

      at java.io.ObjectOutputStream.writeObject0(Unknown Source)

      at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

      at java.io.ObjectOutputStream.writeSerialData(Unknown Source)

      at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

      at java.io.ObjectOutputStream.writeObject0(Unknown Source)

      at java.io.ObjectOutputStream.writeObject(Unknown Source)

      at java.util.concurrent.ConcurrentHashMap.writeObject(Unknown Source)

      at sun.reflect.NativeMethodAccessorImpl.invoke0(*Native Method*)

      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

      at java.lang.reflect.Method.invoke(Unknown Source)

      at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)

      at java.io.ObjectOutputStream.writeSerialData(Unknown Source)

      at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

      at java.io.ObjectOutputStream.writeObject0(Unknown Source)

      at java.io.ObjectOutputStream.writeObject(Unknown Source)

      at org.eclipse.jetty.server.session.JDBCSessionManager.updateSession(*
JDBCSessionManager.java:949*)

      at
org.eclipse.jetty.server.session.JDBCSessionManager$Session.complete(*
JDBCSessionManager.java:341*)

      at org.eclipse.jetty.server.session.AbstractSessionManager.complete(*
AbstractSessionManager.java:144*)

      at org.eclipse.jetty.server.session.SessionHandler.doScope(*
SessionHandler.java:199*)

      at org.eclipse.jetty.server.handler.ContextHandler.doScope(*
ContextHandler.java:860*)

      at org.eclipse.jetty.server.handler.ScopedHandler.handle(*
ScopedHandler.java:117*)

      at org.eclipse.jetty.server.handler.HandlerList.handle(*
HandlerList.java:47*)

      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(*
HandlerWrapper.java:113*)

      at org.eclipse.jetty.server.Server.handle(*Server.java:335*)

      at org.eclipse.jetty.server.HttpConnection.handleRequest(*
HttpConnection.java:588*)

      at
org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(*
HttpConnection.java:1029*)

      at org.eclipse.jetty.http.HttpParser.parseNext(*HttpParser.java:549*)

      at org.eclipse.jetty.http.HttpParser.parseAvailable(*
HttpParser.java:211*)

      at org.eclipse.jetty.server.HttpConnection.handle(*
HttpConnection.java:418*)

      at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(*
SelectChannelEndPoint.java:489*)

      at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(*
QueuedThreadPool.java:436*)

      at java.lang.Thread.run(Unknown Source)


   Debugging into the code, it was found that the problem was caused in the
following steps:


   1). In the process of the JAAS, the code sets a class:
SessionAuthentication as a session attribute. SessionAuthentication is
implemented as a serializable object but its member, DefaultUserIdentity is
not. So the SessionAuthentication is not a serializable object at all;

   2). In Session Clustering with DB process, the JDBCSessionManager tried
to save all the sessions' attributes-all of them must be serializable-to the
database. However, one of the attribute, SessionAuthentication, is not a
serialiable object, so the above exception is thrown and the process is
interrupted.


   Kindly hope you can help me for this.


   Thanks,


   M. J.
_______________________________________________
jetty-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to