|Publication number||US6175855 B1|
|Application number||US 08/968,666|
|Publication date||Jan 16, 2001|
|Filing date||Nov 12, 1997|
|Priority date||Dec 20, 1996|
|Also published as||DE59712859D1, EP0849666A2, EP0849666A3, EP0849666B1|
|Publication number||08968666, 968666, US 6175855 B1, US 6175855B1, US-B1-6175855, US6175855 B1, US6175855B1|
|Inventors||Matthias Reich, Steffen Seidler|
|Original Assignee||Siemens Aktiengesellschaft|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (24), Non-Patent Citations (4), Referenced by (38), Classifications (8), Legal Events (4)|
|External Links: USPTO, USPTO Assignment, Espacenet|
The invention concerns a method for instantiating (representative by a concrete instance) a class having different versions that is defined in an object-oriented programming language.
A (software) agent system essentially has two components, the agent platform and the agent itself. A monitoring and administration tool is often also present as a third component. An agent (also called a robot, wanderer or spider in the Internet) is a program that, equipped with the rights of a particular user, exists unsupervised for a time dependent on the concrete function to be fulfilled, and during this time can meet with other agents and work together with them. So that an agent does not paralyze computer systems in the manner of a virus, it must “identify” itself, and is permitted to have only a finite life span.
In general, two types of agents are distinguished. A stationary agent is executed by only one computer from the beginning of the program up to its end. In contrast, a mobile agent is executed by different computers at different times in its life cycle. An agent platform must exist on the computers that are supposed to be reachable for the agents. This agent platform provides the agent with, among other things, services for migration, (controlled) system access and message transmission and reception. The monitoring and administration tool enables the manual start of agents, the overview of data collected by agents and the display of other items of information concerning the agent system.
During its running time, a system of mobile agents can be distributed to many computers within a network. For this purpose, it is the case both that a platform is necessary at each (node) computer in the network, and that agents, data structures and message objects can move from computer to computer. If, in the course of the software life cycle, errors are detected in one of these (sub-) programs, or if parts of the software are changed for other reasons (e.g. improvement of algorithms, adaptation to changed environment, and, with limitations, change of function as well), then under some circumstances a termination, and, after the corresponding changes, a subsequent restart of the overall system can be required.
An object of the invention is to be able to carry out changes having different versions in system parts even during the running time of the software system, whereby these changes are gradually to come to prevail in the system as a whole.
According to the invention, a method is provided for instantiating a class having different versions defined in an object-oriented programming language. A computer network is provided in which computers are arranged in distributed fashion in a network connection, a platform for operation of mobile software agents being provided by each of the computers. In a first step 1a, if a particular version of an instantiatable class is requested, the requested version is used and a jump is made to a third step 1c. In a second step 1b, otherwise, using a newest version of the instantiatable class, the platform investigates whether the newest version is already locally available, and, if warranted, a jump is made to a fourth step 1d, otherwise, a class definition of a corresponding version is retrieved from a class file server and a jump is made to the fourth step 1d. In a third step 1c, if the class definition of the corresponding version is already locally available, the jump is made to the fourth step 1d, otherwise a search is made for the class definition, and if the class definition is found, a jump is made to the fourth step 1d, otherwise, the class is not instantiated. In the fourth step 1d, the class is instantiated according to a version to be used of the class definition.
The method of the invention thus makes it possible to carry out changes in system parts even during the running time, whereby these changes then spread out step-by-step in the overall system. A distinction between the different program parts is possible by integrating a version administration into the design of the dynamic updating. In this way, it is for example possible, given distributed software development, to integrate standardly used version administration systems and the information thus present concerning the different versions.
Java can be used as a programming language for implementing the mobile agent system. It is equally possible to use any other programming language that provides a dynamic loading of classes. Relevant expansions of programming languages, such as for example C++, are also conceivable.
According to the demands made, the classes for the platform, the agents and various objects referenced by them (among others, data structures and messages) should be versionable. By “platform” is meant, for example, any computer system that can act as a node in the network and that creates a program interface (operating software) for the (software) agents.
If changes are carried out in non-faulty classes, e.g. with respect to efficiency, the old versions of the objects should terminate their work as provided. There is thus the possibility of the simultaneous existence of objects of different versions alongside one another, which in turn reference objects of different versions. It is thus necessary to provide the old class definitions parallel to new class definitions, at least up to the “dying out” of all objects of one version, as well as of the objects referencing them. In faulty versions, in contrast, the possibility can be created of the annihilation of all objects of the old version as rapidly as possible after the importing of the new class.
For the selection of the respective “matching” version of the required class, a separate class loader mechanism is necessary.
The method of the invention for the dynamic updating, having different versions, of classes of a mobile agent system comprises the updating of the platform, the updating of classes having different versions, and the instantiation of an object of a class having different versions.
FIG. 1 shows a block diagram representing the updating of a platform;
FIG. 2 shows a block diagram representing the updating of versionable classes;
FIG. 3 shows a block diagram representing the instantiation of an object of a versionable class; and
FIG. 4 shows a computer network providing platforms with which the method of the invention is implemented.
FIG. 4 shows the computer network 100 on which the method of the invention is implemented. The computer network 100, as is well known in the art, typically has an administration computer 101 providing an administration platform, and computers 102, 103, and 104 providing platforms.
FIG. 1 shows the possibility of sequentially initiating the updating of all platforms in the computer network system 100 of FIG. 4. It is thus important that there remains sufficient time for the agents to find an alternate possibility in the form of an adjacent platform. So that all methods of the respective platform used by other objects are also present in new platform versions, it is advantageous to determine precisely the programming interface of the platform, i.e. the signatures of the methods that can be used by other objects. Given an implementation in Java, this takes place by means of the definition of an ‘interface’ that implements every version of the platform.
The platform to be replaced receives a signal for shutdown (step 1a). A defined time interval, whose length is transmitted, for example, with the shutdown signal, defines the waiting time until the actual shutting down of the platform. It is advantageous to communicate the impending shutdown to the agents existing locally on this platform to be shut down (step 1b). All agents newly arriving on this platform are turned away, while a departure of agents (step 1c) is allowed. After the expiration of the time interval up to the shutting down of the platform (step 1d), the agents still existing locally on the platform are terminated (step 1e). Particularly important agents can thus be at least partially saved, so that they can be restarted after the updating of the platform. In addition, the data that are supposed to survive the shutdown of the platform are saved, e.g. data from the blackboard or counters for the labeling of messages. Finally, the updating of the platform is carried out (step 1f).
FIG. 2 shows a block diagram for the updating of versionable classes. After the importing of a new version of a class definition (step 2a), all class file servers are informed of the existence of this new class version (step 2b). If later an agent of this class is newly produced, and its class definition is requested at the class file server without indicating a specific version, the most current version is always supplied and instantiated. It is thus ensured that the entire system is up-to-date. If the old version of the agent is to be destroyed (step 2e), e.g. because it is faulty, then a broadcast must be sent to all agents of this version to terminate themselves (step 2f). It is thereby to be checked whether, despite possible new data structures, the data of the old agents are to be saved so that they can be used by those of a new version. In the case of a simple change of function or expansion of the function of an agent, the old agents die out “naturally,” since non-faulty programs can terminate their work as provided.
As mentioned above, there are classes that do not represent any abstract specification of agents or platforms. These classes stand, for example, for data structures. It is possible that the change of functioning of an agent also causes a change of the data structure it uses. Just as with the agent classes, when a new class of a different type is imported, the class server is informed via broadcast (step 2b). If later an object of this class is instantiated without the predetermination of a particular version, the most current version is always used. It is thereby ensured that objects (e.g. agents) that are not referred to a particular version of the objects referenced by them are always provided with the most up-to-date version of a class definition. The agents themselves (possibly also all other objects that reference versioned objects) keep a version table in which the version of a class is listed for each already-referenced (versionable) object. The class loader of the agent requests the class definition of the indicated version on the basis of this version table.
If, as shown in FIG. 2, a new class version is to be imported, then in step 2b the class file server is notified via broadcast of the existence of this new class version. The individual class file servers request the new class version from the administration platform whenever they require this information (on demand, step 2c).
If the new class version is not an agent class, the platforms are notified of the new class version via broadcast (steps 2d, 2h), and the class file servers retrieve the new class definition when an object of a class is generated for the first time (step 2g).
If the new class version is an agent class and if the old class version is supposed to be additionally provided (steps 2d, 2e), all platforms are notified of the new class version via broadcast (step 2h), and, when the object corresponding to the new class definition is instantiated for the first time, the respective platform retrieves this new class definition from the class file server (step 2g).
If the new class version is an agent class, and if the old class version is supposed to die (steps 2d, 2e), then all platforms are notified via broadcast of the new class version of the agent, and the death of the old agents is triggered (step 2f), whereby the agent data are saved as warranted. If the respective platform generates for the first time an agent with the new class version, the platform retrieves the class definition from the class file server (step 2g).
For the administration, i.e. for the importing of new class definitions and the erasing of old ones, there exist a few class file servers in the network, at which the class definition is present as a data file inside a particular directory structure. If a new version of a class is to be brought into the system, the corresponding data file is stored in the import directory of one of the class file servers by the administrator. It is thus advantageous to indicate to the import tool running on this computer (usable in the context of an administration and monitoring program) only the name of the stored class data file. From the indicated class data file, this tool generates the corresponding class instance by which an object of the class is instantiated. If, as in the example, an implementation in Java is assumed, then the version number anchored in the respective object can be determined by calling the method getVersion(), which supplies the version integrated into the source text by the version administration of the programming environment. The tool learns the real name of the class via the method getName() of the class instance, provided by Java for each class. After checking the already-present versions (do not import any old or already-present versions), the data file is copied into the corresponding directory, whereby the new data filename contains both the class name and the version number. By this means, the version numbers (assigned once by the version administration used in the software development) are automatically taken over, and use errors are thus reduced. An additional advantage of the version anchored in the class itself is the possibility of being able also to determine at a later time, without knowledge of the filename or of the version tables used in the system, the version of an object of a versionable class. In addition, the tool has the task of notifying the class server of the existence of new class definitions via broadcast.
A development of the method of the invention is that the new class definitions are respectively imported only to one of the class servers. However, the information concerning new class definitions is to be made equally accessible to all class file servers existing in the network, which requires an adjustment. After the importing of a new version of a class, an item of information concerning the new version of the class and concerning the class file servers provided to this class is transmitted to all class file servers in the network. The requesting of this class definition is left to the individual class file server itself. By means of this request mechanism it is ensured that as soon as a class file server learns of a new class definition, this definition can be requested by it.
FIG. 3 shows a block diagram for the instantiation of an object of a versionable class. In step 3a, it is assumed that an object of a versionable class is to be instantiated. If no particular version of the class definition is requested (step 3b), then according to standards the newest version of the class definition is used for the instantiation of the object (step 3c). If this newest class definition is already locally available on the platform (step 3d), the object is instantiated (step 3j); otherwise, the current class definition must be retrieved by the known class file server (step 3i) and the object is substantially instantiated (step 3j).
If, in contrast, a particular version of the class definition is requested for the instantiation of an object (step 3b), then, if the requested class definition is locally available on the platform (step 3e), the object is instantiated (step 3j); otherwise, according to the requested class definition a search takes place e.g. successively for a predecessor platform, an originating platform of the agent, and finally for the class file server (step 3f). If the requested class definition is not found (step 3g), the object cannot be instantiated (step 3h); otherwise, the object is instantiated in a manner corresponding to the version of the class definition to be used (step 3j).
Due to the broadcasts to the class file server, the current versions of the class definitions are respectively known to them. The version of the agent is prefixed to the message that transmits to the agents. This version is either locally present at the destination of the agent transport, or must be sought. The search for the class definition runs through three stages:
1. The platform of the agent sender, because the agent may have referenced an object of this class definition there, and the class definition may thus already be held in the memory of the sender platform,
2. the platform of the agent birthplace, since an object of this class definition may have been instantiated there, and, finally,
3. the class file server responsible for the local platform.
As an alternative to this, other search strategies can also be used; e.g., given the presence of a local class file server a search for the requested class definition can first take place therein, in order to avoid inquiries via the network.
In the exemplary embodiment, a separate class loader is instantiated for each agent, the loader having a version table of the classes already referenced. The agent itself also keeps a table of requested class versions. The version table of the class loader is filled with the entries of the version table of the agent upon arrival of the agent.
If an object referenced by the agent is now instantiated, it is checked in the version table of the agent whether an object of this class was already referenced, and, if so, which version this object is. If no object of this class was yet referenced previously, i.e., if this class is not listed in the version table of the agent, then the newest version that was made known to the platform via broadcast is used. If this version is not yet present in the memory of the platform, it is sought and loaded according to the above search strategy. In the version table of the agent, the class and the version of the class definition used are then entered.
By means of the mechanism contained in the method of the invention for administration of the versions of class definitions, it is ensured that agents can use objects of obsolete class definitions, or that agents of older versions can also be processed on a platform. Since error-free obsolete versions of agents or objects are in general supposed to terminate their task as provided, the old class definitions must be “canceled” for a certain time. All class definitions already required once are held in the memory by the platform. The existence of a mechanism that decides when to discard obsolete class definitions is thus advantageous. Thus, for example, an administrator could manually enable the different versions by means of the monitoring and administration tool. Another advantageous mechanism for decisions concerning obsolete class definitions is in the monitoring of the individual accesses to objects of versioned classes with a reference counter. If there exists a new version of the class, and the counter of the old version is equal to 0, the corresponding old class definition can be discarded. A third possibility is in the indication of a remaining life span for a class already during its importing, the life span deploying its effect after the occurrence of a new version of this class.
Although various minor changes and modifications might be proposed by those skilled in the art, it will be understood that our wish is to include within the claims of the patent warranted hereon all such changes and modifications as reasonably come within our contribution to the art.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5317688||Feb 26, 1993||May 31, 1994||Hewlett-Packard Company||Software agent used to provide instruction to a user for a plurality of computer applications|
|US5404525 *||Sep 30, 1992||Apr 4, 1995||International Business Machines Corporation||Efficient method router that supports multiple simultaneous object versions|
|US5421016 *||Dec 12, 1991||May 30, 1995||International Business Machines Corporation||System and method for dynamically invoking object methods from an application designed for static method invocation|
|US5499365 *||Aug 4, 1993||Mar 12, 1996||International Business Machines Corporation||System and method for controlling versions of objects in an object oriented computing environment|
|US5551029 *||Aug 18, 1993||Aug 27, 1996||Lucent Technologies Inc.||Method for associating integrity maintenance constraints with data object classes in an object-oriented database|
|US5555418 *||Jan 30, 1995||Sep 10, 1996||Nilsson; Rickard||System for changing software during computer operation|
|US5557793 *||Jan 31, 1995||Sep 17, 1996||Unisys Corporation||In an object oriented repository, a method for treating a group of objects as a single object during execution of an operation|
|US5630066 *||Dec 20, 1994||May 13, 1997||Sun Microsystems, Inc.||System and method for locating object view and platform independent object|
|US5630135 *||Jun 3, 1994||May 13, 1997||Hitachi, Ltd.||Multiple-execution method of multiple-version programs and computer system therefor|
|US5659736 *||Feb 14, 1996||Aug 19, 1997||Mitsubishi Denki Kabushiki Kaisha||Management information base and method in an OSI management system|
|US5684984 *||Sep 29, 1994||Nov 4, 1997||Apple Computer, Inc.||Synchronization and replication of object databases|
|US5692195 *||Jan 17, 1995||Nov 25, 1997||International Business Machines Corporation||Parent class shadowing|
|US5710894 *||Apr 4, 1995||Jan 20, 1998||Apple Computer, Inc.||Dynamic classes and graphical user interface for same|
|US5729744 *||Jun 10, 1996||Mar 17, 1998||International Business Machine Corp.||Method and system of enhanced versioning control of objects in a data processing system using change control information which includes reasons for changes|
|US5764992 *||Jun 6, 1995||Jun 9, 1998||Apple Computer, Inc.||Method and apparatus for automatic software replacement|
|US5774723 *||Apr 3, 1995||Jun 30, 1998||International Business Machines Corporation||Efficient method router that supports multiple simultaneous object versions|
|US5794030 *||Dec 4, 1995||Aug 11, 1998||Objectivity, Inc.||System and method for maintenance and deferred propagation of schema changes to the affected objects in an object oriented database|
|US5802367 *||Jan 16, 1996||Sep 1, 1998||Microsoft Corporation||Method and system for transparently executing code using a surrogate process|
|US5802524 *||Jul 29, 1996||Sep 1, 1998||International Business Machines Corporation||Method and product for integrating an object-based search engine with a parametrically archived database|
|US5862325 *||Sep 27, 1996||Jan 19, 1999||Intermind Corporation||Computer-based communication system and method using metadata defining a control structure|
|US5867709 *||Oct 18, 1995||Feb 2, 1999||Kapre Software, Inc.||Method and system for reusing customizations to a software product|
|US5905987 *||Mar 19, 1997||May 18, 1999||Microsoft Corporation||Method, data structure, and computer program product for object state storage in a repository|
|US5978577 *||Mar 17, 1995||Nov 2, 1999||Csg Systems, Inc.||Method and apparatus for transaction processing in a distributed database system|
|EP0747811A2||May 7, 1996||Dec 11, 1996||International Business Machines Corporation||A design pattern for instantiating objects of unknown type in object-oriented applications|
|1||"Intelligent Agents: An Emerging Technology for Next Generation Telecommunications?"-Magedanz et al-INFOCOM '96, Mar. 24-28, 1996, San Francisco CA, USA, p. 1-9.|
|2||"Intelligent Agents: An Emerging Technology for Next Generation Telecommunications?"-Magedanz et al—INFOCOM '96, Mar. 24-28, 1996, San Francisco CA, USA, p. 1-9.|
|3||Getting Started with Java-p.3-9 (no Filing Date).|
|4||Getting Started with Java—p.3-9 (no Filing Date).|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US6272678 *||Nov 4, 1998||Aug 7, 2001||Hitachi, Ltd||Version and configuration management method and apparatus and computer readable recording medium for recording therein version and configuration management program|
|US6415435 *||Mar 18, 1999||Jul 2, 2002||International Business Machines Corporation||Method and apparatus for determining compatibility of parent classes in an object oriented environment using versioning|
|US6418463 *||Dec 17, 1998||Jul 9, 2002||Ncr Corporation||Method and apparatus for negotiating contract terms for execution of a mobile software agent on a host computer|
|US6466963 *||Apr 13, 1999||Oct 15, 2002||Omron Corporation||Agent system with prioritized processing of mobile agents|
|US6675381 *||Aug 11, 2000||Jan 6, 2004||Mitsubishi Denki Kabushiki Kaisha||Software-module dynamic loader, a software-module dynamic loading method and a medium storing the software-module dynamic loading method|
|US6845503 *||May 1, 2000||Jan 18, 2005||Sun Microsystems, Inc.||System and method for enabling atomic class loading in an application server environment|
|US6981251 *||Aug 11, 2000||Dec 27, 2005||Siemens Aktiengesellschaft||Agent system for mobile agents, computer network and method for downloading an agent system from a host computer to a client computer of a computer network|
|US7016922 *||Apr 27, 2000||Mar 21, 2006||Autodesk, Inc.||Intelligent object versioning|
|US7181511||Apr 15, 2002||Feb 20, 2007||Yazaki North America, Inc.||System and method for using software objects to manage devices connected to a network in a vehicle|
|US7197509||Jul 31, 2003||Mar 27, 2007||International Business Machines Corporation||Method, system, and computer program product for managing persistent data across different releases|
|US7266816 *||Apr 30, 2001||Sep 4, 2007||Sun Microsystems, Inc.||Method and apparatus for upgrading managed application state for a java based application|
|US7370072||Jul 8, 2002||May 6, 2008||Electronic Evidence Discovery, Inc.||System and method for collecting electronic evidence data|
|US7370322 *||Apr 11, 2001||May 6, 2008||Sun Microsystems, Inc.||Method and apparatus for performing online application upgrades in a java platform|
|US7475107||Feb 6, 2003||Jan 6, 2009||Electronic Evidence Discovery, Inc.||System and method for managing distributed computer processes|
|US7536434 *||Sep 30, 2004||May 19, 2009||Avaya Inc.||Global dynamic persistent information architecture|
|US7882501 *||Feb 1, 2011||Oracle America, Inc.||System and method for enabling dynamic modifed class reloading in an application server environment|
|US7962410 *||Jun 28, 2002||Jun 14, 2011||Pitney Bowes Inc.||Customizable software agents in an electronic bill presentment and payment system|
|US8205193||Jun 11, 2001||Jun 19, 2012||Hewlett-Packard Development Company, L.P.||Runtime updating of virtual machine class files|
|US8418161||Dec 1, 2008||Apr 9, 2013||International Business Machines Corporation||System and method for loading a called class file table with data indicating a highest version of a class file|
|US8555252 *||Oct 1, 2010||Oct 8, 2013||Alibaba Group Holding Limited||Apparatus and method for loading and updating codes of cluster-based java application system|
|US8903976 *||Dec 15, 2011||Dec 2, 2014||Cisco Technology, Inc.||Approach for managing mobile agents in networks|
|US20030046443 *||Sep 6, 2001||Mar 6, 2003||Roch Glitho||Updating mobile agents|
|US20030220871 *||May 22, 2002||Nov 27, 2003||Clarke William D.||Customizable electronic bill presentment and payment system and method|
|US20040002919 *||Jun 28, 2002||Jan 1, 2004||Tosswill Andrew R.||Customizable software agents in an electronic bill presentment and payment system|
|US20040006588 *||Jul 8, 2002||Jan 8, 2004||Jessen John H.||System and method for collecting electronic evidence data|
|US20040006589 *||Feb 6, 2003||Jan 8, 2004||Electronic Evidence Discovery, Inc.||System and method for managing distributed computer processes|
|US20050027668 *||Jul 31, 2003||Feb 3, 2005||International Business Machines Corporation||Method, system, and computer program product for managing persistent data across different releases|
|US20050076343 *||Dec 17, 2002||Apr 7, 2005||Wolfgang Kammhuber||Persistent storage of network management data using object references|
|US20060047552 *||May 20, 2005||Mar 2, 2006||Epic Systems Corporation||Smart appointment recall method and apparatus|
|US20080172411 *||Dec 27, 2007||Jul 17, 2008||Canon Kabushiki Kaisha||Object data processing method and apparatus|
|US20100131478 *||Dec 1, 2008||May 27, 2010||International Business Machines Corporation||System and method for loading a called class file table with data indicating a highest version of a class file|
|US20110265071 *||Oct 1, 2010||Oct 27, 2011||Alibaba Group Holding Limited||Apparatus and Method for Loading and Updating Codes of Cluster-Based Java Application System|
|US20120089661 *||Dec 15, 2011||Apr 12, 2012||Kenneth John Roberts||Approach for managing mobile agents in networks|
|EP1267259A2 *||Dec 17, 2001||Dec 18, 2002||Hewlett-Packard Company||Runtime updating of virtual machine class files|
|WO2002065228A2 *||Feb 13, 2002||Aug 22, 2002||Lux Inflecta Ehf||Distributed computing system|
|WO2002065228A3 *||Feb 13, 2002||Jul 29, 2004||Lux Inflecta Ehf||Distributed computing system|
|WO2002084479A2 *||Apr 5, 2002||Oct 24, 2002||Sun Microsystems, Inc.||Method and apparatus for performing online application upgrades in a java platform|
|WO2002084479A3 *||Apr 5, 2002||Apr 1, 2004||Sun Microsystems Inc||Method and apparatus for performing online application upgrades in a java platform|
|U.S. Classification||709/202, 709/223, 719/317|
|International Classification||G06F9/445, G06F9/44|
|European Classification||G06F8/67, G06F9/445|
|Nov 12, 1997||AS||Assignment|
Owner name: SIEMENS AKTIENGESELLSCHAFT, GERMANY
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:REICH, MATTHIAS;SEIDLER, STEFFEN;REEL/FRAME:008817/0790;SIGNING DATES FROM 19971103 TO 19971105
|Jun 14, 2004||FPAY||Fee payment|
Year of fee payment: 4
|Jun 19, 2008||FPAY||Fee payment|
Year of fee payment: 8
|Jun 11, 2012||FPAY||Fee payment|
Year of fee payment: 12