US 9,811,541 B2
System and method for supporting lazy deserialization of session information in a server cluster
Naresh Revanuru, Fremont, CA (US); Lenny Phan, Sunnyvale, CA (US); and Scott Oaks, New York, NY (US)
Assigned to ORACLE INTERNATIONAL CORPORATION, Redwood Shores, CA (US)
Filed by Naresh Revanuru, Fremont, CA (US); Lenny Phan, Sunnyvale, CA (US); and Scott Oaks, New York, NY (US)
Filed on Jun. 23, 2011, as Appl. No. 13/167,636.
Claims priority of provisional application 61/383,285, filed on Sep. 15, 2010.
Claims priority of provisional application 61/384,227, filed on Sep. 17, 2010.
Prior Publication US 2012/0066394 A1, Mar. 15, 2012
Int. Cl. G06F 17/30 (2006.01); H04L 29/06 (2006.01); G06F 15/173 (2006.01); H04L 12/24 (2006.01); H04L 12/931 (2013.01); H04L 29/08 (2006.01); G06F 9/455 (2006.01)
CPC G06F 17/30286 (2013.01) [G06F 15/17318 (2013.01); G06F 17/30368 (2013.01); G06F 17/30584 (2013.01); H04L 29/06088 (2013.01); H04L 41/042 (2013.01); H04L 41/0686 (2013.01); H04L 49/358 (2013.01); H04L 67/02 (2013.01); H04L 67/10 (2013.01); H04L 67/1002 (2013.01); H04L 67/1034 (2013.01); H04L 67/1095 (2013.01); H04L 67/142 (2013.01); H04L 67/146 (2013.01); G06F 9/45504 (2013.01); H04L 67/1004 (2013.01); H04L 67/1027 (2013.01); H04L 67/14 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A system for supporting lazy deserialization of session information in a server cluster, the system comprising:
a server cluster executing on one or more microprocessors, wherein the server cluster includes a plurality of application server instances, wherein one or more of the plurality of application server instances are assigned to a preferred replication group;
a web server and a proxy application running thereon, wherein the proxy application maintains information of the plurality of application server instances, and directs a request from a client to a particular application server instance, wherein the particular application server instance operates as a primary application server instance to
store a session associated with the client, and
select a secondary application server instance from the remaining application server instances in the server cluster,
wherein the selection of the secondary application server instance is based at least on whether the secondary application server instance is in the preferred replication group that does not include the primary application server instance;
wherein the proxy application on the web server instructs the client to write a cookie configured to store location information of the primary application server instance and location information of the secondary application server instance;
wherein the secondary application server instance operates to store a serialized copy of the session in a byte array on the secondary application server instance, detect that one or more entries in the byte array are affected by a particular session update received from the primary application server instance, and, update the one or more affected entries in the byte array on the secondary application server instance;
wherein, in the event of a failure of the primary application server instance, the proxy application on the web server uses the location information stored in the cookie to locate the secondary application server instance, obtains a session state from the secondary application server instance through deserializing the updated serialized session, and responds to additional requests from the client based on the session state;
wherein the secondary application server instance subsequently operates as a new primary application server instance, and selects a new secondary application server instance from the plurality of application server instances in the server cluster; and
wherein the proxy application on the web server updates the cookie with location information of the new primary application server and location information of the new secondary application server.