Abstract:
A method includes, in a network, representing a first request from a first user as a first ClientUser, assigning the first ClientUser to a ServerSession, the ServerSession having one or more ClientSessions, each of the ClientSessions allowing a server to have a single session for all first user requests from the server. The method includes, in a client/server network, providing a session that can be common to all connections to a web server by a user.

Description:
FIELD OF THE INVENTION  
       [0001]     The present invention relates to data processing by digital computer, and more particularly to session handling.  
       BACKGROUND  
       [0002]     In a client/server network, session tracking keeps a server from having to ask whether a client (e.g., user) has connected before each time the server receives a request from the user. This is important in, for example, today&#39;s electronic commerce (e-commerce) Web applications.  
         [0003]     There are generally two types of Internet communication protocols, i.e., statefull and stateless. A server associates a state with a connection. Statefull protocols, such as Telnet and file transfer protocol (FTP), can process multiple operations before closing a connection. The server generally knows that all requests come from a single user.  
         [0004]     Stateless protocols, such as hypertext transfer protocol (HTTP), open separate connections to a server anytime a client requests a web page, and the server doesn&#39;t know a context or scope from one connection to the next connection. Each transaction is a single isolated transaction.  
       SUMMARY  
       [0005]     The present invention provides methods and apparatus, including computer program products, for session handling.  
         [0006]     In one aspect, the invention features a method including, in a network, representing a first request from a first user as a first ClientUser, assigning the first ClientUser to a ServerSession, the ServerSession having one or more ClientSessions, each of the ClientSessions allowing a server to have a single session for all first user requests from the server.  
         [0007]     One or more of the following features can also be included. Each of the ClientSessions can represent an abstraction of an HTTP session unbound from hypertext transfer protocol (HTTP) peculiarities. The method can include receiving a second request from the first user as a second ClientUser, and assigning the second ClientUser to the ServerSession. The server can be a web server. The first ClientUser can be a client using a stateless protocol. The stateless protocol can be hypertext transfer protocol (HTTP). The method can include displaying a first application requested by the first user and associated with a first ClientApplication in a ClientWindow. The method can include displaying a second application requested by the first user and associated with a second ClientApplication in the ClientWindow. The method can include displaying a third application requested by the first user and associated with a third ClientApplication in the ClientWindow. The method can include alternately displaying ClientApplications in a single ClientWindow.  
         [0008]     In another aspect, the invention features a method including, in a client server network, receiving a request for an application, obtaining a ClientSession, obtaining a ClientWindow, obtaining an ApplicationWindow, and executing the application in the application window of the ClientWindow.  
         [0009]     One or more of the following features can also be included. The request can be a hypertext transfer protocol (HTTP) request. The ClientSession can be a hypertext transfer protocol (HTTP) session. The ClientWindow can represent a client session. The ApplicationWindow can be a client window.  
         [0010]     In another aspect, the invention features a network including a browser client device, and a client manager residing in a server for receiving multiple hypertext transfer protocol (HTTP) requests from the browser client device and determining a single application window for execution of applications corresponding to the multiple HTTP requests.  
         [0011]     One or more of the following features can also be included. The client manager can include a servlet. The client manager can establish a client session, a single server session, a client window and an application window in response to the multiple requests from the browser client device. The client session can be a hypertext transfer protocol (HTTP) session.  
         [0012]     In another aspect, the invention features a method including, in a client/server network, providing a session that is common to all connections to a web server by a user.  
         [0013]     One or more of the following features can also be included. The connections can by different browser processes. The connections can be different browsers. The connections can be different client devices. The user can be a client using a stateless protocol. The stateless protocol can be hypertext markup language (HTML) protocol.  
         [0014]     The invention can be implemented to realize one or more of the following advantages.  
         [0015]     With a ServerSession being common regardless of whether a HTTP session is common, a server can provide communication between two or more applications running in a single session. This is done independent of a client platform and even if applications are run from two different client platforms. One can have a ServerSession with one user using a personal computer (PC) platform and a personal data assistant (PDA) platform at the same time.  
         [0016]     Having a common ServerSession means that a common scope is guaranteed to two applications running at the same time for the same user, regardless how or where from they were started.  
         [0017]     The ServerSession can be used for stateless communication, so different applications can use one resource, e.g., personalization information.  
         [0018]     The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims. 
     
    
     DESCRIPTION OF DRAWINGS  
       [0019]      FIG. 1  is a block diagram of an exemplary client server network.  
         [0020]      FIG. 2  is a sequence diagram.  
         [0021]      FIG. 3  is a flow diagram of a session handling process. 
     
    
       [0022]     Like reference numbers and designations in the various drawings indicate like elements.  
       DETAILED DESCRIPTION  
       [0023]     As shown in  FIG. 1 , an exemplary client/server network  10  includes a client  12  linked to a server  14 . Client  12  includes an output device  16  for display of a graphical user interface (GUI)  18  to a user  20 . In general, a client, such as client  12 , is a requesting program or user  20  in a client/server relationship, such as in client/sever network  10 . For example, the user  20  of a Web browser (not shown), such as Netscape® Communicator or Microsoft® Internet Explorer, makes client requests for pages or execution of an application from servers, such as server  14 . The Web browser itself is a client in its relationship with the server  14 , which obtains and returns a requested hypertext markup language (HTML) file or executes an application. The computer handling the request and sending back the HTML file or executing the application is the server  14 . Client  12  can be a Web client or a client using a “stateless” protocol such as hypertext transfer protocol (HTTP). HTTP is stateless because each time a client retrieves a Web page, for example, it opens a separate connection to a Web server such as server  14 , and the Web server does not maintain contextual information or scope pertaining to the client.  
         [0024]     In general, a server, such as the server  14 , is a program that awaits and fulfills requests from client  12 . Server  14  can include a processor  22  and a memory  24 . Memory  24  can store an operating system (“OS”)  26 , a client manager  28  and machine-executable instructions  30  executed by processor  22  to perform a session handling process  100 , described below.  
         [0025]     As shown in  FIG. 2 , the client  12 , user  30  (or more generally, a browser client device  32 ) sends a request, e.g., http request  34 , to the server  14 . The request  34  is often received by a dispatch servlet  36  and processed by the client manager  28 . In general, a servlet is a small program that runs on a server. The servlet can be a Java servlet. Using a Java servlet, rather than causing a separate program process to be generated, each user request is invoked as a thread in a single daemon process, resulting in low system overhead to process the request.  
         [0026]     The client  12  connects to the server  14  and is represented as a ClientUser that is assigned to a ServerSession. A ServerSession, for which the client  12  has exactly one, can have one or more ClientSessions. A ClientSession  38  can represent a hypertext transfer protocol (HTTP) session. The ClientSession  38  is an abstraction of an HTTP session  40  and is generated so that the architecture shown in  FIG. 2  is not bound to the peculiarities of any version of the HTTP protocol.  
         [0027]     The ClientSession  38  allows the server  14  to have one session, i.e., the ServerSession  40 , for everything the client  12  is doing on the server  14 . When the same client  12  starts another application from a different browser process, for example, the client  12  gets a new ClientSession assigned to the same ServerSession  40 . In the case of a portal, each ClientSession is assigned to the same ServerSession. This is guaranteed for all applications within a portal window as they use the same cookie and thus the same HTTP Session.  
         [0028]     The client manger  28  provides a ClientWindow  42  for display of an ApplicationWindow  44 . The ClientWindow  42  and ApplicationWindow  44  allow a ClientApplication  46  to visualize itself without regard to who is looking, so that the application can be run in a portal or standalone without change. In a portal example, several applications within a portal have the same ClientWindow because each application displays it in the ApplicationWindow. The ClientWindow aggregates the applications if there is more than one. For example, it is helpful to imagine a menu that is shared between different applications within the same portal page. An active application has the menu. If there are three areas in the window, one is for a menu, one is for an application A and one is for an application B. When application B is active, the menu area has application B&#39;s menu, when application A is active, the menu are has application A&#39;s menu. This is handled by the ClientWindow  42 . The ClientWindow  42  aggregates the ApplicationWindow  44  that contains the ClientApplication  46 .  
         [0029]     Scope is provided by the ServerSession  40 , the ClientSession  38 , and the ClientApplication  46 . A user has one ServerSession regardless how many times or from where the user logs on. When resources are acquired, for example, a connection to a back-end machine or a data lock on the back-end machine, the resource can be registered to the appropriate one of the components that has scope. When the scope ends, for example, because one ClientSession or one ClientApplication terminates without releasing the resources, the resource is released. This provides granularity for resource management than was unavailable previously.  
         [0030]     As shown in  FIG. 3 , the session handling process  100  includes receiving ( 102 ) a request from a browser client device. Process  100  establishes ( 104 ) a ClientSession and associates ( 106 ) a Client User to a ServerSession. The Server Session, for which the client has exactly one, can have one or more ClientSessions.  
         [0031]     Process  100  provides ( 108 ) a ClientWindow for display of an ApplicationWindow. Process  100  executes ( 110 ) the requested application in the ApplicationWindow.  
         [0032]     The invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The invention can be implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.  
         [0033]     Method steps of the invention can be performed by one or more programmable processors executing a computer program to perform functions of the invention by operating on input data and generating output. Method steps can also be performed by, and apparatus of the invention can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).  
         [0034]     Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry.  
         [0035]     Other embodiments are within the scope of the following claims.