throbber
(12) United States Patent
`Larkin
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,003,767 B2
`Feb. 21, 2006
`
`USOO7003767B2
`
`(*) Notice:
`
`(54) SYSTEM AND METHOD FOR REMOTELY
`UPDATING SOFTWARE APPLICATIONS
`N
`N
`(75) Inventor: Michael K. Larkin, San Jose, CA (US)
`(73) Assignee: International Business Machines
`Corp., Armonk, NY (US)
`Subject to any disclaimer, the term of this
`p liS". sisted under 35
`a --
`y
`yS.
`(21) Appl. No.: 09/969,286
`(22) Filed:
`Oct. 2, 2001
`65
`Prior Publication D
`rior Publication Data
`US 2003/0066065 A1
`Apr. 3, 2003
`(51) Int. Cl
`Goor 5f44
`(52) U.S. Cl
`
`(2006.01)
`717,172. 717/169; 717/175,
`
`Oa -
`
`1 - O
`
`- - - - - - - - - - - - - - - - - - - - - -
`
`s
`
`s 71717s
`
`(58) Field Elisation Searth - - - - - - - - - R168-178
`ee application file for complete Search history.
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`5,920,725 A 7/1999 Ma et al. .................... sos,
`5,923,885 A * 7/1999 Johnson et al. ............. 717/176
`6,003,065. A 12/1999 Yan et al. ................... 709/201
`
`6,035,423 A * 3/2000 Hodges et al. ................ 714/38
`OTHER PUBLICATIONS
`Jing et al., “Client-Server Computing in Mobile Environ
`ments”, ACM, pp. 117-157, Jun. 1999.*
`Hauswirth et al., “A Component and Communication Model
`for Push Systems”, ACM, pp. 20-38, Oct. 1999.*
`* cited by examiner
`Primary Examiner Ted T. Vo
`(74) Attorney, Agent, or Firm-Kunzler & Associates
`(57)
`ABSTRACT
`
`request from a registered client to have the new Software
`
`A System and method are disclosed for remotely updating a
`f
`licati
`both thin cli
`d
`hin cli
`Software application on both thin client and non-thin client
`WorkStations while the Software application is open on the
`client WorkStation. The System includes a Server-side mod
`ule and a client-side module. The method involves the server
`receiving the new Software application and then either
`automatically pushing it onto each client or receiving a
`program installed. The State of the user's application may
`optionally be Saved during the install and restored after the
`automatic upgrading and installing of the Segment of the
`Software application. After the new Software application has
`been Successfully installed, the cache from the previous
`application is invalidated. Control is then transferred back to
`the client.
`
`29 Claims, 6 Drawing Sheets
`
`
`
`
`
`
`
`
`
`40
`
`46
`
`42
`
`Application
`
`
`
`New
`Application
`
`
`
`48
`
`12
`
`48
`
`12
`
`Curgislate
`Workstation
`Client Side
`Module
`
`Current State
`Workstation
`Cient Side
`Module
`
`52
`
`
`
`
`
`Application
`Update
`
`Server-Side
`Module
`
`12
`
`Current State
`Workstation
`Client Side
`Module
`
`Instacart, Ex. 1040
`
`1
`
`

`

`U.S. Patent
`
`Feb. 21, 2006
`
`Sheet 1 of 6
`
`US 7,003,767 B2
`
`18
`1N 12
`
`10
`A1
`
`Storage O
`
`16
`
`
`
`Net
`Card
`
`input
`Devices
`
`CPU
`
`Output
`Devices
`
`
`
`
`
`14
`
`42
`
`44
`
`12
`
`38
`
`40
`
`Fig. 1
`
`2
`
`

`

`U.S. Patent
`
`Feb. 21, 2006
`
`Sheet 2 of 6
`
`US 7,003,767 B2
`
`Application Host
`
`
`
`45
`
`
`
`40
`
`42
`
`Server
`
`'N
`
`12
`
`12
`
`12
`
`Workstation
`
`Workstation
`
`Fig. 2
`
`3
`
`

`

`U.S. Patent
`
`Feb. 21, 2006
`
`Sheet 3 of 6
`
`US 7,003,767 B2
`
`
`
`Application
`
`New
`Application
`
`Application
`Update
`
`Server-Side
`Module
`
`Client Side
`Module
`
`Client Side
`Module
`
`Client Side
`Module
`
`Fig. 3
`
`4
`
`

`

`U.S. Patent
`
`Feb. 21, 2006
`
`Sheet 4 of 6
`
`US 7,003,767 B2
`
`
`
`Server-Side Update Module
`50
`
`Server Register
`Module
`54
`
`Generate List of
`Objects Module
`60
`
`Server Current
`State Transfer
`Module
`66
`
`Client Location
`Module
`56
`
`New Object
`Location Module
`58
`
`Current State
`Receiver Module
`62
`
`Install New Object
`Module
`64
`
`Server Side
`interface
`68
`
`Transfer Control
`Module
`70
`
`Client-Side Update Module
`52
`
`Server
`Communication
`Module
`72
`
`Client-Side interface
`Module
`74
`
`Client Register Module
`76
`
`Location information
`Module
`78
`
`Current State Transfer
`Module
`80
`
`Receive New Object
`Module
`82
`
`Cache invalidation
`Module
`84
`
`Client Current State
`Receiver Module
`86
`
`Data Version Change
`Module
`88
`
`Fig. 4
`
`5
`
`

`

`U.S. Patent
`
`Feb. 21, 2006
`
`Sheet 5 of 6
`
`US 7,003,767 B2
`
`/
`
`Cal Server from Client
`
`Register For Push
`
`Register Client Location
`
`Make Server Aware of New
`Application
`
`Generate List of Objects to
`Update
`
`Store Current State
`
`install New Application onto
`Client
`
`invalidate Cache
`
`Return Current State to Client
`
`ReConcile Data Versions
`
`Reurn Control to Client
`
`124
`
`126
`
`128
`
`130
`
`132
`
`134
`
`136
`
`138
`
`140
`
`142
`
`144
`
`146
`
`End
`
`6
`
`

`

`U.S. Patent
`
`Feb. 21, 2006
`
`Sheet 6 of 6
`
`US 7,003,767 B2
`
`/
`
`Client Calls Server
`
`Client Requests Update
`
`Generate List of Objects to
`Update
`
`Store Current State
`
`instal New Application onto
`Client
`
`invalidate Cache
`
`Return Current State to Cient
`
`ReConcile Data Versions
`
`Return Control to Client
`
`154
`
`156
`
`160
`
`162
`
`164
`
`166
`
`168
`
`170
`
`172
`
`174
`
`End
`
`7
`
`

`

`1
`SYSTEMAND METHOD FOR REMOTELY
`UPDATING SOFTWARE APPLICATIONS
`
`BACKGROUND OF THE INVENTION
`
`1. The Field of the Invention
`The present invention relates to Systems and methods for
`upgrading Software in distributed computer Systems. More
`Specifically, the present invention relates to Systems and
`methods for automatically updating Software acroSS a net
`work.
`2. The Relevant Art
`Large entities Such as businesses and educational institu
`tions often connect user computer Stations with a network
`which is in turn connected to a local Server. This allows users
`of the computer Stations to share files, programs, Software,
`and the like. Under this arrangement, a network adminis
`trator may centrally install and manage Software applica
`tions on the Server to allow each Station that is connected to
`the Server to access the Software application from the Server.
`This arrangement relieves the network administrator of
`having to download the new Software application onto each
`individual computer. The Stations running the Software
`application remotely from the Server are referred to as thin
`clients. Thin clients generally Store user data centrally on the
`Server and Store little or no application code and data locally.
`Non-thin clients, on the other hand, generally run the entire
`application and Store all data locally.
`When managing distributed client environments, System
`administrators are often required to centrally manage Soft
`ware deployment. With thin clients, updated versions of
`software are easily updated and made available to the client
`upon the next reuse. The application is generally updated
`directly on the Server, typically by installing the new version
`upgrade from a CD-ROM or by download from a specific
`location on the Internet or other network. Portions of the
`application that reside on the client can be downloaded from
`the Server or otherwise installed while the application is not
`in use. With non-thin clients, the administrator is generally
`required to install the updated version of an application
`manually on each client Station. This typically disrupts the
`work of many users for Sustained periods of time. Even if
`conducted at night, Software installations can be trouble
`Some, as many users keep applications open when not at
`their desks, which can prevent upgrades from being Suc
`cessfully conducted.
`Keeping the versions of the application Straight in net
`Works that have both thin clients and non-thin clients can
`also be quite troublesome. AS is often the case, when a new
`version of Software is developed, the System administrator
`must distribute the new version or otherwise verify that each
`client on the same network has the new version.
`Computer Systems operating in a distributed environment
`may acceSS and install new versions of Software using one
`of two methods. In a “pull' method, the client requests the
`new software from the server. In a “push” method, the server
`decides when to install the software and may install the
`Software automatically onto the client.
`The downtime that is involved with installing new ver
`Sions of Software onto remote clients can create problems.
`With either thin clients or non-thin clients, once installation
`of the new Software is completed, the application may need
`to be restarted on the client and possibly even the entire
`workstation may have to be restarted before the new version
`of the Software application is accessible. When a new
`version of a Software application is pushed upon the client
`while the Software application is executing, the user is likely
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 7,003,767 B2
`
`2
`to temporarily or permanently lose data. Even when users
`are alerted and Save their data, work is interrupted, and after
`the installation of the Software application update, the user
`is generally required to restart the application, and in Some
`cases the entire machine. The user is thus left waiting while
`the machine reboots, the application restarts, the installation
`process is completed, and the document is found again and
`reopened.
`Providing the client with the new version of a software
`application is also burdensome on System administrators.
`For example, when a new or updated version of an appli
`cation is available for download from the Internet, the
`System administrator is typically required to Verify that each
`thin client is aware of the updated version of the application
`and to Verify that the updated version is properly installed on
`each thin client. For non-thin clients, the System adminis
`trator must assure that each non-thin client has the updated
`version of the application by installing the new version one
`machine at a time. Thus, the System administrator often finds
`him or herself charged with managing both thin and non-thin
`clients. Since most users of non-thin clients either admin
`ister their own machines or retain the Services of a Separate
`group to manage their environments, a method is needed to
`deploy and Synchronize Software packages for these users.
`In accordance with the above discussion, it should be
`readily appreciated that a need exists for a System and
`method to automatically update and Synchronize versions of
`Software applications in both non-thin and thin client envi
`ronments. What is similarly needed is a manner of allowing
`users of both thin and non-thin clients to avoid having to
`restart application and/or the entire WorkStation once the
`new version of the application is downloaded and installed.
`
`OBJECTS AND BRIEF SUMMARY OF THE
`INVENTION
`
`The present invention has been developed in response to
`the present State of the art, and in particular, in response to
`the problems and needs in the art that have not yet been fully
`Solved by currently available programs. Accordingly, the
`present invention Solves the foregoing problems by provid
`ing a System and a method for remotely updating and
`Synchronizing a Software application within both thin and
`non-thin client WorkStations and for restoring the Software
`application to a uSeable State without restarting the Software
`application.
`In one aspect of the invention, the Server is configured to
`automatically upgrade or update and push each new version
`of an application onto the thin client. The thin client may be
`configured to register with the Server for push-type updates,
`making the Server aware of the client's location.
`The Server may be configured to monitor a remote System
`that may contain a catalog of available updates to determine
`whether new versions of an application are available for
`download to the client. When new versions of the applica
`tion are available, the Server may automatically initiate the
`installation of the Software application updates. Alterna
`tively, the clients, either automatically or in response to a
`user, may request a pull-type installation of new Software
`application or new Software application updates.
`In both push and pull cases, the Server contacts the client
`and prepares to install the application update. The user may
`have the application open-that is, executing or otherwise in
`an operational State-when the Server attempts to push the
`new application onto the client. An option may be provided
`to Save the current State of the client's target Software
`application. If the option is Selected, the System determines
`
`8
`
`

`

`3
`that the current State is persistent and Selects where the State
`will be Stored, i.e., on the Server, locally, on a diskette, etc.
`In one embodiment, the client State is transmitted from the
`client to the server to be stored on the server temporarily
`during the upgrading of the application onto the client. The
`Server, accordingly, receives the current State from the client
`and Stores it in a designated location.
`Upon Storing the current State on the Server, the updated
`version of the application is pushed onto the client. In
`addition, in one embodiment, once the client has received
`the updated version, it invalidates the application cache from
`the previous version of the application.
`The current State Stored on the Server is then pushed back
`onto the client and control is returned to the client. The client
`may then reconcile any data version changes from the
`previous version of the application and the newly down
`loaded version.
`In one embodiment the user is presented with the option
`of resuming with the State that was open at the time of the
`push, restarting the application, and/or restarting the entire
`client WorkStation. New application installation may also be
`conducted using the System and method of the present
`invention.
`The server may thus update both thin and non-thin clients
`automatically and remotely when the Server becomes aware
`of new versions of the Software application. The update
`proceSS may also be transparent to the client, making the
`updated version available with minimal or no disruption to
`the user of the client.
`These and other objects, features, and advantages of the
`present invention will become more fully apparent from the
`following description and appended claims, or may be
`learned by the practice of the invention as Set forth herein
`after.
`
`5
`
`15
`
`25
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`35
`
`40
`
`45
`
`In order that the manner in which the advantages and
`objects of the invention are obtained will be readily under
`stood, a more particular description of the invention briefly
`described above will be rendered by reference to specific
`embodiments thereof which are illustrated in the appended
`drawings. Understanding that these drawings depict only
`typical embodiments of the invention and are not therefore
`to be considered to be limiting of its Scope, the invention will
`be described and explained with additional Specificity and
`detail through the use of the accompanying drawings in
`which:
`FIG. 1 is a Schematic block diagram illustrating a com
`puter System Suitable for implementing the Software update
`50
`System and method of the present invention.
`FIG. 2 is a Schematic block diagram illustrating one
`embodiment of a System for upgrading a new application to
`a newer version over a network.
`FIG. 3 is a Schematic block diagram illustrating a new
`application being transferred to a server, a current State of
`the workstation, and embodiments of both a client-side
`module and Server-side module.
`FIG. 4 is a Schematic block diagram illustrating one
`embodiment of the client-side module and the server-side
`module of FIG. 3.
`FIG. 5 is a flow chart block diagram illustrating one
`embodiment of a push method of the present invention for
`remotely updating Software applications.
`FIG. 6 is a flow chart block diagram illustrating one
`embodiment of a pull method of the present invention for
`remotely updating Software applications.
`
`55
`
`60
`
`65
`
`US 7,003,767 B2
`
`4
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`
`The presently preferred embodiments of the present
`invention will be best understood by reference to the draw
`ings, wherein like parts are designated by like numerals
`throughout. It will be readily understood that the compo
`nents of the present invention, as generally described and
`illustrated in the figures herein, may be arranged and
`designed in a wide variety of different configurations. Thus,
`the following more detailed description of the embodiments
`of the System, and method of the present invention, as
`represented in the figures, is not intended to limit the Scope
`of the invention, as claimed, but is merely representative of
`presently preferred embodiments of the invention.
`FIG. 1 is a Schematic block diagram illustrating one
`example of a computer System 10 Suitable for employing the
`system and method of the present invention. In FIG. 1, one
`or more computer Stations 12 may be hosted on a network
`14. Typical networkS 14 generally comprise wide area
`networks (WANs), local networks (LANs) or interconnected
`Systems of networks, one particular example of which is the
`Internet and the World Wide Web supported on the Internet.
`A typical computer Station 12 may include a processor or
`CPU 16. The CPU 16 may be operably connected to one or
`more memory devices 18. The memory devices 18 are
`depicted as including a non-volatile Storage device 20 Such
`as a hard disk drive or CD-ROM drive, a read-only memory
`(ROM) 22, and a random access volatile memory (RAM)
`24. Preferably, the computer station 12 operates under the
`control of an operating system (OS) 25, such as MVS(R),
`OS/390R, AIX(R), OS/2(R), WINDOWS NT(R), WIN
`DOWSCR, UNIX(R), and the like.
`The computer Station 12 of System 10 in general may also
`include one or more input devices 26, Such as a mouse or
`keyboard, for receiving inputs from a user or from another
`device. Similarly, one or more output devices 28, Such as a
`monitor or printer, may be provided within or be accessible
`from the computer System 10. A network port Such as a
`network interface card 30 may be provided for connecting to
`outside devices through the network 14. In the case where
`the network 14 is remote from the computer Station, the
`network interface card 30 may comprise a modem, and may
`connect to the network 14 through a local acceSS line Such
`as a telephone line.
`Within any given station 12, a system bus 32 may
`operably interconnect the CPU 16, the memory devices 18,
`the input devices 26, the output devices 28, the network card
`30, and one or more additional ports 34. The system bus 32
`and a network backbone 36 may be regarded as data carriers.
`As such, the system bus 32 and the network backbone 36
`may be embodied in numerous configurations. For instance,
`wire, fiber optic line, wireleSS electromagnetic communica
`tions by visible light, infrared, and ratio frequencies may be
`implemented as appropriate.
`In general, the network 14 may comprise a single local
`area network (LAN), a wide area network (WAN), several
`adjoining networks, an intranet, or as in the manner
`depicted, a System of interconnected networkS Such as the
`Internet 40. The individual stations 12 communicate with
`each other over the backbone 36 and/or over the Internet 40
`with varying degrees and types of communication capabili
`ties and logic capability. The individual Stations 12 may
`include a mainframe computer on which the modules of the
`present invention may be hosted.
`Different communication protocols, e.g., ISO/OSI, IPX,
`TCP/IP, may be used on the network. In the case of the
`
`9
`
`

`

`US 7,003,767 B2
`
`15
`
`25
`
`35
`
`40
`
`S
`Internet, a single, layered communications protocol (TCP/
`IP) generally enables communication between the differing
`networkS 14 and Stations 12. Thus, a communication link
`may exist, in general, between any of the Stations 12.
`In addition to the stations 12, other devices may be
`connected on the network 14. These devices may include
`application Servers 42, and other resources or peripherals 44,
`Such as printers and Scanners. Other networks may be in
`communication with the network 14 through a router 38
`and/or over the Internet.
`Referring now to FIG. 2, a Schematic block diagram of
`one example of an environment for implementing the
`present invention is shown including a plurality of WorkSta
`tions 12. In one embodiment, the workstations 12 are
`connected via a network 14 which operates in conjunction
`with a server 42. The server 42 is connected to the Internet
`40, where a site 45 hosting an application 46 is located. In
`one embodiment, the application is a Java" based applica
`tion, but the present invention is intended for use with any
`Suitable type of application.
`Referring now to FIG. 3, under one embodiment of the
`present invention, the Server 42 monitors the application
`host 45 (of FIG. 2) for notification of any updates to the
`application 46. When Such notice is received, the updated
`version of the application 46 is downloaded acroSS the
`Internet 40 or other Suitable communication medium to the
`Server 42. The reception of the notice and the downloading
`of the updates are preferably conducted automatically, but
`may also be conducted manually. The server 42 is preferably
`configured to Store the application update and to automati
`cally push the updated version of the application 46 onto
`registered workstations 12 using a server-side update mod
`ule 50. The updated version of the application 46 may also
`be downloaded and/or transmitted to the Stations 12 upon
`request of the stations 12. The current state 48 of the
`workstations 12 may be temporarily stored on the server 42
`during the upgrading of the application 46, and then later
`restored, as will be discussed.
`FIG. 4 illustrates one embodiment of the server-side
`update module 50 and the client-side update module 52 of
`FIG. 3. Within the server-side update module 50 are shown
`a server register module 54, a client location module 56,
`anew object location module 58, a generate list of objects
`module 60, a current state receiver module 62, an install new
`object module 64, a server current state transfer module 66,
`a server-side interface 68, and a transfer control module 70.
`In the depicted embodiment, the server-side interface 68 is
`configured to connect with the client-Side update module 52
`through a network connection 14.
`The client-side update module 52 is shown provided with
`a Server communication module 72, a client-side interface
`74, a client register module 76, a location information
`module 78, a client current state transfer module 80, a
`receive new object module 82, a invalidate cache module 84,
`a client current State receiver module 86, and a data version
`changes module 88. In the depicted embodiment, the client
`side interface 74 is configured to connect with the server
`side update module 50 through a network connection 14.
`The server communication module 72 is preferably con
`figured to communicate with the server 42 (of FIG. 2) to
`receive any updates that may be available to the System. In
`the case of the client "pulling the update, the client register
`module 76 is configured to register the client for available
`updates. The server register module 54 is preferably con
`figured to record client registration.
`The location information module 78 is preferably config
`ured to inform the server 42 of clients location. The client
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`location module 56 is preferably configured to generate a list
`of all registered clients in which the updated version of the
`application 46 of FIG. 3 is to be distributed to and to record
`the location of each of the registered clients. The new object
`location module 58 is preferably configured to identify any
`new updates that may be available to distribute to the client
`workstation 12 of FIG. 3 and also to the server 42 of FIG.
`3. The generate list of objects module 60 is preferably
`configured to generate a list of objects that are available to
`download onto both thin and non-thin clients.
`The client-side module 52 preferably consists of an
`optional current state transfer module 80 that is configured
`to transfer the current state 48 of the client of FIG. 3 to the
`server 42 for storage. The current state receiver module 62
`is preferably configured to receive and Store the current State
`48 of the client for later restoration. The current state 48 is
`Stored until the updated version of the application 46 is
`upgraded on the WorkStations 12. The upgrading of the
`application 46 of FIG. 3 is preferably conducted with an
`install new object module 64 which is configured to install
`the new application 46 on the registered clients. The receive
`new object module 82 is preferably configured to receive
`information from the install new object module 64 for use in
`installing application updates 47 on the client WorkStations
`12.
`In one embodiment, upon receiving the application update
`47, the client-side update module 52 invalidates the cache
`from the previous version of the application that is replaced
`by the updated version of the application 46. This process
`may be conducted by a cache invalidation module 84. After
`invalidating the cache, the client-Side update module 52
`receives the current state 48 that was temporarily stored on
`the server 42, preferably with a current state transfer module
`66. The current state 48 is then received by the client current
`state receiver module 86 and made accessible to the user of
`the WorkStation 12 having the newly updated application 46
`implemented. Upon receiving the current State 48, the data
`version change module 88 within the client-side module 52
`may be configured to modify the current state 48 to match
`the updates and possible changes brought about from the
`updated version of the application 46 that was recently
`implemented on the workstation 12. The transfer control
`module 70 within the server-side module 50 is configured to
`then pass control back to client module to allow the user to
`continue use of the WorkStation 12.
`FIG. 5 is a Schematic flow chart diagram illustrating one
`embodiment of a push-type method 120 of upgrading and
`installing new versions of a Software application. The
`method 120 begins at a Start Step 122 and progresses to Step
`124. At step 124, the client, which may comprise the
`workstation 12 of FIG. 1, calls a server Such as the server 42
`of FIG.2. During this call, and as indicated at a step 126, the
`client registers to have the updated version of the Software
`application 46 be pushed onto the client, preferably into the
`RAM memory 24 of FIG.1. In a step 128, the location of the
`client is registered with the server 42.
`At a step 130, the server 42 of FIG. 2 determines the
`availability of an updated version of the Software application
`46. The updated version 46 may, for example, be located on
`the Internet 40 or stored on the ROM 22 of FIG. 1. The
`determination of step 130 may be accomplished by the
`Server 42 monitoring a Site Such as a catalog Server of a
`Software vendor for the appearance of newer versions of the
`Software application 46. In addition, a vendor of the soft
`ware application 46 may periodically notify its customers of
`new versions of its Software application 46. In doing So, it
`preferably communicates directly with the server 42.
`
`10
`
`

`

`7
`At a step 132, the Server 42 generates a list of the
`WorkStations 12 that are registered to be updated with the
`updated version of the software application 46. The updated
`version of the Software application is then automatically
`loaded and installed on these workstations 12. Below, the
`update proceSS will be described for a single workStation 12,
`but it should be appreciated that the server 42 is preferably
`configured to update all WorkStations 12 on which the
`Software application 46 to be updated is installed.
`At a step 134, the current client state 48 of the workstation
`12 is Stored temporarily during the upgrading of the Software
`application 46. The client state 48 may be stored on the
`Server 42, or may be Stored locally on non-volatile memory
`20 of the client 12. In one embodiment, the client state 48
`comprises preferences and active data of the client for the
`Software application that are stored in RAM memory 24.
`Data of the software application 46 in RAM memory 24, as
`well as in persistent memory at the time of the update may
`also be stored in a like manner. Because the client state 48
`is Saved, the updating process may be conducted while the
`client computer is in operation, and indeed, while the target
`Software application is open. The term “open' as used herein
`is intended to mean a State of current execution of the
`Software application, including being actively used by a user
`and/or merely operating passively in the background.
`In a Step 136, the Software application update 46 is pushed
`upon the registered WorkStation 12. Many applications,
`particularly Java applications, may have an application
`cache that must be invalidated in order to Successfully
`update the application. Accordingly, in one embodiment, at
`a step 138, the application cache from the previous version
`of the software application is invalidated and flushed. In
`Java applications, an application’s objects are tied to the
`class definition loaded by a class loader. The class loader
`houses the application class. In one embodiment, in order to
`clear or “invalidate' the application cache, a new class
`loader is created, forcing the old class loader's cache to be
`“forgotten.” That is, the old class loader is disassociated with
`the Software application and the previously occupied
`memory may then be automatically reclaimed by a utility
`Such as Java's System garbage collector.
`The new class loader may be created in one embodiment
`by a) creating a new instance of an upgradable Software
`component (object); b) working with this instance for a
`period of time until a new version becomes available; c)
`defining and instantiating a new class loader (or instantiating
`a class loader derived from the System class loader); d)
`instantiating anew version of the Software component using
`the new class-loader; e) casting the new version of the
`component to an identical interface accessible by both class
`loaders; and f) assigning the casted component to the handle
`of the original object.
`At a step 140, the current state 48 is passed from the
`Server back to the registered WorkStation 12. In a step 142,
`any data version changes from the newly downloaded Soft
`ware application 46 are reconciled. As an example of
`reconciling data, consider an instance in which an updated
`version of the application 46 that may be a word processor
`makes a bold lettering option unavailable. In this example,
`active data of the current State that are configured with bold
`lettering are modified. That is, the bold lettering is auto
`matically changed to a default command Such as underlining
`or plain text when the current State is passed back to the
`client. In a step 144, control is passed back to the WorkSta
`tion 12, and the newly downloaded software application 46
`can be accessed without having to reboot the WorkStation 12
`or the application 46.
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 7,003,767 B2
`
`8
`FIG. 6 is a Schematic flow chart diagram illustrating one
`embodiment of a pull-type method 150 of automatically
`upgrading and installing new versions of a Software appli
`cation. The method 150 begins at a start step 152 and
`progresses to Step 154. At Step 154, the client, Such as the
`workstation 12 of FIG. 1 calls a server, which may comprise
`the server 42 of FIG. 2. During the call, the client then
`requests an update of the Software application 46, as indi
`cated at a step 156.
`At a step 160, a list of objects or components of the
`Software application 46 that are to be updated is generated.
`The Server preferably compiles the list in response to the
`version of the update requested by the client. At a Step 162,
`the current state 48 of a client 12 is stored temporarily during
`the upgrading or updating of the Software application 46, as
`discussed for step 134. In a step 164, the software applica
`tion update 46 is automatically transmitted to and installed
`upon the client 12. After the Software application update 46
`has been automatically loaded and installed on the client 12,
`the application cache from the previous version of the
`Software application is preferably invalidated Substantially
`in the manner described above with respect to step 138 of
`FIG. 5.
`At a step 168, the current state 48 is returned to the client.
`The current state 48 is thus either returned from the server
`42, or is retrieved from no

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket