`Arnold et al.
`
`USOO6393497B1
`(10) Patent No.:
`US 6,393,497 B1
`(45) Date of Patent:
`May 21, 2002
`
`(54) DOWNLOADABLE SMART PROXIES FOR
`PERFORMING PROCESSING ASSOCATED
`WITH A REMOTE PROCEDURE CALL INA
`DISTRIBUTED SYSTEM
`(75) Inventors: Kenneth C. R. C. Arnold, Lexington;
`James H. Waldo, Dracut; Robert
`Scheifler, Somerville; Ann M.
`Wollrath, Groton, all of MA (US)
`(73) Assignee: Sun Microsystems, Inc., Palo Alto, CA
`(US)
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`(*) Notice:
`
`(21) Appl. No.: 09/044,930
`(22) Filed:
`Mar 20, 1998
`(51) Int. Cl." ................................................ G06F 13/00
`(52)
`... 709/330; 709/315
`(58) Field of Search ................................. 709/300, 303,
`709/310,315, 330
`
`a 1 vs
`
`EP
`E.
`EP
`
`2
`
`2
`
`C a
`
`et
`
`al.
`
`5,297.283 A 3/1994 Kelly, Jr. et al.
`5,307.490 A 4/1994 Davidson
`3. A SEC ES tal
`5,386,568 A 1/1995 Wold et al.
`(List continued on next page.)
`FOREIGN PATENT DOCUMENTS
`O3OO 516 A2
`1/1989
`s 3. 3. A.
`E.
`O 472 874 A1
`3/1992
`(List continued on next page.)
`OTHER PUBLICATIONS
`Sun Microsystems, Java Remote Method Invocation Speci
`fication, Feb. 10, 1997, pp. 18–23.*
`Aldrich et al., “Providing Easier Access to Remote Objects
`in Client-Server Systems.” System Sciences, 1998, Pro
`ceedings of the 31st Hawaii Internatl. Conference, Jan. 6-9,
`1998, pp. 366-375.
`(List continued on next page.)
`Primary Examiner Kenneth R. Coulter
`(74) Attorney, Agent, or Firm-Finnegan, Henderson,
`Farabow, Garrett & Dunner, L.L.P.
`(57)
`ABSTRACT
`Use of a Smart proxy as a wrapper around a stub in a
`distributed System. Instead of receiving a stub as a result of
`a remote procedure call, a caller receives a Smart proxy
`including the Stub as an embedded object. The Smart proxy
`performs predefined processing associated with a remote
`procedure call, the processing possibly occurring before,
`during, or after a response to the call.
`s
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`4,491.946. A 1/1985 Kryskow, Jr. et al.
`4,713,806 A 12/1987 Oberlander et al.
`4,809,160 A 2/1989 Mahon et al.
`4,823,122 A 4f1989 Mann et al.
`4,939,638 A 7/1990 Stephenson et al.
`4.956,773 A 9/1990 Saito et al.
`5,088,036 A 2/1992 Ellis et al.
`5,109,486 A 4/1992 Seymour
`5,187,787 A
`2/1993 Skeen et al.
`5,218,699 A 6/1993 Brandle et al.
`5,257,369 A 10/1993 Skeen et al.
`5,293,614 A 3/1994 Ferguson et al.
`
`6O1
`
`
`
`CLIENT MACHINE
`
`18 Claims, 8 Drawing Sheets
`
`6OO
`
`SERVER MACHINE
`
`606
`
`REMOTE
`OBU.
`
`RESPONSE
`
`SMART PROXY
`
`APPL-1006 / Page 1 of 20
`Apple v. Uniloc
`
`
`
`US 6,393,497 B1
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`2/1995 Frey et al.
`5,390,328 A
`5,423,042 A 6/1995 Jalili et al.
`5.440,744. A
`8/1995 Jacobson et al.
`5.448,740 A 9/1995 Kiri et al.
`5,452.459 A 9/1995 Drury et al.
`5,455,952 A 10/1995 Giovaag
`5,471,629 A 11/1995 Risch
`5,475,792 A 12/1995 Stanford et al.
`5,475,817 A 12/1995 Waldo et al.
`5,481,721 A 1/1996 Serlet et al.
`5,504,921 A 4/1996 Dev et al.
`5,511,197 A 4/1996 Hill et al.
`5,524.244. A 6/1996 Robinson et al.
`5,548,726 A 8/1996 Pettus
`5,553,282 A 9/1996 Parrish et al.
`5,555,367 A
`9/1996 Premerlani et al.
`5,555,427 A
`9/1996 Aoe et al. ................... 709/201
`5,557,798 A
`9/1996 Skeen et al.
`5,560.003 A 9/1996 Nilsen et al.
`5,561,785 A 10/1996 Blandy et al.
`5,577,231 A 11/1996 Scalzi et al.
`5594,921. A
`1/1997 Pettus
`5,603,031. A
`2/1997 White et al.
`5,617,537 A
`4/1997 Yamada et al.
`5,628,005 A
`5/1997 Hurvig
`5,640,564. A 6/1997 Hamilton et al.
`5,644,768 A 7/1997 Periwal et al.
`5,652,888 A 7/1997 Burgess
`5,655,148 A 8/1997 Richman et al.
`5,659.751 A 8/1997 Heninger
`5,671,225 A 9/1997 Hooper et al.
`5,675.796 A 10/1997 Hodges et al.
`5,680,573 A 10/1997 Rubin et al.
`5,680,617. A 10/1997 Gough et al.
`5,684.955 A 11/1997 Meyer et al.
`5,689,709 A 11/1997 Corbett et al.
`E. A 1/1998 Eas t al.
`706,502 A 1/1998 Foley et al.
`5,724,588 A
`3/1998 Hill et al.
`5,727,145 A 3/1998 Nessett et al.
`5,737,607 A
`4/1998 Hamilton et al.
`5,745,678 A 4/1998 Herzberg et al.
`5,745,695 A 4/1998 Gilchrist et al.
`5,745,703 A
`4/1998 Cejtin et al.
`5,745,755 A
`4/1998 Covey
`5,748.897 A * 5/1998 Katiyar ....................... 709,219
`5,754,849. A
`5/1998 Dyer et al.
`5,757,925 A
`5/1998 Faybishenko
`5,761,656 A 6/1998 Ben-Shachar
`5,764,897 A 6/1998 Khalidi
`5,768,532 A 6/1998 Megerian
`5,774,551 A
`6/1998 Wu et al.
`5,778,187 A
`7/1998 Monteiro et al.
`5,778,228 A 7/1998 Wei
`5,778,368 A
`7/1998 Hogan et al.
`5,787,425. A
`7/1998 Bigus
`5,787,431 A 7/1998 Shaughnessy
`5,790,548 A 8/1998 Sistanizadeh et al.
`5,802,367 A 9/1998 Held et al.
`5,808,911 A 9/1998 Tucker et al.
`5,809,507 A 9/1998 Cavanaugh, III
`5,812,819 A 9/1998 Rodwin et al.
`5,813,013 A 9/1998 Shakib et al.
`5,815,149 A 9/1998 Mutschler, III et al.
`5,815,709 A
`9/1998 Waldo et al.
`5,815,711 A 9/1998 Sakamoto et al.
`5,818,448 A * 10/1998 Katiyar ....................... 345/355
`5,829.022 A 10/1998 Watanabe et al.
`5,832.219 A 11/1998 Pettus
`5,832,529 A 11/1998 Wollrath et al.
`
`2Y- - - 2
`
`OWOW e a
`
`5,832,593 A 11/1998 Wurst et al.
`5.835,737 A 11/1998 Sand et al.
`5,842,018 A 11/1998 Atkinson et al.
`5,844,553 A 12/1998 Hao et al.
`5,845,129 A 12/1998 Wendorf et al.
`5860.004 A 1/1999 Fowlow etal
`5,860,153 A
`1/1999 Matena et al.
`5,864,862 A 1/1999 Kriens et al.
`5,864.866. A
`1/1999 Henckel et al.
`5,872,928 A 2/1999 Lewis et al.
`5,872,973 A * 2/1999 Mitchell et al. ............ 709/332
`5,875,335 A
`2/1999 Beard
`5,878.411 A 3/1999 Borroughs et al.
`5,884,024 A 3/1999 Lim et al.
`5,884,079 A 3/1999 Furusawa
`5,887,134 A 3/1999 Ebrahim
`5,889,951 A 3/1999 Lombardi
`5,890,158 A 3/1999 House et al.
`5,892.904 A 4/1999 Atkinson et al.
`5,933,497 A 8/1999 Beetcher et al.
`5,935,249 A 8/1999 Stern et al.
`5,940,827 A 8/1999 Hapner et al.
`5,944,793 A 8/1999 Islam et al.
`5,946,485 A 8/1999 Weeren et all
`5.946,694 A 8/1999 Copeland
`2- : */
`f
`opeland et al.
`5,956.509 A
`9/1999 Kevner
`5,966.531. A 10/1999 Skeen et al.
`5,969,967 A 10/1999 Aahladet al.
`5.987,506 A 11/1999 Carter et al.
`5.999,179 A 12/1999 Kekic et al.
`6,003,763 A 12/1999 Gallagher et al.
`6,009.103 A 12/1999 Woundy
`6,016,496 A 1/2000 Roberson
`6,026,414 A 2/2000 Anglin ....................... 707/204
`6,031,977 A 2/2000 Pettus
`6,061,699 A 5/2000 DiCecco et al.
`6,061,713 A 5/2000 Bharadhwaj
`6,223,217 B1
`4/2001 Pettus ........................ 709/219
`6,260,076 B1 * 7/2001 Savitzky et al. ............ 709/315
`
`FOREIGN PATENT DOCUMENTS
`
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`EP
`GB
`GB
`GB
`JP
`
`O 474 340 A2 3/1992
`O 497 O22 A1
`8/1992
`O 555 997 A2
`8/1993
`O 565 849 A2 10/1993
`O 569 195 A3 11/1993
`O 625 750 A2 11/1994
`O 635 792 A2
`1/1995
`O 651 328 A1
`5/1995
`O 660 231 A2 6/1995
`O 697 655 A2
`2/1996
`O 718 761 A1
`6/1996
`O 767 432 A2
`4/1997
`O 778 520 A2
`6/1997
`0 794 493 A2
`9/1997
`O 803 810 A2 10/1997
`O 803 811 A 10/1997
`O 805 393 A2 11/1997
`O 810524. A 12/1997
`O 817 O2O A 1/1998
`O 817 O22 A2
`1/1998
`O 817 O25 A
`1/1998
`O 836 140 A2 4/1998
`2 253 O79 A 8/1992
`2 262 825. A 6/1993
`2305 O87 A 3/1997
`11-45187
`2/1999
`
`APPL-1006 / Page 2 of 20
`
`
`
`US 6,393,497 B1
`Page 3
`
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`
`4/1992
`WO 92/07335
`6/1992
`WO 92/09948
`WO93/25962 A1 12/1993
`WO 94/03855
`2/1994
`WO 96/03692 A1
`2/1996
`WO 96/10787
`4/1996
`WO 96/18947
`6/1996
`Wo 96/24099
`8/1996
`WO 98/02814
`1/1998
`WO 98/04971
`2/1998
`
`OTHER PUBLICATIONS
`Aldrich et al., “Providing Easier Access to Remote Objects
`in Distributed Systems,” Calif. Institute of Technology,
`www.cs.caltech.edu/%7Ejedi/paper/edipaper.html,
`Nov.
`21, 1997.
`Burns et al., “An Analytical Study of Opportunistic Lease
`Renewal.” Distributed Computing Systems, 21st Interna
`tional Conference, pp. 146-153, Apr. 2000.
`Dollimore et al., “The Design of a System for Distributing
`Shared Objects.” The Computer Journal, No. 6, Cambridge,
`GB, Dec. 1991.
`Fleisch et al., “High Performance Distributed Objects. Using
`Distributed Shared Memory & Remote Method Invocation,”
`System Sciences, 1998, Proceedings of the 31st Hawaii
`Internatl. Conference, Jan. 6-9, 1998, pp. 574-578.
`Gray et al., “Leases: An Efficient Fault-Tolerant Mechanism
`for Distributed File Cache Consistency,” Proceedings of the
`12th ACM Symposium on Operating Systems Principles,
`pp. 202-210, 1989.
`Guyennet et al., “A New Consistency Protocol Implemented
`in the CAliF System,” IEEE, 1094-7256/97, pp. 82–87,
`1997.
`Guyennet et al., “Distributed Shared Memory Layer for
`Cooperative Work Applications," IEEE, 0742-1303/97, pp.
`72–78, 1997.
`Hoshi et al., “Allocation of the Cross-Connect Function in
`Leased Circuit Networks,” 1992, ICC'92, conference
`record, SUPERCOMM/ICC 02, D a New World of Com
`munications, IEEE International
`Conference,
`pp.
`1408-1412.
`IBM Technical Disclosure Bulletin, “Local Network Moni
`toring to Populate Access Agent Directory, vol. 36, No.
`09A, pp. 403-405, Sep. 1993.
`McGrath, “Discovery and Its Discontents: Discovery Pro
`tocols for Ubiquitous Computing.” Presented at Center for
`Excellence in Space Data and Information Science, NASA
`Goddard Space Flight Center, Apr. 5, 2000.
`MUX-Elektronik, Java 1.1 Interactive Course, www.IIs.se/~
`mux/javaic.html, 1995.
`Stevenson, “Token-Based Consistency of Replicated Serv
`ers,” IEEE, CH2686–4/89/0000/0179, pp. 179–183, 1989.
`Yin et al., “Using Leases to Support Server Driven Consis
`tency in Large-Scale Systems,' Computer Services Depart
`ment, University of Texas at Austin, pp. 285-294, May
`26–28, 1998.
`Yin et al., “Volume Leases for Consistency in Large-Scale
`Systems.” IEEE Transactions on Knowledge & Data Engi
`neering, vol. 11, No. 4, pp. 563-576, Jul/Aug. 1999.
`Mullender, Distributed Systems, Second Edition, Addison
`-Wesley, 1993.
`Howard et al., Scale and Performance in a Distributed File
`System, ACM Transactions on Computer Systems, vol. 6,
`No. 1, Feb. 1988, pp. 51-81.
`
`Cardelli, Obliq, A lightweight language for network objects,
`Nov. 5, 1993, pp. 1–37.
`Dijkstra, Self-stabilizing Systems in Spite of Distributed
`Control, Communications of the ACM, Vol. 17, No. 11, Nov.
`1974, pp. 643–644.
`Ousterhout et al., The Sprite Network Operating System,
`Computer, IEEE, Feb. 1988, pp. 23–36.
`Dourish, A Divergence-Based Model of Synchrony and
`Distribution in Collaborative Systems, Xerox Technical
`Report EPC-1194-102, 1994, pp. 1-10.
`Sharrott et al., ObjectMap: Integrating High Performance
`Resources into a Distributed Object-oriented Environment,
`ICODP, 1995.
`Birrell et al., Grapevine: An Exercise in Distributed Com
`puting, Communications of the ACM, vol. 25, No. 4, Apr.
`1982, pp. 260–274.
`Transparent Network Computing, Locus Computing Corpo
`ration, Jan. 5, 1995.
`Gray et al., Leases: An Efficient Fault-Tolerant Mechanism
`for Distributed File Cache Consistency, ACM, 1989, pp.
`2O2-210.
`Lamport et al., The Byzantine Generals Problem, ACM
`Transactions on Programming Languages and Systems, Vol.
`4, No. 3, Jul. 1982, pp. 382–401.
`Dolev et al., On the Minimal Synchronism Needed for
`Distributed Consensus, Journal of the ACM, Vol. 34, No. 1,
`Jan. 1987, pp. 77–97.
`Mummert et al., Long Term Distributed File Reference
`Tracing. Implementation and Experience, Carnegie Mellon
`University School of Computer Science, Nov. 1994, pp.
`1-28.
`Gelernter et al., Parallel Programming in Linda, Yale Uni
`versity, Jan. 1985, pp. 1-21.
`Cannon et al., Adding Fault–Tolerant Transaction ProceSS
`ing to LINDA, Software-Practice and Experience, vol.
`24(5), May 1994, pp. 449-466.
`Kambhatla et al., Recovery with Limited Replay. Fault-Tol
`erant Processes in Linda, Oregon Graduate Institute, Tech
`nical Report CSIE 90-019, Sep. 1990, pp. 1-16.
`AnderSon et al., Persistent Linda: Linda + Transactions +
`Query Processing, Proceedings of the 13th Symposium on
`Fault Tolerant Systems, 1994, pp. 93-109.
`Gelernter, Generative Communication in Linda, ACM
`Transactions on Programming Languages and Systems, Vol.
`7, No. 1, Jan. 1985, pp. 80-112.
`Carriero et al., Distributed Data Structures in Linda, Prin
`cipals of Programming Language, 1986, pp. 1-16.
`Pinakis, Using Linda as the Basis of an Operating System
`Microkernel, University of Western Australia, Department
`of Computer Science, Aug. 1993, pp. 1-165.
`Linda Database Search, Jul. 20, 1995, pp. 1-68.
`Carriero et al, Distributed Data Structures in Linda, Yale
`Research Report YALEU/DCS/RR-438, Nov. 1985.
`Agha et al., Actorspaces. An Open Distributed Program
`ming Paradigm, University of Illinois, Report No.
`UIUCDCS-R-92–1766, Open Systems Laboratory TR No.
`8, Nov. 1992, pp. 1-12.
`Ahmed et al., A Program Building Tool for Parallel Appli
`cations, Yale University, Dec. 1, 1993, pp. 1-23.
`Liskov et al., Distributed Object Management in Thor,
`International Workshop on Distributed Object Management,
`1992, pp. 12.
`Coulouris et al., Distributed Systems Concepts and Designs,
`Second Edition, Addison-Wesley, 1994.
`
`APPL-1006 / Page 3 of 20
`
`
`
`US 6,393,497 B1
`Page 4
`
`Birrell et al., Network Objects, DEC SRC Research Report
`115, Feb. 28, 1994.
`Birrell et al., Distributed Garbage Collection for Network
`Objects, DEC SRC Research Report 116, Dec. 15, 1993.
`Jaworski, Java 1.1 Developer's Guide, Sams.net, 1997.
`Wollrath et al., A Distributed Object Model for the JavaTM
`System, USENIX Association, Conference on Object-Ori
`ented Technologies and Systems, Jun. 17-21, 1996.
`Harris et al., Proposal for a General Java Proxy Class for
`Distributed Systems and Other Uses, Netscape Communi
`cations Corp., Jun. 25, 1997.
`Hamilton, Java and the Shift to Net-Centric Computing
`Computer, Aug. 1996, pp. 31-39.
`Chung et al., A Tiny Pascal Compiler: Part 1: The P-Code
`Interpreter, BYTE Publications, Inc., Sep. 1978.
`Chung et al., A Tiny Pascal Compiler: Part 2: The P-Com
`piler, BYTE Publications, Inc., Oct. 1978.
`Thompson, Regular Expression Search Algorithm, Commu
`nications of the ACM, vol. II, No. 6, p. 149 et seq., Jun.
`1968.
`Mitchell et al., Mesa Language Manual, Xerox Corporation.
`McDaniel, An Analysis of a Mesa Instruction Set, Xerox
`Corporation, May 1982.
`Pier, A Retrospective On the Dorado, A High-Performance
`Personal Computer, Xerox Corporation, Aug. 1983.
`Pier, A Retrospective on the Dorado, A High-Performance
`Personal Computer, IEEE Conference Proceedings, The
`10th Annual international Symposium on Computer Archi
`tecture, 1983.
`Krasner, The Smalltalk-80 Virtual Machine, BYTE Publi
`cations Inc., Aug. 1991, pp. 300-320.
`Operating Systems Review, ACM Press, vol. 27, No. 5, Dec.
`1993, pp. 217-230.
`Remote Method Invocation Specification, Sun Microsys
`tems, Inc., (1997), http://java. Sun.com/products/dk/1.1/
`docs/guide/rmi/spec/rmiTOC.doc.html.
`Alexander, et al., “Active Bridging, Proceedings of the
`ACM/SIGCOMM 97 Conference, Cannes, France, 9/97.
`Anonymous: “Change-Notification Service for Share
`Files', IBM Technical Disclosure Bulletin, vol. 36, No. 8,
`pp. 77–82, Aug. 1993, XP002108713, New York, US.
`Anonymous: “Resource Preemption for Priority Schedul
`ing.” Nov. 1973. IBM Technical Disclosure Bulletin, vol. 16,
`No. 6, p. 1931 XP002109435 New York, US.
`Beech et al., “Object Databases as Generalizations of Rela
`tional Databases,” Computer Standards & Interfaces, vol.
`13, Nos. 1/3, pp. 221-230, (Jan. 1991) Amsterdam, NL.
`Bertino et al., “Object-Oriented Database Management Sys
`tems: Concepts and ISSues,' Computer, Vol. 24, No. 4, pp.
`33-47, (Apr. 1991), Los Alamitos, CA.
`Betz, Mark; “Interoperable objects: laying the foundation
`for distributed object computing”; Dr. Dobb's Journal, vol.
`19, No. 11, p. 18(13); (Oct. 1994).
`Bevan, D.I., “An Efficient Reference Counting Solution To
`The Distributed Garbage Collection Problem”, Parall Com
`puting, NL, Elsevier Publishers, Amsterdam, vol. 9, No. 2,
`pp. 179-192, Jan. 1989.
`Birrell et al., “Implementing Remote Procedure Calls”,
`ACM Transactions on Computer Systems, vol. 2, No. 1, Feb.
`1984, pp. 39–59.
`Dave A et al: “Proxies, Application Interface, and Distrib
`uted Systems”, Proceedings International Workshop on
`Object Orientation in Operating Systems, Sep. 24, 1992, pp.
`212-220.
`
`Deux O et al: “The 02 System' Communications of the
`Association for Computing Machinery, vol. 34, No. 10, Oct.
`1, 1991, pp. 34-48.
`Drexler, K. Eric, et al., “Incentive Engineering for Compu
`tational Resource Management,” The Ecology of Computa
`tion, Elsevier Science Publishers B.V., 1988, pp. 231-266.
`Droms, R., “RFC 1541 Dynamic Host Configuration Pro
`tocol”, HTTP://WWW.CIS.OHIO-STATE.EDU/HTBIN/
`RFC/RFC1541.HTML, Oct. 1993, pp. 1–33.
`Emms J: “A Definition of an Access Control Systems
`Language' Computer Standards and Interfaces, Vol. 6, No.
`4, Jan. 1, 1987, pp. 443-454.
`Gosling et al., “The Java (TM) Language Specification',
`Addison-Wesley, 1996.
`Gottlob et al., “Extending Object-Oriented Systems with
`Roles,” ACM Transactions on information systems, vol. 14,
`No. 3, pp. 268–296 (Jul. 1996).
`Guth, Rob: “JavaOne: Sun to Expand Java Distributed
`Computing Effort”, “HTTP://WWWSUNWORLD.COM/
`SWOL-02-1998/SWOL-02-SUNSPOTS.HTML,”
`XP-002109935, p. 1, Feb. 20, 1998.
`Hamilton et al., “Subcontract: a flexible base for distributed
`programming'; Proceedings of 14th Symposium of Operat
`ing System Principles; (Dec. 1993).
`Hartman, J., Manber, U., et al., Liquid Software: A new
`paradigm for networked Systems, Technical Report 96-11,
`Department of Comp. Sci., Univ. of Arizona, 6/96.
`Hunt, N., “IDF: A Graphical Data Flow Programming Lan
`guage for Image Processing and Computer Vision', Pro
`ceedings of the International Conference on Systems, Man,
`and Cybernetics, Los Angeles, Nov. 4-7, pp. 351-360,
`(1990).
`IBM (TM) Technical Disclosure Bulletin, “Object Location
`Algorithm.” vol. 36, No. 09B, pp. 257–258, Sep. 1993.
`IBM (TM) Technical Disclosure Bulletin, “Retrieval of
`Qualified Variables Using Extendible Hashing, vol. 36, No.
`12, pp. 301-303, Dec. 1993.
`Jones, Richard, et al., “Garbage Collection: Algorithms for
`Automatic Dynamic Memory Management,” pp. 165-175,
`John Wiley & Sons, 1996.
`Kay, Michael H. et al., “An Overview of the Raleigh
`Object-Oriented Database System”, ICL Technical Journal,
`vol. 7, No. 4, pp. 780–798, (Nov. 1991), Oxford, GB.
`Kougiouris et al., “Support for Space Efficient Object Invo
`cation in Spring"; (Sep. 1994).
`Lindholm et al., “The Java (TM) Virtual Machine Specifi
`cation', Addison Wesley, 1996.
`Mitchell et al., “An Overview of the Spring System”; (Feb.
`1994).
`Riggs Roger et al., “Picking State in the Java (TM) System,”
`USENIX Association Conference on Object-Oriented Tech
`nologies and Systems, XP-002112719, Jun. 17–21, 1996,
`pp. 241-250.
`Rosenberry et al., “Understanding DCE"; Chapters 1-3, 6;
`(1992).
`Waldo Jet al: “Events in an RPC based distributed system”
`Proceedings of the 1995 USENIX Technical Conference,
`Proceedings USENIX Winter 1995 Technical Conference,
`New Orleans, LA. USA, Jan. 16-20, 1995, pp. 131-142.
`Wilson, P.R., et al., “Design of the Opportunistic Garbage
`Collector,” Proceedings of the Object Oriented Program
`ming Systems Languages And Applications Conference,
`New Orleans, vol. 24, No. 10, Oct. 1989.
`
`APPL-1006 / Page 4 of 20
`
`
`
`US 6,393,497 B1
`Page 5
`
`Wu, Xuequn, “AType system for an Object-Oriented Data
`base System,” Proceedings of the International Computer
`Software and Applications Conference (COMPSAC), pp.
`333-338, Sep. 11–13, 1991, Tokyo, Japan.
`Yemini, Y. and S. da Silva, “Towards Programmable Net
`works” IFIP/IEEE International Workshop on Distributed
`Systems: Operations and Management, L'Aquila, Italy,
`10/96.
`Birrell et al., Implementing Remote Procedure Calls, ACM
`Transactions on Computer Systems, vol. 2, No. 1, Feb. 1984,
`pp. 39–59.
`
`IBM: Somobjects Developer Toolkit Users Guide, Version
`2.1, “Chapter 6 Distributed SOM (DSOM), pp 6–1–6–90,
`Oct. 1994.
`Orfali R. et al., “The Essential Distributed Objects Survival
`Guide,” Chapter 11: Corba Commercial ORBs, John Wiley
`& Sons, Inc., (1996).
`Venners, B., “Jini Technology, Out of the Box”, Javaworld,
`Online, pp. 1-4, Dec. 1998.
`
`* cited by examiner
`
`APPL-1006 / Page 5 of 20
`
`
`
`U.S. Patent
`
`May 21, 2002
`
`Sheet 1 of 8
`
`US 6,393,497 B1
`
`60||80||
`
`TTVO
`
`
`
`| 0 ||00||
`
`
`
`SSE OOHd
`
`| | |0||
`
`ESNOBSEH || ESNOc?SEH
`
`ººº
`
`
`
`
`
`€)NISSE OOHCH HEAHES
`
`– – – - - - - - - - --- – — - - - - - — —)
`
`APPL-1006 / Page 6 of 20
`
`
`
`U.S. Patent
`
`May 21, 2002
`
`Sheet 2 of 8
`
`US 6,393,497 B1
`
`
`
`s
`
`4.
`O
`CC
`>
`
`APPL-1006 / Page 7 of 20
`
`
`
`U.S. Patent
`
`May 21, 2002
`
`Sheet 3 of 8
`
`US 6,393,497 B1
`
`
`
`G6 S/WOC|N|NA'N?II LNECH
`
`
`
`XHOWNEW
`
`
`
`HOSSE OOHd
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`108’ SIHVIOS'OHve|SVHITn
`
`
`
`HOSSE OOHCH
`
`
`
`HOSSE OOHd
`
`WNELSÅS
`
`APPL-1006 / Page 8 of 20
`
`
`
`U.S. Patent
`
`May 21, 2002
`
`Sheet 4 of 8
`
`US 6,393,497 B1
`
`
`
`3.
`
`3
`
`
`
`S
`
`s
`
`APPL-1006 / Page 9 of 20
`
`
`
`U.S. Patent
`
`May 21, 2002
`
`Sheet 5 of 8
`
`US 6,393,497 B1
`
`ZZG
`
`909
`
`809
`
`EOLAEC
`
`
`
`BOVES WIVAV^
`
`OZG
`
`Z || G
`
`9 || G
`
`8 || G
`
`0 || G
`
`
`
`
`
`APPL-1006 / Page 10 of 20
`
`
`
`U.S. Patent
`
`May 21, 2002
`
`Sheet 6 of 8
`
`US 6,393,497 B1
`
`E_LOVNEH
`
`"[^EO
`
`
`
`ESNOCH SEH
`
`
`
`
`
`||SETTOEH HO-, TTV/O
`
`
`
`
`
`EN|HOW/W HEAHES
`
`| 09
`
`
`
`EN|HO\/WN ILNE ITO
`
`
`
`
`
`
`
`APPL-1006 / Page 11 of 20
`
`
`
`U.S. Patent
`
`May 21, 2002
`
`Sheet 7 of 8
`
`US 6,393,497 B1
`
`CLENT TRANSMITS ACALL OR REGUEST
`FOR A PARTICULAR OBJECT
`
`701
`
`
`
`SERVER RECEIVES THE CALL
`
`702
`
`703
`
`SERVER RETURNSA SMART PROXY WITH AN
`EMBEDDED STUBIN RESPONSE TO THE CALL
`
`CLIENT INVOKES METHOD ON SMART PROXY
`
`
`
`
`
`705
`
`PRE-PROCESSING
`REOURED?
`
`704
`7O6
`YES PERFORMLOCAL
`PRE-PROCESSENG
`
`
`
`707
`
`METHOD SERVICED
`LOCALY?
`
`YES
`
`709
`
`
`
`
`
`711
`
`PERFORMLOCAL
`PROCESSING
`
`708
`
`CALL REMOTE OBJECT
`
`PERFORMREMOTE
`PROCESSING
`
`RETURN RESULT
`OF REMOTE
`PROCESSSING
`
`
`
`712
`
`
`
`POST-PROCESSING
`REOURED?
`
`
`
`
`
`714
`
`NO
`RETURN METHOD
`CALL RESULT
`
`PERFORM (LOCAL)
`YES POST-PROCESSING
`
`713
`
`FIG. 7
`
`APPL-1006 / Page 12 of 20
`
`
`
`U.S. Patent
`
`May 21, 2002
`
`Sheet 8 of 8
`
`US 6,393,497 B1
`
`800
`
`PROCESSING
`NVOKED
`
`UPDATED
`PROCESSING
`REOURED?
`
`
`
`
`
`DOWNLOAD
`CODE AND
`UPDATE
`PROCESSING
`
`
`
`
`
`802
`
`
`
`804
`
`PERFORM
`PROCESSING
`
`FIG. 8
`
`APPL-1006 / Page 13 of 20
`
`
`
`US 6,393,497 B1
`
`1
`DOWNLOADABLE SMART PROXES FOR
`PERFORMING PROCESSING ASSOCATED
`WITH A REMOTE PROCEDURE CALL INA
`DISTRIBUTED SYSTEM
`
`REFERENCE TO RELATED APPLICATIONS
`Provisional U.S. patent application No. 60/076,048,
`entitled “Distributed Computing System,” filed on Feb. 26,
`1998.
`U.S. patent application Ser. No. 09/044,923, entitled
`“Method and System for Leasing Storage,” filed on the same
`date herewith.
`U.S. patent application Ser. No. 09/044,838, entitled
`"Method, Apparatus, and Product for Leasing of Delegation
`Certificates in a Distributed System,” filed on the same date
`herewith.
`U.S. patent application Ser. No. 09/044,834, entitled
`“Method, Apparatus and Product for Leasing of Group
`Membership in a Distributed System,” filed on the same date
`herewith.
`U.S. patent application Ser. No. 09/044,916, entitled
`“Leasing for Failure Detection,” filed on the same date
`herewith.
`U.S. patent application Ser. No. 09/144933, entitled
`“Method for Transporting Behavior in Event Based
`System,” filed on the same date herewith.
`U.S. patent application Ser. No. 09/044.919, entitled
`“Deferred Reconstruction of Objects and Remote Loading
`for Event Notification in a Distributed System,” filed on the
`Same date here with.
`U.S. patent application Ser. No. 09/044.938, entitled
`"Methods and Apparatus for Remote Method Invocation,”
`filed on the same date herewith.
`U.S. patent application Ser. No. 09/045,652, entitled
`“Method and System for Deterministic Hashes to Identify
`Remote Methods, filed on the same date herewith.
`U.S. patent application Ser. No. 09/044,790, entitled
`“Method and Apparatus for Determining Status of Remote
`Objects in a Distributed System,” filed on the same date
`herewith.
`U.S. patent application Ser. No. 09/044,917, entitled
`“Suspension and Continuation of Remote Methods,” and
`filed on the same date herewith.
`U.S. patent application Ser. No. 09/044,835, entitled
`“Method and System for Multi-Entry and Multi-Template
`Matching in a Database,” filed on the same date herewith.
`U.S. patent application Ser. No. 09/044,839, entitled
`“Method and System for In-Place Modifications in a
`Database,” filed on the same date herewith.
`U.S. patent application Ser. No. 09/044,945, entitled
`“Method and System for Typesafe Attribute Matching in a
`Database,” filed on the same date herewith.
`U.S. patent application Ser. No. 09/044,931, entitled
`“Dynamic Lookup Service in a Distributed System,” filed on
`the same date here with.
`U.S. patent application Ser. No. 09/044,939, entitled
`“ Apparatus and Method for Providing Downloadable Code
`for Use in Communicating with a Device in a Distributed
`System,” filed on the same date herewith.
`U.S. patent application Ser. No. 09/044,826, entitled
`“Method and System for Facilitating Access to a Lookup
`Service, filed on the same date herewith.
`U.S. patent application No. 09/030,840, entitled “Method
`and Apparatus for Dynamic Distributed Computing Over a
`Network, ' and filed on Feb. 26, 1998.
`
`2
`U.S. patent application Ser. No. 09/044.932, entitled
`“ Apparatus and Method for Dynamically Verifying Infor
`mation in a Distributed System,” filed on the same date
`herewith.
`U.S. patent application Ser. No. 09/044,936, entitled “An
`Interactive Design Tool for Persistent Shared Memory
`Spaces, filed on the same date herewith.
`U.S. patent application Ser. No. 09/044,934, entitled
`“Polymorphic Token Based Control,” filed on the same date
`herewith.
`U.S. patent application Ser. No. 09/044.915, entitled
`"Stack-Based Access Control, filed on the same date here
`with.
`U.S. patent application Ser. No. 09/044,944, entitled
`“Stack-Based Security Requirements, filed on the same
`date herewith.
`U.S. patent application Ser. No. 09/044,837, entitled
`“Per-Method Designation of Security Requirements, filed
`on the same date here with.
`
`15
`
`FIELD OF THE INVENTION
`The present invention relates to a System and method for
`transmitting objects between machines in a distributed Sys
`tem and more particularly relates to transmission of a
`representation of a remote object including code for local
`processing.
`
`25
`
`BACKGROUND OF THE INVENTION
`Distributed programs which concentrate on point-to-point
`data transmission can often be adequately and efficiently
`handled using Special-purpose protocols for remote terminal
`access and file transfer. Such protocols are tailored specifi
`cally to the one program and do not provide a foundation on
`which to build a variety of distributed programs (e.g.,
`distributed operating Systems, electronic mail Systems, com
`puter conferencing Systems, etc.).
`While conventional transport Services can be used as the
`basis for building distributed programs, these Services
`exhibit many organizational problems, Such as the use of
`different data types in different machines, lack of facilities
`for Synchronization, and no provision for a simple program
`ming paradigm.
`Distributed systems usually contain a number of different
`types of machines interconnected by communications net
`WorkS. Each machine has its own internal data types, its own
`address alignment rules, and its own operating System. This
`heterogeneity causes problems when building distributed
`Systems. As a result, program developerS must include in
`programs developed for Such heterogeneous distributed SyS
`tems the capability of ensuring that information is handled
`and interpreted consistently in different machines.
`However, one Simplification is afforded by noting that a
`large proportion of programs use a request and response
`interaction between processes where the initiator (i.e., pro
`gram initiating a communication) is blocked out until the
`response is returned and is thus idle during this time. This
`can be modeled by a procedure call mechanism between
`processes. One Such mechanism is referred to as the remote
`procedure call (RPC).
`RPC is a mechanism for providing Synchronized commu
`nication between two processes (e.g., program, applet, etc.)
`running on the same machine or different machines. In a
`Simple case, one process, e.g., a client program, Sends a
`message to another process, e.g., a Server program. In this
`case, it is not necessary for the processes to be Synchronized
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`APPL-1006 / Page 14 of 20
`
`
`
`3
`either when the a message is Sent or received. It is possible
`for the client program to transmit the message and then
`begin a new activity, or for the Server program's environ
`ment to buffer the incoming message until the Server pro
`gram is ready to process a new message.
`RPC, however, imposes constraints on Synchronism
`because it closely models the local procedure call, which
`requires passing parameters in one direction, blocking the
`calling process (i.e., the client program) until the called
`procedure of the Server program is complete, and then
`returning a response. RPC thus involves two message
`transfers, and the Synchronization of the two processes for
`the duration of the call.
`The R-PC mechanism is usually implemented in two
`processing parts using the local procedure call paradigm,
`one part being on the client Side and the other part being on
`the server side. Both of these parts will be described below
`with reference to FIG. 1.
`FIG. 1 is a diagram illustrating the flow of call informa
`tion using an RPC mechanism. As shown in FIG. 1, a client
`program 100 issues a call (step 102). The RPC mechanism
`101 then packs the call as arguments of a call packet (Step
`103), which the RPC mechanism 101 then transmits to a
`server program 109 (step 104). The call packet also contains
`information to identify the client program 100 that first sent
`the call. After the call packet is transmitted (step 104), the
`RPC mechanism 101 enters a wait state during which it
`waits for a response from the server program 109.
`The RPC mechanism 108 for the server program 109
`(which may be the same RPC mechanism as the RPC
`mechanism 101 when the server program 109 is on the same
`platform as the client program 100) receives the call packet
`(step 110), unpacks the arguments of the call from the call
`packet (step 111), identifies, using the call information, the
`server program 109 to which the call was addressed, and
`provides the call arguments to the server program 109.
`The server program receives the call (step 112), processes
`the call by invoking the appropriate procedure (Step 115),
`and returns a response to the RPC mechanism 108 (step
`116). The RPC mechanism 108 then packs the response in a
`response packet (Step 114) and transmits it to the client
`program 100 (step 113).
`Receiving the response packet (step 107) triggers the RPC
`mechanism 101 to exit the wait state and unpack the
`response from the response packet (step 106). RPC 101 then
`provides the response to the client program 100 in response
`to the call (step 105). This is the process flow of the typical
`RPC mechanism modeled after the local procedure call
`paradigm. Since the RPC mechanism uses the local proce
`dure call paradigm, the client program 100 is blocked at the
`call until a response is received. Thus, the client program
`100 does not continue with its own processing after Sending
`the call; rather, it waits for a response from the Server
`program 109.
`The Java" programming language is an object-oriented
`programming language that is typically compiled into a
`platform-independent format, using a bytecode instruction
`Set, which can be executed on any platform Supporting the
`Java virtual machine (JVM). This language is described, for
`example, in a text entitled “The Java Language Specifica
`tion” by James Gosling, Bill Joy, and Guy Steele, Addison
`Wesley, 1996, which is incorporated herein by reference.
`The JVM is described, for example, in a text entitled “The
`Java Virtual Machine Specification,” by Tim Lindholm and
`Frank Yellin, Addison Wesley, 1996, which is incorporated
`herein by reference. Java and Java-based trademarks are
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 6,393,497 B1
`
`4
`trademarks or registered trademarks of Sun MicroSystems,
`Inc. in the United States and other countries.
`Because the JVM may be implemented on any type of
`platform, implementing distributed progra