The present invention relates generally to distributed computer systems, and more specifically, to managing and activating objects in distributed computer systems.
A distributed computer system is a network of computer processors that although geographically separated, are linked together functionally. It is often desirable to execute a computer program, or portions of a computer program, simultaneously across several computer processors in the distributed system. In such an environment, protocols coordinating the various portions of the program(s) are necessary.
Distributed computing systems executing object-oriented programming models are known. Essentially, in these systems, programs are written as an aggregation of objects, each of which may reside on and be executed on a different computer in the distributed system.
Typically, in an object-oriented distributed system, a local computer system, called the client, may access objects on remote computer systems. If the objects to be accessed on the remote computer system take up processor resources, i.e., if they consume physical or virtual memory and have a thread of control, they are said to be “active.” Examples of such active objects include running programs or objects that are part of active programs. Such objects are always taking up resources from the physical machine, even when they are not doing active work on behalf of themselves or at the request of some other object.
A “passive” object, on the other hand, refers to a presently non-active object on the remote computer. If a passive object is “activatable,” it may, at the request of the client computer system, be brought into an active state. Objects may be passive simply because they have never been instantiated. Alternatively, to save system resources, active objects may be de-activated and become passive. In particular, for active objects that have become quiescent, it may be advantageous for the computer to save the state information of the object to a stable storage medium, such as a magnetic disk, and release any memory or threads of control associated with the object. The de-activated object does not take up physical or virtual memory and is not associated with a control thread, although it continues to exist and may be made active when called.
One known distributed system capable of activating objects is the object management groups Common Object Request Broker Architecture (CORBA) system. In the CORBA system, remote objects are always considered by the client to be potentially passive, and thus activatable, regardless of whether the object is actually active or passive. Additionally, although some objects at a remote system may be similar to one another, and capable of benefiting from a sharing of common resources, CORBA does not provide for the associating of similar objects.
There is, therefore, a need for a distributed system object management architecture that solves the above mentioned limitations found in the prior art.
Objects and advantages of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The objects and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.
To achieve the objects and in accordance with the purpose of the invention, as embodied and broadly described herein, a first aspect of the present invention includes a method of calling a remote object by a process comprising the steps of: (1) calling the remote object directly using a first address in a faulting remote reference to the remote object when the reference refers to an active instance of the remote object; and (2) calling an activator object using a second address in the faulting remote reference to perform activation of the remote object when the reference to the remote object does not refer to an active instance of the remote object. In an alternative aspect, a computer readable medium contains instructions for performing similar steps.
A second method consistent with the present invention includes a method of handling an object call at a remote site for a remote object, the method comprises the steps of: (1) determining whether a first predefined group of objects corresponding to the called remote object is active; (2) activating the remote object within the first group when the determining step determines that the first group is active; and (3) creating a second group of objects and activating the remote object within the second group when the determining step determines that the first group is not active. As with the first method, an alternative aspect includes a computer readable medium containing instructions for performing similar steps.
Still further, a distributed computer system consistent with the present invention includes a plurality of elements, including first and second computers. The second computer, in particular, receives requests for remote objects from the first computer and executes an object activator performing the steps of: (1) determining whether a first predefined group of objects corresponding to the requested remote object is active; (2) activating the requested remote object within the first group of objects when the determining step determines that the first group of objects is active; and (3) creating a second group of objects and activating the requested remote object within the second group of objects when the determining step determines that the first group of objects is not active.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate several embodiments consistent with this invention and, together with the description, help explain the principles of the invention. In the drawings,
A distributed computer system and related methods consistent with the present invention are described herein. The distributed computer system uses a single interface at the client site to handle calls to call both active and activatable remote objects. Further, remote objects are aggregated into common groups of objects, thereby providing greater security between objects of disparate groups and efficiency between related objects of the same group.
Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
Memory 103 stores one or more computer procedures 104a, 104b, and 104c, such as, for example, a computer program, thread, or object. Computer threads 104a and 104b are programs comprised of Java bytecodes executing through a Java virtual machine 105. The virtual machine is itself a process that when executed on computer 102, translates threads 104a and 104b into computer instructions native to computer hardware 107. In this manner, virtual machine 105 acts as an interpreter for computer hardware 107. In contrast to threads 104a and 104b, program 104c uses instructions native to computer hardware 107, and thus does not require virtual machine 105.
Computer 102 is connected via network 120 to computer 112. Computer 112 includes components similar to those of computer 102, and will therefore not be described further. Although the simple network described above includes only two computers, networks of many computers, or even networks of many thousands of computers, such as the Internet, may be used to implement the concepts of the present invention.
Throughout the remainder of this disclosure, computer system 102 will be described as the requester of remote objects. Computer system 112 executes the remote objects and returns results to computer 102. Although not explicitly shown, a plurality of computer systems 112 may execute multiple objects for a single host computer 102.
Process 202 is a program active on computer 102, such as process 104 in FIG. 1. As shown, process 202 includes a plurality of bytecodes that may be translated from instructions written in the Java programming language, including instruction 203, which is an invocation to a method residing in an object on remote computer 112. The method invocation is preferably defined to be handled by local proxy object 205, which functions as an interface for remote object calls from computer 102 and hides the remote calling protocol from the invocating process.
Proxy 205 may assume one of multiple implementations depending on the status of the object being referenced; such as whether the object is active or activatable (i.e., presently passive). When called by process 202, proxy 205 packages the call using the appropriate implementation and forwards it to remote computer 112. Results received from the remote computer, such as results from the method invocation, are passed back through proxy 205 to process 202.
As described in more detail below, proxy 205 enables process 202 to make a single method invocation for both active and activatable objects. In other words, process 202 is not required to monitor whether a remote object is active or activatable.
Activation of remote objects by proxy 205 is implemented through an object reference known as a faulting remote reference, illustrated by reference 210. For each remote object, faulting remote reference 210 is used to “fault in” the object's reference upon the first method invocation to the object. Faulting remote reference 210 includes a persistent handle (an activation identifier) 211 and a transient remote reference 212. Both persistent handle 211 and transient remote reference 212 are obtained from the remote computer corresponding to the remote object, and contain address information for contacting the remote computer, such as the appropriate network address and port number, and address information more specific to the remote object being referred. Persistent handle 211 is the more general reference and references an activator entity (described in more detail below) at the remote host. Reference 212 is the actual “live” reference to the active remote object, and is used to contact the remote object directly.
In operation, upon invocation of a method requiring a remote object, proxy 205 checks reference 210. A null value in “live” reference 212 indicates that the remote object may become passive (i.e., it is not an active-only object), and proxy 205 uses activation identifier 211 to contact an activator entity at the remote site. If reference 212 is not null it will point directly to the remote object. This indicates an active remote object, which proxy 205 contacts directly.
Activatable objects are defined by the designer to exist as a member of a group of objects, such as group 305. The designer preferably assigns objects to particular groups so that objects within a group are designed to interact with one another. For example, objects within a group should have a relationship of mutual trust strong enough to allow them all to run within a single Java virtual machine 308. Once assigned to a group, objects stay within that group.
Activation entity 304 manages object group 305. In particular, activation entity 304 activates passive objects and creates objects pursuant to requests from object activator 302, and returns a reference to the corresponding activated object to object activator 302. To activate a quiescent object within group 305, activation entity 304 allocates the appropriate operating system resources (memory, process, or thread allocation) and starts up the object. After activating an object, activation entity 304 passes information to object activator 302 describing the way in which the object is to be reached for further communication. Object activator 302 may then forward this information to proxy 205, which appropriately updates faulting remote reference 210. If an object later de-activates, or is de-activated, object activator 302 similarly communicates with proxy 205 to update the faulting remote reference.
Preferably, one activation entity 304 exists per each active Java virtual machine 308.
As described above, object groups such as group 305 form the basic unit of object activation. Object activator 302 and activation entities 304 manage the object groups, such that if a group has not been activated then a call to any object of an object group will cause the activation of that object group and the called object in a new Java virtual machine.
Clustering objects within an object group on a single Java virtual machine allows related objects to share an address space, which in turn allows close communication between the objects. Objects in different groups, on the other hand, are in different Java virtual machines and thus have a much stronger security separation, ensuring that those objects will not interfere, either intentionally or unintentionally, with each other.
Further, a single interface is seen by clients attempting to call remote objects. The interface has multiple implementations depending on the status of the object being referenced, allowing for transparent mixing of active and passive (i.e., activatable) objects in the same system, supporting both without requiring that the clients of those objects have any knowledge of whether or not the object is activatable. This interface provides the client the ability to make any calls that are supported by the remote object through a faulting remote reference.
It will be apparent to those skilled in the art that various modifications and variations can be made to the concepts of the present invention and in its construction without departing from the scope or spirit of the invention. Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.
Number | Name | Date | Kind |
---|---|---|---|
4430699 | Segarra et al. | Feb 1984 | A |
4491946 | Kryskow, Jr. et al. | Jan 1985 | A |
4558413 | Schmidt et al. | Dec 1985 | A |
4567359 | Lockwood | Jan 1986 | A |
4713806 | Oberlander et al. | Dec 1987 | A |
4809160 | Mahon et al. | Feb 1989 | A |
4823122 | Mann et al. | Apr 1989 | A |
4939638 | Stephenson et al. | Jul 1990 | A |
4956773 | Saito et al. | Sep 1990 | A |
4992940 | Dworkin | Feb 1991 | A |
5088036 | Ellis et al. | Feb 1992 | A |
5101346 | Ohtsuki | Mar 1992 | A |
5109486 | Seymour | Apr 1992 | A |
5187787 | Skeen et al. | Feb 1993 | A |
5201049 | Shorter | Apr 1993 | A |
5218699 | Brandle et al. | Jun 1993 | A |
5253165 | Leiseca et al. | Oct 1993 | A |
5257369 | Skeen et al. | Oct 1993 | A |
5293614 | Ferguson et al. | Mar 1994 | A |
5297283 | Kelly, Jr. et al. | Mar 1994 | A |
5303042 | Lewis et al. | Apr 1994 | A |
5307490 | Davidson et al. | Apr 1994 | A |
5311591 | Fischer | May 1994 | A |
5319542 | King, Jr. et al. | Jun 1994 | A |
5327559 | Priven et al. | Jul 1994 | A |
5339430 | Lundin et al. | Aug 1994 | A |
5339435 | Lubkin et al. | Aug 1994 | A |
5386568 | Wold et al. | Jan 1995 | A |
5390328 | Frey et al. | Feb 1995 | A |
5392280 | Zheng | Feb 1995 | A |
5423042 | Jalili et al. | Jun 1995 | A |
5440744 | Jacobson et al. | Aug 1995 | A |
5446901 | Owicki et al. | Aug 1995 | A |
5448740 | Kiri et al. | Sep 1995 | A |
5452459 | Drury et al. | Sep 1995 | A |
5455952 | Gjovaag | Oct 1995 | A |
5459837 | Caccavale | Oct 1995 | A |
5471629 | Risch | Nov 1995 | A |
5475792 | Stanford et al. | Dec 1995 | A |
5475817 | Waldo et al. | Dec 1995 | A |
5475840 | Nelson et al. | Dec 1995 | A |
5481721 | Serlet et al. | Jan 1996 | A |
5504921 | Dev et al. | Apr 1996 | A |
5506984 | Miller | Apr 1996 | A |
5511196 | Shackelford et al. | Apr 1996 | A |
5511197 | Hill et al. | Apr 1996 | A |
5524244 | Robinson et al. | Jun 1996 | A |
5544040 | Gerbaulet | Aug 1996 | A |
5548724 | Akizawa et al. | Aug 1996 | A |
5548726 | Pettus | Aug 1996 | A |
5553282 | Parrish et al. | Sep 1996 | A |
5555367 | Premerlani et al. | Sep 1996 | A |
5555427 | Aoe et al. | Sep 1996 | A |
5557798 | Skeen et al. | Sep 1996 | A |
5560003 | Nilsen et al. | Sep 1996 | A |
5561785 | Blandy et al. | Oct 1996 | A |
5577231 | Scalzi et al. | Nov 1996 | A |
5592375 | Salmon et al. | Jan 1997 | A |
5594921 | Pettus | Jan 1997 | A |
5603031 | White et al. | Feb 1997 | A |
5613148 | Bezviner et al. | Mar 1997 | A |
5617537 | Yamada et al. | Apr 1997 | A |
5628005 | Hurvig | May 1997 | A |
5640564 | Hamilton et al. | Jun 1997 | A |
5644720 | Boll et al. | Jul 1997 | A |
5644768 | Periwal et al. | Jul 1997 | A |
5652888 | Burgess | Jul 1997 | A |
5655148 | Richman et al. | Aug 1997 | A |
5659751 | Heninger | Aug 1997 | A |
5664110 | Green et al. | Sep 1997 | A |
5664111 | Nahan et al. | Sep 1997 | A |
5664191 | Davidson et al. | Sep 1997 | A |
5666493 | Wojcik et al. | Sep 1997 | A |
5671225 | Hooper et al. | Sep 1997 | A |
5671279 | Elgamal | Sep 1997 | A |
5675796 | Hodges et al. | Oct 1997 | A |
5675797 | Chung et al. | Oct 1997 | A |
5680573 | Rubin et al. | Oct 1997 | A |
5680617 | Gough et al. | Oct 1997 | A |
5684955 | Meyer et al. | Nov 1997 | A |
5687373 | Holmes et al. | Nov 1997 | A |
5689709 | Corbett et al. | Nov 1997 | A |
5694551 | Doyle et al. | Dec 1997 | A |
5706435 | Barbara et al. | Jan 1998 | A |
5706502 | Foley et al. | Jan 1998 | A |
5710887 | Chelliah et al. | Jan 1998 | A |
5715314 | Payne et al. | Feb 1998 | A |
5721832 | Westrope et al. | Feb 1998 | A |
5724503 | Kleinman et al. | Mar 1998 | A |
5724540 | Kametani | Mar 1998 | A |
5724588 | Hill et al. | Mar 1998 | A |
5727048 | Hiroshima et al. | Mar 1998 | A |
5727145 | Nessett et al. | Mar 1998 | A |
5729594 | Klingman | Mar 1998 | A |
5737607 | Hamilton et al. | Apr 1998 | A |
5742768 | Gennaro et al. | Apr 1998 | A |
5745678 | Herzberg et al. | Apr 1998 | A |
5745695 | Gilchrist et al. | Apr 1998 | A |
5745703 | Cejtin et al. | Apr 1998 | A |
5745755 | Covey | Apr 1998 | A |
5748897 | Katiyar | May 1998 | A |
5754849 | Dyer et al. | May 1998 | A |
5754977 | Gardner et al. | May 1998 | A |
5757925 | Faybishenko | May 1998 | A |
5758077 | Danahy et al. | May 1998 | A |
5758328 | Giovannoli | May 1998 | A |
5758344 | Prasad et al. | May 1998 | A |
5761507 | Govett | Jun 1998 | A |
5761656 | Ben-Shachar | Jun 1998 | A |
5764897 | Khalidi | Jun 1998 | A |
5764915 | Heimsoth et al. | Jun 1998 | A |
5768532 | Megerian | Jun 1998 | A |
5774551 | Wu et al. | Jun 1998 | A |
5774729 | Carney et al. | Jun 1998 | A |
5778179 | Kanai et al. | Jul 1998 | A |
5778187 | Monteiro et al. | Jul 1998 | A |
5778228 | Wei | Jul 1998 | A |
5778368 | Hogan et al. | Jul 1998 | A |
5784560 | Kingdon et al. | Jul 1998 | A |
5787425 | Bigus | Jul 1998 | A |
5787427 | Benantar et al. | Jul 1998 | A |
5787431 | Shaughnessy | Jul 1998 | A |
5790548 | Sistanizadeh et al. | Aug 1998 | A |
5790677 | Fox et al. | Aug 1998 | A |
5793965 | Vanderbilt et al. | Aug 1998 | A |
5794207 | Walker et al. | Aug 1998 | A |
5799173 | Gossler et al. | Aug 1998 | A |
5802367 | Held et al. | Sep 1998 | A |
5805805 | Civanlar et al. | Sep 1998 | A |
5806042 | Kelly et al. | Sep 1998 | A |
5808911 | Tucker et al. | Sep 1998 | A |
5809144 | Sirbu et al. | Sep 1998 | A |
5809507 | Cavanaugh, III | Sep 1998 | A |
5812819 | Rodwin et al. | Sep 1998 | A |
5813013 | Shakib et al. | Sep 1998 | A |
5815149 | Mutschler, III et al. | Sep 1998 | A |
5815709 | Waldo et al. | Sep 1998 | A |
5815711 | Sakamoto et al. | Sep 1998 | A |
5818448 | Katiyar | Oct 1998 | A |
5829022 | Watanabe et al. | Oct 1998 | A |
5832219 | Pettus | Nov 1998 | A |
5832529 | Wollrath et al. | Nov 1998 | A |
5832593 | Wurst et al. | Nov 1998 | A |
5835737 | Sand et al. | Nov 1998 | A |
5842018 | Atkinson et al. | Nov 1998 | A |
5844553 | Hao et al. | Dec 1998 | A |
5845090 | Collins, III et al. | Dec 1998 | A |
5845129 | Wendorf et al. | Dec 1998 | A |
5850442 | Muftic | Dec 1998 | A |
5860004 | Fowlow et al. | Jan 1999 | A |
5860153 | Matena et al. | Jan 1999 | A |
5864862 | Kriens et al. | Jan 1999 | A |
5864866 | Henckel et al. | Jan 1999 | A |
5872928 | Lewis et al. | Feb 1999 | A |
5872973 | Mitchell et al. | Feb 1999 | A |
5875335 | Beard | Feb 1999 | A |
5878411 | Borroughs et al. | Mar 1999 | A |
5884024 | Lim et al. | Mar 1999 | A |
5884079 | Furusawa | Mar 1999 | A |
5887134 | Ebrahim | Mar 1999 | A |
5889951 | Lombardi | Mar 1999 | A |
5890158 | House et al. | Mar 1999 | A |
5892904 | Atkinson et al. | Apr 1999 | A |
5901315 | Edwards et al. | May 1999 | A |
5913029 | Shostak | Jun 1999 | A |
5933497 | Beetcher et al. | Aug 1999 | A |
5933647 | Aronberg et al. | Aug 1999 | A |
5935249 | Stern et al. | Aug 1999 | A |
5940827 | Hapner et al. | Aug 1999 | A |
5944793 | Islam et al. | Aug 1999 | A |
5946485 | Weeren et al. | Aug 1999 | A |
5946694 | Copeland et al. | Aug 1999 | A |
5949998 | Fowlow et al. | Sep 1999 | A |
5951652 | Ingrassia, Jr. et al. | Sep 1999 | A |
5956509 | Kevner | Sep 1999 | A |
5961582 | Gaines | Oct 1999 | A |
5963924 | Williams et al. | Oct 1999 | A |
5963947 | Ford et al. | Oct 1999 | A |
5966531 | Skeen et al. | Oct 1999 | A |
5969967 | Aahlad et al. | Oct 1999 | A |
5974201 | Chang et al. | Oct 1999 | A |
5978484 | Apperson et al. | Nov 1999 | A |
5982773 | Nishimura et al. | Nov 1999 | A |
5987506 | Carter et al. | Nov 1999 | A |
5991808 | Border et al. | Nov 1999 | A |
5996075 | Matena | Nov 1999 | A |
5999179 | Kekic et al. | Dec 1999 | A |
5999988 | Pelegri-Llopart et al. | Dec 1999 | A |
6003050 | Silver et al. | Dec 1999 | A |
6003763 | Gallagher et al. | Dec 1999 | A |
6009103 | Woundy | Dec 1999 | A |
6009413 | Webber et al. | Dec 1999 | A |
6009464 | Hamilton et al. | Dec 1999 | A |
6016496 | Roberson | Jan 2000 | A |
6016516 | Horikiri | Jan 2000 | A |
6018619 | Allard et al. | Jan 2000 | A |
6023586 | Gaisford et al. | Feb 2000 | A |
6026414 | Anglin | Feb 2000 | A |
6031977 | Pettus | Feb 2000 | A |
6032151 | Arnold et al. | Feb 2000 | A |
6034925 | Wehmeyer | Mar 2000 | A |
6044381 | Boothby et al. | Mar 2000 | A |
6052761 | Hornung et al. | Apr 2000 | A |
6055562 | Devarakonda et al. | Apr 2000 | A |
6058381 | Nelson | May 2000 | A |
6058383 | Narasimhalu et al. | May 2000 | A |
6061699 | DiCecco et al. | May 2000 | A |
6061713 | Bharadhwaj | May 2000 | A |
6067575 | McManis et al. | May 2000 | A |
6078655 | Fahrer et al. | Jun 2000 | A |
6085255 | Vincent et al. | Jul 2000 | A |
6092194 | Touboul | Jul 2000 | A |
6093216 | Adl-Tabatabai et al. | Jul 2000 | A |
6104716 | Crichton et al. | Aug 2000 | A |
6108346 | Doucette et al. | Aug 2000 | A |
6134603 | Jones et al. | Oct 2000 | A |
6154844 | Touboul et al. | Nov 2000 | A |
6157960 | Kaminsky et al. | Dec 2000 | A |
6182083 | Scheifler et al. | Jan 2001 | B1 |
6185602 | Bayrakeri | Feb 2001 | B1 |
6185611 | Waldo et al. | Feb 2001 | B1 |
6189046 | Moore et al. | Feb 2001 | B1 |
6192044 | Mack | Feb 2001 | B1 |
6199068 | Carpenter | Mar 2001 | B1 |
6199116 | May et al. | Mar 2001 | B1 |
6212578 | Racicot et al. | Apr 2001 | B1 |
6216138 | Wells et al. | Apr 2001 | B1 |
6216158 | Luo et al. | Apr 2001 | B1 |
6219675 | Pal et al. | Apr 2001 | B1 |
6226746 | Scheifler | May 2001 | B1 |
6243716 | Waldo et al. | Jun 2001 | B1 |
6243814 | Matena | Jun 2001 | B1 |
6247091 | Lovett | Jun 2001 | B1 |
6253256 | Wollrath et al. | Jun 2001 | B1 |
6263350 | Wollrath et al. | Jul 2001 | B1 |
6263379 | Atkinson et al. | Jul 2001 | B1 |
6272559 | Jones et al. | Aug 2001 | B1 |
6282295 | Young et al. | Aug 2001 | B1 |
6282568 | Sondur et al. | Aug 2001 | B1 |
6282581 | Moore et al. | Aug 2001 | B1 |
6292934 | Davidson et al. | Sep 2001 | B1 |
6301613 | Ahlstrom et al. | Oct 2001 | B1 |
6339783 | Horikiri | Jan 2002 | B1 |
6343308 | Marchesseault | Jan 2002 | B1 |
6353860 | Hare et al. | Mar 2002 | B1 |
6385643 | Jacobs et al. | May 2002 | B1 |
6408342 | Moore et al. | Jun 2002 | B1 |
6418468 | Ahlstrom et al. | Jul 2002 | B1 |
6553428 | Ruehle et al. | Apr 2003 | B1 |
6578074 | Bahlmann | Jun 2003 | B1 |
6604127 | Murphy et al. | Aug 2003 | B2 |
6604140 | Beck et al. | Aug 2003 | B1 |
6654793 | Wollrath et al. | Nov 2003 | B1 |
20020059212 | Takagi | May 2002 | A1 |
20030191984 | Murphy et al. | Oct 2003 | A1 |
Number | Date | Country |
---|---|---|
0 300 516 | Jan 1989 | EP |
0 351 536 | Jan 1990 | EP |
0 384 339 | Aug 1990 | EP |
0 472 874 | Mar 1992 | EP |
0 474 340 | Mar 1992 | EP |
497 022 | Aug 1992 | EP |
0 555 997 | Aug 1993 | EP |
0 565 849 | Oct 1993 | EP |
0 569 195 | Nov 1993 | EP |
0 625 750 | Nov 1994 | EP |
0 635 792 | Jan 1995 | EP |
0 651 328 | May 1995 | EP |
0 660 231 | Jun 1995 | EP |
0 697 655 | Feb 1996 | EP |
0 718 761 | Jun 1996 | EP |
0 767 432 | Apr 1997 | EP |
0 778 520 | Jun 1997 | EP |
0 794 493 | Sep 1997 | EP |
0 803 810 | Oct 1997 | EP |
0 803 811 | Oct 1997 | EP |
0 805 393 | Nov 1997 | EP |
0 810 524 | Dec 1997 | EP |
0 817 020 | Jan 1998 | EP |
0 817 022 | Jan 1998 | EP |
0 817 025 | Jan 1998 | EP |
0 836 140 | Apr 1998 | EP |
2 253 079 | Aug 1992 | GB |
2 262 825 | Jun 1993 | GB |
2 305 087 | Mar 1997 | GB |
11-45187 | Feb 1999 | JP |
WO9207335 | Apr 1992 | WO |
WO9209948 | Jun 1992 | WO |
WO9325962 | Dec 1993 | WO |
WO9403855 | Feb 1994 | WO |
WO9603692 | Feb 1996 | WO |
WO9610787 | Apr 1996 | WO |
WO9618947 | Jun 1996 | WO |
WO9624099 | Aug 1996 | WO |
WO9802814 | Jan 1998 | WO |
WO9804971 | Feb 1998 | WO |
WO9917194 | Apr 1999 | WO |
WO0113228 | Feb 2001 | WO |
WO0113228 | Feb 2001 | WO |
WO0186394 | Nov 2001 | WO |
WO0186394 | Nov 2001 | WO |
WO0190903 | Nov 2001 | WO |
WO0190903 | Nov 2001 | WO |