Maintaining sessions in a clustered server environment
First Claim
1. 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.
1 Assignment
0 Petitions
Accused Products
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.
-
Citations
33 Claims
-
1. 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15)
-
-
12. 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. - View Dependent Claims (13, 14, 16, 17, 18, 19, 20, 21, 22, 26)
-
-
23. 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. - View Dependent Claims (24, 25, 27, 28, 29, 30, 31, 32, 33)
-
Specification