← Back to Patent Explorer
US6098093A Expired / Lapsed US ⏱️ 0.0 years remaining

Maintaining sessions in a clustered server environment

Assignee: International Business Machines Corp
•
Filing: 1998-03-19
•
Granted: 2000-08-01
•
Expires: 2018-03-19
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A technique, system, and computer program for maintaining session information among multiple clustered computers for servlets and providing those servlets with various session services. The session services are implemented using a plug-in servlet engine. The session information is preferably maintained without using a persistent data store, to avoid performance penalties associated with storing information in persistent storage such as a database. A locking technique is implemented to prevent servlets from inadvertently overwriting each other's session object data. A registration process is preferably used, to optimize communication of configuration property changes. Non-proprietary interfaces are used, allowing for scalability, portability, and maximum industry acceptance of this solution.

Inventors

  • 👤 Elias N. Bayeh
  • 👤 Gabriel G. Montero
  • 👤 Robert C. Will

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-28 13:39
CPC Classifications
H; H04; H04L; H04L67/00; H04L67/14; H04L9/00; H04L9/40; H04L67/01; H04L67/10; H04L67/1001; H04L67/10015; H04L69/00; H04L69/30; H04L69/32; H04L69/322; H04L69/327; H04L69/329

Claims Analysis

Total Claims: 36
Claim 1
Independent Claim 401 words
In a computing environment having a connection to a network, computer readable code readable by a computer system in said environment, for managing session-related state information in a clustered server environment, comprising: at least one client; two or more servers operating as a server cluster; at least two client requests generated by one of said clients, wherein said at least two client requests form an ongoing session and may be received over said network by different ones of said servers; one or more servlets, each of said servlets executable by at least one of said servers; and one or more servlet engines, each of said engines running in a different one of said servers, wherein each of said servlet engines comprises: a subprocess for configuring said servlet engine, wherein said servlet engine may be configured as a session client or a session server; a subprocess, operable in said servlet engine configured as said session server, for managing a session pool, said session pool comprising a plurality of session objects wherein each of said session objects stores state information corresponding to one of said ongoing sessions between one of said clients and one or more of said servers from said server cluster, wherein said subprocess for managing said session pool enables any of said session objects to be accessed by a selected servlet without regard to which of said servers in said server pool is executing said selected servlet and wherein said subprocess further comprises: a subprocess for receiving a session object retrieval request from any of said session clients, said request specifying a particular session identifier of a particular session object to be retrieved from said session pool; a subprocess for locating said particular session object in said session pool, using said particular session identifier; a subprocess for returning said located session object to said session client as a response to said session object retrieval request; a subprocess for selectively receiving an updated version of said returned session object from said session client; and a subprocess for replacing updatable fields of said particular session object in said session pool using said received updated version; a subprocess for receiving one of said client requests when said client request is destined for one of said servlets; a subprocess for making any necessary updates to said client request; and a subprocess for forwarding said updated client request from said servlet engine to said servlet.
Claim 2
Dependent Claim 401 words
In a computing environment having a connection to a network, computer readable code readable by a computer system in said environment, for managing session-related state information in a clustered server environment, comprising: at least one client; two or more servers operating as a server cluster; at least two client requests generated by one of said clients, wherein said at least two client requests form an ongoing session and may be received over said network by different ones of said servers; one or more servlets, each of said servlets executable by at least one of said servers; and one or more servlet engines, each of said engines running in a different one of said servers, wherein each of said servlet engines comprises: a subprocess for configuring said servlet engine, wherein said servlet engine may be configured as a session client or a session server; a subprocess, operable in said servlet engine configured as said session server, for managing a session pool, said session pool comprising a plurality of session objects wherein each of said session objects stores state information corresponding to one of said ongoing sessions between one of said clients and one or more of said servers from said server cluster, wherein said subprocess for managing said session pool enables any of said session objects to be accessed by a selected servlet without regard to which of said servers in said server pool is executing said selected servlet and wherein said subprocess further comprises: a subprocess for receiving a session object retrieval request from any of said session clients, said request specifying a particular session identifier of a particular session object to be retrieved from said session pool; a subprocess for locating said particular session object in said session pool, using said particular session identifier; a subprocess for returning said located session object to said session client as a response to said session object retrieval request; a subprocess for selectively receiving an updated version of said returned session object from said session client; and a subprocess for replacing updatable fields of said particular session object in said session pool using said received updated version; a subprocess for receiving one of said client requests when said client request is destined for one of said servlets; a subprocess for making any necessary updates to said client request; and a subprocess for forwarding said updated client request from said servlet engine to said servlet.
Claim 3
Dependent Claim 53 words
Computer readable code for managing session-related state information in a clustered server environment according to claim 1, wherein said servlet engine configured as said session server further comprises a subprocess for controlling access to each individual one of said session objects in said session pool using a locking mechanism to serialize said access.
Claim 4
Dependent Claim 112 words
Computer readable code for managing session-related state information in a clustered server environment according to claim 1, further comprising: a subprocess, operable in a particular one of said servlet engines configured as one of said session clients, for sending said session object retrieval request to said session server on behalf of a particular servlet being executed by a particular one of said servers on which said particular servlet engine is executing; a subprocess, operable in said particular servlet engine, for receiving said returned session object in said response from said session server; and a subprocess, operable in said particular servlet engine, for making said received session object available to said particular servlet.
Claim 5
Dependent Claim 43 words
Computer readable code for managing session-related state information in a clustered server environment according to claim 1, wherein said session server is optimized for providing session services by not having application servlets running on said server on which said session server is running.
Claim 6
Dependent Claim 97 words
Computer readable code for managing session-related state information in a clustered server environment according to claim 4, further comprising: a subprocess, operable in said particular servlet, for updating said received session object to contain updated session state information, said updated session state information reflecting processing of said client request as part of said ongoing session; a subprocess, operable in said particular servlet, for making said updated session object available to said particular servlet engine; and a subprocess, operable in said particular servlet engine, for sending said updated session object to said session server as said updated version.
Claim 7
Dependent Claim 85 words
Computer readable code for managing session-related state information in a clustered server environment according to claim 4, wherein each of said servlet engines further comprises: a subprocess for requesting a list of all valid session identifiers from said session server; a subprocess for requesting, from said session server, said session object for any of said session identifiers on said list; a subprocess for updating said requested session object; and a subprocess for returning said updated session object to said session server for reflecting said updates.
Claim 8
Dependent Claim 31 words
Computer readable code for managing session-related state information in a clustered server environment according to claim 1, wherein said session-related state information is maintained without use of a persistent data store.
Claim 9
Dependent Claim 27 words
Computer readable code for managing session-related state information in a clustered server environment according to claim 1, wherein said code uses standard Application Programming Interface ("API") calls.
Claim 10
Dependent Claim 32 words
Computer readable code for managing session-related state information in a clustered server environment according to claim 8, wherein said API calls use Remote Method Invocation to achieve transparency at an invoking servlet.
Claim 11
Dependent Claim 37 words
Computer readable code for managing session-related state information in a clustered server environment according to claim 1, wherein a central copy of session-related configuration data is propagated from said session server to all of said session clients.
Claim 12
Dependent Claim 39 words
Computer readable code for managing session-related state information in a clustered server environment according to claim 10, wherein each of said session clients registers with said session server to enable said propagation to occur whenever said configuration data changes.
Claim 13
Independent Claim 378 words
A system for managing session-related state information in a clustered server environment having a connection to a network, comprising: at least one client; two or more servers operating as a server cluster; at least two client requests generated by one of said clients, wherein said at least two client requests form an ongoing session and may be received over said network by different ones of said servers; one or more servlets, each of said servlets executable by at least one of said servers; and one or more servlet engines, each of said engines running in a different one of said servers, wherein each of said servlet engines comprises: means for configuring said servlet engine, wherein said servlet engine may be configured as a session client or a session server; means, operable in said servlet engine configured as said session server, for managing a session pool, said session pool comprising a plurality of session objects wherein each of said session objects stores state information corresponding to one of said ongoing sessions between one of said clients and one or more of said servers from said server cluster, wherein said means for managing said session pool enables any of said session objects to be accessed by a selected servlet without regard to which of said servers in said server pool is executing said selected servlet and wherein said means further comprises: means for receiving a session object retrieval request from any of said session clients, said request specifying a particular session identifier of a particular session object to be retrieved from said session pool; means for locating said particular session object in said session pool, using said particular session identifier; means for returning said located session object to said session client as a response to said session object retrieval request; means for selectively receiving an updated version of said returned session object from said session client; and means for replacing updatable fields of said particular session object in said session pool using said received updated version; means for receiving one of said client requests when said client request is destined for one of said servlets; means for making any necessary updates to said client request; and means for forwarding said updated client request from said servlet engine to said servlet.
Claim 14
Independent Claim 378 words
A system for managing session-related state information in a clustered server environment having a connection to a network, comprising: at least one client; two or more servers operating as a server cluster; at least two client requests generated by one of said clients, wherein said at least two client requests form an ongoing session and may be received over said network by different ones of said servers; one or more servlets, each of said servlets executable by at least one of said servers; and one or more servlet engines, each of said engines running in a different one of said servers, wherein each of said servlet engines comprises: means for configuring said servlet engine, wherein said servlet engine may be configured as a session client or a session server; means, operable in said servlet engine configured as said session server, for managing a session pool, said session pool comprising a plurality of session objects wherein each of said session objects stores state information corresponding to one of said ongoing sessions between one of said clients and one or more of said servers from said server cluster, wherein said means for managing said session pool enables any of said session objects to be accessed by a selected servlet without regard to which of said servers in said server pool is executing said selected servlet and wherein said means further comprises: means for receiving a session object retrieval request from any of said session clients, said request specifying a particular session identifier of a particular session object to be retrieved from said session pool; means for locating said particular session object in said session pool, using said particular session identifier; means for returning said located session object to said session client as a response to said session object retrieval request; means for selectively receiving an updated version of said returned session object from said session client; and means for replacing updatable fields of said particular session object in said session pool using said received updated version; means for receiving one of said client requests when said client request is destined for one of said servlets; means for making any necessary updates to said client request; and means for forwarding said updated client request from said servlet engine to said servlet.
Claim 15
Dependent Claim 51 words
The system for managing session-related state information in a clustered server environment according to claim 12, wherein said servlet engine configured as said session server further comprises means for controlling access to each individual one of said session objects in said session pool using a locking mechanism to serialize said access.
Claim 16
Dependent Claim 108 words
The system for managing session-related state information in a clustered server environment according to claim 12, further comprising: means, operable in a particular one of said servlet engines configured as one of said session clients, for sending said session object retrieval request to said session server on behalf of a particular servlet being executed by a particular one of said servers on which said particular servlet engine is executing; means, operable in said particular servlet engine, for receiving said returned session object in said response from said session server; and means, operable in said particular servlet engine, for making said received session object available to said particular servlet.
Claim 17
Dependent Claim 42 words
The system for managing session-related state information in a clustered server environment according to claim 11, wherein said session server is optimized for providing session services by not having application servlets running on said server on which said session server is running.
Claim 18
Dependent Claim 93 words
The system for managing session-related state information in a clustered server environment according to claim 14, further comprising: means, operable in said particular servlet, for updating said received session object to contain updated session state information, said updated session state information reflecting processing of said client request as part of said ongoing session; means, operable in said particular servlet, for making said updated session object available to said particular servlet engine; and means, operable in said particular servlet engine, for sending said updated session object to said session server as said updated version.
Claim 19
Dependent Claim 80 words
The system for managing session-related state information in a clustered server environment according to claim 14, wherein each of said servlet engines further comprises: means for requesting a list of all valid session identifiers from said session server; means for requesting, from said session server, said session object for any of said session identifiers on said list; means for updating said requested session object; and means for returning said updated session object to said session server for reflecting said updates.
Claim 20
Dependent Claim 30 words
The system for managing session-related state information in a clustered server environment according to claim 12, wherein said session-related state information is maintained without use of a persistent data store.
Claim 21
Dependent Claim 26 words
The system for managing session-related state information in a clustered server environment according to claim 12, wherein said code uses standard Application Programming Interface ("API") calls.
Claim 22
Dependent Claim 31 words
The system for managing session-related state information in a clustered server environment according to claim 19, wherein said API calls use Remote Method Invocation to achieve transparency at an invoking servlet.
Claim 23
Dependent Claim 36 words
The system for managing session-related state information in a clustered server environment according to claim 12, wherein a central copy of session-related configuration data is propagated from said session server to all of said session clients.
Claim 24
Dependent Claim 38 words
The system for managing session-related state information in a clustered server environment according to claim 21, wherein each of said session clients registers with said session server to enable said propagation to occur whenever said configuration data changes.
Claim 25
Independent Claim 369 words
A method for managing session-related state information in a clustered server environment having a connection to a network, comprising the steps of: operating two or more servers as a server cluster; generating at least two client requests from one of at least one clients, wherein said at least two client requests form an ongoing session and may be received over said network by different ones of said servers; providing one or more servlets, each of said servlets executable by at least one of said servers; providing one or more servlet engines, wherein each of said servlet engines runs in a different one or said one or more servers; configuring each of said one or more servlet engines as a session client or a session server; managing, by said servlet engine configured as said session server, a session pool, said session pool comprising a plurality of session objects wherein each of said session objects stores state information corresponding to one of said ongoing sessions between one of said clients and one or more of said servers from said server cluster, wherein said managing said session pool step enables any of said session objects to be accessed by a selected servlet without regard to which of said servers in said server pool is executing said selected servlet and wherein said managing step further comprises the steps of: receiving a session object retrieval request from any of said session clients, said request specifying a particular session identifier of a particular session object to be retrieved from said session pool; locating said particular session object in said session pool, using said particular session identifier; returning said located session object to said session client as a response to said session object retrieval request; selectively receiving an updated version of said returned session object from said session client; and replacing updatable fields of said particular session object in said session pool using said received updated version; receiving one of said client requests in one of said servlet engines, when said client request is destined for one of said servlets; making any necessary updates to said client request in said receiving servlet engine; and forwarding said updated client request from said servlet engine to said servlet.
Claim 26
Independent Claim 369 words
A method for managing session-related state information in a clustered server environment having a connection to a network, comprising the steps of: operating two or more servers as a server cluster; generating at least two client requests from one of at least one clients, wherein said at least two client requests form an ongoing session and may be received over said network by different ones of said servers; providing one or more servlets, each of said servlets executable by at least one of said servers; providing one or more servlet engines, wherein each of said servlet engines runs in a different one or said one or more servers; configuring each of said one or more servlet engines as a session client or a session server; managing, by said servlet engine configured as said session server, a session pool, said session pool comprising a plurality of session objects wherein each of said session objects stores state information corresponding to one of said ongoing sessions between one of said clients and one or more of said servers from said server cluster, wherein said managing said session pool step enables any of said session objects to be accessed by a selected servlet without regard to which of said servers in said server pool is executing said selected servlet and wherein said managing step further comprises the steps of: receiving a session object retrieval request from any of said session clients, said request specifying a particular session identifier of a particular session object to be retrieved from said session pool; locating said particular session object in said session pool, using said particular session identifier; returning said located session object to said session client as a response to said session object retrieval request; selectively receiving an updated version of said returned session object from said session client; and replacing updatable fields of said particular session object in said session pool using said received updated version; receiving one of said client requests in one of said servlet engines, when said client request is destined for one of said servlets; making any necessary updates to said client request in said receiving servlet engine; and forwarding said updated client request from said servlet engine to said servlet.
Claim 27
Dependent Claim 51 words
The method for managing session-related state information in a clustered server environment according to claim 23, wherein said servlet engine configured as said session server further comprises the step of controlling access to each individual one of said session objects in said session using a locking mechanism to serialize said access.
Claim 28
Dependent Claim 102 words
The method for managing session-related state information in a clustered server environment according to claim 23, further comprising the steps of: sending, from a particular one of said servlet engines configured as one of said session clients, said session object retrieval request to said session server on behalf of a particular servlet being executed by a particular one of said servers on which said particular servlet engine is executing; receiving, by said particular servlet engine, said returned session object in said response from said session server; and making, by said particular servlet engine, said received session object available to said particular servlet.
Claim 29
Dependent Claim 42 words
The method for managing session-related state information in a clustered server environment according to claim 21, further comprising optimizing said session server for providing session services by not having application servlets running on said server on which said session server is running.
Claim 30
Dependent Claim 87 words
The method for managing session-related state information in a clustered server environment according to claim 25, further comprising the steps of: updating, by said particular servlet, said received session object to contain updated session state information, said updated session state information reflecting processing of said client request as part of said ongoing session; making, by said particular servlet, said updated session object available to said particular servlet engine; and sending, by said particular servlet engine, said updated session object to said session server as said updated version.
Claim 31
Dependent Claim 75 words
The method for managing session-related state information in a clustered server environment according to claim 25, wherein each of said servlet engines further comprises the steps of: requesting a list of all valid session identifiers from said session server; requesting, from said session server, said session object for any of said session identifiers on said list; updating said requested session object; and returning said updated session object to said session server for reflecting said updates.
Claim 32
Dependent Claim 30 words
The method for managing session-related state information in a clustered server environment according to claim 23, wherein said session-related state information is maintained without use of a persistent data store.
Claim 33
Dependent Claim 26 words
The method for managing session-related state information in a clustered server environment according to claim 23, wherein said code uses standard Application Programming Interface ("API") calls.
Claim 34
Dependent Claim 31 words
The method for managing session-related state information in a clustered server environment according to claim 30, wherein said API calls use Remote Method Invocation to achieve transparency at an invoking servlet.
Claim 35
Dependent Claim 39 words
The method for managing session-related state information in a clustered server environment according to claim 23, further comprising the step of propagating a central copy of session-related configuration data from said session server to all of said session clients.
Claim 36
Dependent Claim 42 words
The method for managing session-related state information in a clustered server environment according to claim 32, further comprising the step of registering each of said session clients with said session server to enable said propagation to occur whenever said configuration data changes.

References Cited (Backward Citations)

US5928323A Cited
US5848246A Cited
US5828840A Cited
US5908469A Cited
US5935249A Cited
US5924116A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-08-01 2004-01-31 2004-08-01 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-08-01 2008-01-31 2008-08-01 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-08-01 2012-01-31 2012-08-01 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag