Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Jetty server 7.1.3: NonSerializableException thrown when running JAAS and Session Clustering with DB together

haha, bug clash, I'll close mine
--
jesse mcconnell
jesse.mcconnell@xxxxxxxxx


On Wed, Oct 20, 2010 at 12:43, Jesse McConnell <jesse.mcconnell@xxxxxxxxx> wrote:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=328274

nm, I have logged the issue in the above link

jesse

--
jesse mcconnell
jesse.mcconnell@xxxxxxxxx


On Wed, Oct 20, 2010 at 10:43, Jesse McConnell <jesse.mcconnell@xxxxxxxxx> wrote:

thanks for the report, could you log it in issue tracking?


RT -> Jetty

I'll start taking a look now

jesse

--
jesse mcconnell
jesse.mcconnell@xxxxxxxxx


On Wed, Oct 20, 2010 at 10:35, Mike Jiang <mikej1688@xxxxxxxxx> wrote:
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
jetty-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jetty-users





Back to the top