KR20010034515A - Method and system for facilitating access to a lookup service - Google Patents

Method and system for facilitating access to a lookup service Download PDF

Info

Publication number
KR20010034515A
KR20010034515A KR1020007009230A KR20007009230A KR20010034515A KR 20010034515 A KR20010034515 A KR 20010034515A KR 1020007009230 A KR1020007009230 A KR 1020007009230A KR 20007009230 A KR20007009230 A KR 20007009230A KR 20010034515 A KR20010034515 A KR 20010034515A
Authority
KR
South Korea
Prior art keywords
service
stub
client
receiving
network
Prior art date
Application number
KR1020007009230A
Other languages
Korean (ko)
Inventor
쉐이플러로버트
월라스앤엠
왈도제임스에이치
Original Assignee
케네쓰 올센
선 마이크로시스템즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/044,826 external-priority patent/US6832223B1/en
Application filed by 케네쓰 올센, 선 마이크로시스템즈, 인코포레이티드 filed Critical 케네쓰 올센
Priority claimed from PCT/US1999/004066 external-priority patent/WO1999044134A1/en
Publication of KR20010034515A publication Critical patent/KR20010034515A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

룩업 서비스를 통해 서비스에의 액세스를 용이하게 하는 방법 및 시스템이 제공된다. 룩업 서비스는 서비스의 네트워크 디렉토리를 정의하고, 이들 서비스에 대한 참조를 저장한다. 네트워크 상의 서비스의 사용을 요구하는 클라이언트는 서비스의 사용자 액세스를 용이하게 하는 스터브 정보를 반환하는 룩업 서비스를 액세스한다. 클라이언트는 이 스터브 정보를 사용하여 서비스를 액세스한다.A method and system are provided that facilitate access to a service through a lookup service. Lookup services define network directories of services and store references to these services. A client requesting the use of a service on the network accesses a lookup service that returns stub information that facilitates user access to the service. The client uses this stub information to access the service.

Description

룩업 서비스에의 액세스를 용이하게 하는 방법 및 시스템{METHOD AND SYSTEM FOR FACILITATING ACCESS TO A LOOKUP SERVICE}METHOD AND SYSTEM FOR FACILITATING ACCESS TO A LOOKUP SERVICE}

현대의 "기업체" 컴퓨팅에서, 대용량 기억 장치 시스템과 같은 많은 퍼스널 컴퓨터, 워크스테이션, 및 다른 장치, 네트워크 프린터, 및 공중 전화 시스템에의 인터페이스는 전형적으로 하나 이상의 컴퓨터 네트워크에 상호접속되어 있다. 퍼스널 컴퓨터와 워크스테이션은 사용자가 네트워크 대용량 기억 서브시스템에 저장될 수 있는 데이타 및 프로그램과 연결하여 처리를 수행하는데 사용된다. 이와 같은 구성에서, 클라이언트로서 동작하는 퍼스널 컴퓨터/워크스테이션은 전형적으로 처리하기 위해 네트워크 대용량 기억 서브시스템으로부터 데이타와 프로그램을 다운로드한다. 또한, 퍼스널 컴퓨터 또는 워크스테이션은, 처리된 데이타가 기억시키기 위한 대용량 기억 서브시스템에, 인쇄하기 위한 네트워크 프린터에, 공중 전화 시스템을 통해 전송하기 위한 텔레포니 인터페이스 등에 업로드(uploaded)되게 한다. 이와 같은 구성에서, 네트워크 대용량 기억 서브시스템, 네트워크 프린터 및 텔리포니 인터페이스는, 네트워크 내의 모든 클라이언트로부터의 요청을 서비스하는데 이용가능하기 때문에 서버로서 동작한다. 이와같이 네트워크를 구성함으로써, 서버는 네트워크 내의 모든 퍼스널 컴퓨터/워크스테이션에 의해 용이하게 사용하다. 이와 같은 네트워크는 퍼스널 컴퓨터/네트워크가 전선 또는 광섬유와 같은 통신 링크에 의해 상호접속된 상당히 넓은 범위에 걸쳐 확산될 수 있다.In modern "enterprise" computing, interfaces to many personal computers, workstations, and other devices such as mass storage systems, network printers, and public telephone systems are typically interconnected to one or more computer networks. Personal computers and workstations are used to perform processing in conjunction with data and programs that users can store in network mass storage subsystems. In such a configuration, a personal computer / workstation that acts as a client typically downloads data and programs from a network mass storage subsystem for processing. The personal computer or workstation also allows the processed data to be uploaded to a mass storage subsystem for storage, to a network printer for printing, to a telephony interface for transmission over a public telephone system, and the like. In such a configuration, the network mass storage subsystem, network printer, and telephony interface act as servers because they are available to service requests from all clients in the network. By configuring the network in this way, the server is easily used by all personal computers / workstations in the network. Such networks can spread over a fairly wide range of personal computers / networks interconnected by communication links such as wires or optical fibers.

처리하기 위해 서버로부터 정보를 다운로드하는 것 이외에, 클라이언트는 프로그램을 처리하면서 클라이언트에 의해 제공된 임의의 "파라메타" 정보와 결합하여 특정 루틴 및 프로시져(일반적으로 "프로시져")의 서버 컴퓨터에 의한 처리를 원격으로 초기화할 수 있다. 서버가 프로시져를 처리한 후에, 이는 클라이언트에 나중에 그 처리 동작에 사용할 수 있는 처리의 결과를 제공한다. 전형적으로, 이와 같은 "원격 프로시져 호출"에서 프로그램은, 호출될 때 특정 프로시져를 구현하는 요청을 서버에 전달하고, 그 결과를 수신하며, 이를 프로그램에 제공하는 국부적 "스터브(stub)"를 사용할 것이다. 종래에, 스터브는 원격 프로시져를 호출하는데 필요한 정보가 프로그램이 실행될 때마다 보다는 컴파일시 결정되어야 하는 경우에, 프로그램으로 컴파일되어야만 한다. 클라이언트의 프로그램에 이용가능한 스터브가 정적(static)이기 때문에, (프로그램이) 컴파일될 때 프로그램에 대해 결정될 수 있는 가장 가까운 것이 제공되어야 한다. 따라서, 프로그램에 제공된 스터브와, 프로그램이 실행될 때 호출되는 원격 프로시져 구비조건 간의 불일치로 인해 에러와 비효율이 발생할 수 있다.In addition to downloading information from the server for processing, the client processes the program and, in conjunction with any "parameter" information provided by the client, remotely processes the processing by the server computer of certain routines and procedures (generally "procedures"). Can be initialized with After the server has processed the procedure, it provides the client with the results of the processing that can later be used for that processing operation. Typically, in such a "remote procedure call", the program will use a local "stub" that, when invoked, sends a request to the server that implements a particular procedure, receives the results, and provides it to the program. . Conventionally, stubs must be compiled into a program if the information needed to call a remote procedure must be determined at compile time rather than each time the program is executed. Since the stub available to the client's program is static, the closest thing that can be determined for the program when it is compiled should be provided. Thus, errors and inefficiencies may occur due to inconsistencies between the stubs provided in the program and the remote procedure requirement invoked when the program is executed.

본 발명은 총체적으로 데이타 처리 시스템에 관한 것으로, 더 상세하게는 룩업 서비스(lookup service)에의 액세스를 용이하게 하는 방법 및 시스템에 관한 것이다.The present invention relates generally to data processing systems, and more particularly, to a method and system for facilitating access to a lookup service.

본 발명은 특허청구범위에 특수하게 지적되었다. 본 발명의 상기 및 다른 장점은 첨부 도면을 참조한 다음의 상세한 설명을 참조하므로서 보다 잘 이해할 수 있다.The invention has been particularly pointed out in the claims. The above and other advantages of the present invention can be better understood by referring to the following detailed description with reference to the accompanying drawings.

도 1은 한 어드레스 공간에서 동작하는 프로그램이 다른 어드레스 공간에서의 원격 메소드 또는 프로시져의 처리를 호출할 수 있게 하는 "스터브" 정보를 얻고, 이를 동적으로 로딩하며 이를 사용하는 것을 용이하게 하는, 본 발명에 따라 구성된 구조를 포함하는 컴퓨터 네트워크의 기능 블럭도.1 is a diagram of an embodiment of the present invention that obtains "stub" information that allows a program running in one address space to invoke the processing of a remote method or procedure in another address space, dynamically loads it, and facilitates its use. A functional block diagram of a computer network including a structure constructed according to.

도 2 및 3는 도 1에 도시된 구조에 의해 수행되는 동작을 도시하는 순서도로, 도 2는 스터브 정보를 얻고, 이를 동적으로 로드하는 것과 관련하여 수행되는 동작들을 도시하고, 도 3은 원격 메소드 또는 프로시져의 처리를 호출하는 스터브 정보의 사용과 관련되어 수행되는 동작을 도시하는 도면.2 and 3 are flow charts illustrating operations performed by the structure shown in FIG. 1, FIG. 2 illustrates operations performed in connection with obtaining stub information and dynamically loading it, and FIG. 3 a remote method. Or an operation performed in connection with the use of stub information to invoke the processing of a procedure.

도 4는 본 발명에 따른 룩업 서비스를 도시하는 도면.4 illustrates a lookup service according to the present invention.

도 5는 본 발명에 따른 룩업 서비스에 스터브를 부가하는 방법을 도시하는 순서도.5 is a flow chart illustrating a method for adding a stub to a lookup service according to the present invention.

도 6은 본 발명에 따른 시스템에 의해 룩업 서비스로부터의 스터브를 검색하는 방법을 도시하는 순서도.6 is a flow chart illustrating a method for retrieving stubs from a lookup service by a system in accordance with the present invention.

한 어드레스 공간에서 동작하는 프로그램이 다른 어드레스 공간 내의 메소드 또는 프로시져의 처리를 호출함으로써, 프로그램이 컴파일되 때를 정적으로 결정하기 보다는 프로그램이 실행되고 필요할 때 프로그램에 의해 스터브가 실행되는, 스터브를 얻고 동적으로 로딩하는 것을 용이하게 하는 신규하고 개선된 시스템 및 방법이 제공된다. 참으로, 로드되는 스터브는 원격 메소드 또는 프로시져를 제공하는 자원으로부터 얻어질 수 있고, 스터브는 원격 메소드 또는 프로시져의 호출 조건을 정확하게 정의할 수 있다. 스터브를 찾을 수 있고 프로그램이 컴파일될 때가 정적으로 결정되기 보다는 프로그램을 실행되고 있는 동안 동적으로 로드될 수 있기 때문에, 제공된 스터브와, 호출되는 메소드 또는 프로시져의 구비조건 간의 부정합으로 초래될 수 있는 런타임 에러와 비효율이 최소화될 수 있다. 본 발명의 대체 실시예에서, 스터브는 룩업 서비스에 정의된 서브스에의 액세스를 제공하는 룩업 서비스로부터 얻어진다.A program running in one address space invokes the processing of a method or procedure in another address space to obtain stubs and dynamically execute stubs that are executed by the program when needed and rather than statically determining when the program is compiled. Novel and improved systems and methods are provided that facilitate loading with. Indeed, the stub to be loaded can be obtained from the resource providing the remote method or procedure, and the stub can accurately define the calling condition of the remote method or procedure. Because stubs can be found and loaded dynamically while the program is running, rather than statically determined when the program is compiled, run-time errors that can result from a mismatch between the provided stub and the preconditions of the method or procedure being called. And inefficiency can be minimized. In an alternative embodiment of the invention, the stub is obtained from a lookup service that provides access to the subs defined in the lookup service.

요약해서, 본 발명의 대체 실시예에 따른 방법 및 시스템은 룩업 서비스를 통해 서비스에의 액세스를 용이하게 한다. 룩업 서비스는 서비스의 네트워크 디렉토리를 정의하고, 이들 서비스에의 참조를 저장한다. 네트워크 상의 서비스의 사용을 요구하는 클라이언트는, 서비스의 사용자 액세스를 용이하게 하는 스터브 정보를 반환하는 룩업 서비스를 액세스한다. 클라이언트는 이 스터브 정보를 사용하여 서비스를 액세스한다.In summary, methods and systems in accordance with alternative embodiments of the present invention facilitate access to services via lookup services. Lookup services define network directories of services and store references to these services. A client requesting the use of a service on the network accesses a lookup service that returns stub information that facilitates user access to the service. The client uses this stub information to access the service.

도 1은 한 어드레스 공간에서 동작하는 프로그램이 다른 어드레스 공간에서의 메소드 또는 프로시져의 처리를 원격으로 호출할 수 있게 하는 "스터브" 정보의 동적 로딩을 용이하게 하는 구성을 포함하는 컴퓨터 네트워크(10)의 개략도로, 여기서 이 메소드 및 프로시져는 네트워크 서비스를 나타낸다. 도 1을 참조하면, 컴퓨터 네트워크(10)는 복수의 클라이언트 컴퓨터(11(I) 내지 11(N))(총체적으로 참조번호 11(n)로 지칭함), 복수의 서버 컴퓨터(12(I) 내지 12(M))(총체적으로 참조번호 12(m)으로 지칭함)를 포함한다. 이들 모두는 통신 링크(14)로 표현된 네트워크로 상호접속되어 있다. 또한, 네트워크(10)는 그 목적이 이하에 설명되는 통신 링크(14)에 접속될 수 있는 적어도 하나의 네임서버 컴퓨터(13)를 포함할 수 있다. 종래에서와 같이, 클라이언트 컴퓨터(11(n))중 적어도 일부는 퍼스널 컴퓨터 또는 컴퓨터 네트워크 형태이고, 이들 각각은 전형적으로 시스템 유닛, 비디오 디스플레이 유닛, 및 키보다와 마우스와 같은 운영자 입력 장치(이들 모두는 도시안됨)를 포함한다. 서버 컴퓨터(12(m))와 네임 컴퓨터(13)는 또한 전형적으로 시스템 유닛(도시안됨)을 포함하고, 또한 비디오 디스플레이 유닛과 운영자 입력 장치를 포함할 수 있다.1 illustrates a configuration of a computer network 10 that includes a configuration that facilitates dynamic loading of "stub" information that allows a program running in one address space to remotely invoke the processing of a method or procedure in another address space. Schematically, this method and procedure here represents a network service. Referring to Fig. 1, the computer network 10 includes a plurality of client computers 11 (I) to 11 (N) (collectively referred to as reference numeral 11 (n)), and a plurality of server computers 12 (I) to 12 (M)) (collectively referred to by reference number 12 (m)). All of these are interconnected in a network represented by communication link 14. In addition, the network 10 may include at least one name server computer 13 whose purpose may be connected to the communication link 14 described below. As conventionally, at least some of the client computer 11 (n) is in the form of a personal computer or computer network, each of which is typically a system unit, a video display unit, and an operator input device such as a mouse and a mouse (both of them) (Not shown). Server computer 12 (m) and naming computer 13 also typically include a system unit (not shown), and may also include a video display unit and an operator input device.

클라이언트 컴퓨터(11(n)), 서버 컴퓨터(12(m)) 및 네임서버 컴퓨터(13)는 종래 의 모든 기억 프로그램 컴퓨터 아키텍춰이다. 시스템 유닛은 일반적으로 처리, 메모리, 디스크 및/또는 테이프 기억소자와 대용량 기억장치, 및 각각의 컴퓨터를 통신 링크(14)에 인터페이스하기 위한 네트워크 인터페이스 장치(15(n), 16(m))를 포함한 다른 소자(별도로 도시되지 않음)를 포함한다. 비디오 디스플레이 유닛은 컴퓨터가 처리된 데이타 및 처리 상태를 운영자에게 디스플레이할 수 있게 하며, 운영자 입력 장치는 운영자가 데이타 및 컴퓨터에 의한 제어 처리를 입력할 수 있게 한다. 컴퓨터(11(n) 및 12(m) 및(13))는 메시지의 형태로 통신 링크(14)를 통해 상호에 대해 각각의 네트워크 인터페이스 장치(15(n), 16(m))를 통해 정보를 전송한다.The client computer 11 (n), server computer 12 (m) and name server computer 13 are all conventional storage program computer architectures. The system unit generally includes processing, memory, disk and / or tape storage devices and mass storage devices, and network interface devices 15 (n) and 16 (m) for interfacing each computer to the communication link 14. Other elements (not shown separately) included. The video display unit enables the computer to display processed data and processing status to the operator, and the operator input device allows the operator to input data and control processing by the computer. Computers 11 (n) and 12 (m) and 13 are informed via respective network interface devices 15 (n) and 16 (m) with respect to each other via communication link 14 in the form of messages. Send it.

한 실시예에서, 네트워크(10)는 컴퓨터(12(m))로서 도 1에 도시된 하나 이상의 컴퓨터가 서버로서 동작하고, 컴퓨터(11(n))로서 도 1에 도시된 다른 컴퓨터가클라이언트로서 동작하는 "클라이언트-서버" 구성으로 구성되어 있다. 한 특징에서, 하나의 서버 컴퓨터(12(m))는 "파일 서버"로서 그 처리 동작에 사용하기 위해 통신 링크(13)를 통해 클라이언트 컴퓨터에 의해 검색되는데 이용가능한 프로그램 의 복사본과 데이타를 저장할 수 있는 대용량 기억장치를 포함할 수 있다. 때때로, 클라이언트 컴퓨터(11(n))는 또한 그것(데이타를 저장한 클라이언트 컴퓨터) 또는 그 처리 동작에 사용하기 위한 다른 클라이언트 컴퓨터에 의해 나중에 검색될 수 있는 서버 컴퓨터(12) 상에 데이타를 저장할 수 있다. 또한, 하나 이상의 서버 컴퓨터(12(m))는 "컴퓨터 서버"로서 클라이언트 컴퓨터(11(n))로부터 원격 요청에 응답해서 임의의 처리 동작을 수행하고, 다음 처리에서 그 처리 결과를 그들(즉, 요청하는 클라이언트 컴퓨터(11(n)))에 의해 사용하기 위해 요청하는 클라이언트 컴퓨터(11(n))에 반환한다. 어느 경우에든, 서버 컴퓨터는 일반적으로 시스템 유닛, 비디오 디스플레이 유닛 및 운영자 입력 장치를 포함하는 클라이언트 컴퓨터(11(n))와 유사할 수 있고, 클라이언트 컴퓨터와 유사한 방식으로 운영자에 의해 데이타 처리 동작에 사용가능할 수 있다. 선택적으로, 서버 컴퓨터중의 적어도 일부는 처리 전용, 메모리, 대용략 기억장치 및 검색을 수신하고 처리하기 위한 네트워크 인터페이스 소자, 클라이언트 컴퓨터로부터의 기억 또는 원격 처리 요청, 및 그에 대한 응답의 발생을 포함할 수 있다. 클라이언트 컴퓨터(11(n))는 또한 서버 컴퓨터(12(m))에 의해 수행되는 바와 같이 설명된 동작을 수행할 수 있고, 유사하게 서버 컴퓨터(12(m))는 또한 클라이언트 컴퓨터클라이언트(11(n))에 의해 수행되는 것과 같이 설명된 동작을 수행할 수 있다.In one embodiment, network 10 is a computer 12 (m) in which one or more computers shown in FIG. 1 operate as servers, and as computer 11 (n), other computers shown in FIG. 1 as clients. It consists of a working "client-server" configuration. In one aspect, one server computer 12 (m) may store a copy and data of a program available for retrieval by the client computer via communication link 13 for use in its processing operation as a "file server". It can include a mass storage device. At times, the client computer 11 (n) may also store data on the server computer 12 which can later be retrieved by it (the client computer that has stored the data) or by another client computer for use in its processing operations. have. In addition, one or more server computers 12 (m) perform any processing operation in response to a remote request from client computer 11 (n) as a "computer server" and, in the next processing, process those processing results (i.e., It returns to the requesting client computer 11 (n) for use by the requesting client computer 11 (n). In either case, the server computer may generally be similar to the client computer 11 (n) comprising a system unit, a video display unit and an operator input device, and used for data processing operations by the operator in a manner similar to the client computer. It may be possible. Optionally, at least some of the server computers may include processing only, memory, mass storage and network interface elements for receiving and processing retrieval, storage or remote processing requests from client computers, and the generation of responses thereto. Can be. The client computer 11 (n) may also perform the described operations as performed by the server computer 12 (m), and similarly the server computer 12 (m) may also perform the client computer client 11 The operations described may be performed as performed by (n)).

통신 네트워크(14)에 의해 표현된 네트워크는, 예를 들어, 전형적으로 개별적인 기업체 내에 유지되는 국부 지역 네트워크(LAN) 및 광대역 네트워크(WAM), 공중 전화 시스템, 인터넷, 및 다양한 구성요소들증에 디지털 데이터를 전송할 수 있는 다른 네트워크를 포함한 클라이언트 컴퓨터(11(n)), 서버 컴퓨터(12(m)) 및 네임서버 컴퓨터(13)를 통신할 수 있다. 네트워크는 예를 들어, 무선, 광섬유, 무선 링크 및/또는 전형적으로 도 1에 도시된 다양한 컴퓨터들중에 정보를 나타내는 신호를 운반하기 위한 다른 매체를 포함하는 많은 통신 매체들중 임의의 매체를 사용하여 구현될 수 있다. 설명한 바와 같이, 컴퓨터의 각각은 전형적으로 각각의 컴퓨터를 통신 링크(14)에 접속하고, 그를 통해 정보를 송신하고 수신할 수 있게 하는 네트워크 인터페이스를 포함한다.The network represented by the communication network 14 may be digital, for example, in a local area network (LAN) and broadband network (WAM), public telephone systems, the Internet, and various components that are typically maintained within individual businesses. The client computer 11 (n), the server computer 12 (m), and the name server computer 13, including other networks capable of transferring data, can communicate. The network may use any of a number of communication media, including, for example, wireless, optical fiber, wireless links, and / or other media for carrying signals representing information, typically among the various computers shown in FIG. Can be implemented. As described, each of the computers typically includes a network interface that connects each computer to the communication link 14 and enables transmission and reception of information therethrough.

본 발명에 따른 시스템은 "스터브" 정보의 얻음과 동적 로딩을 용이하게 하여, 한 어드레스 공간에서 동작하는 프로그램이 호출하는 프로그램고 동일한 컴퓨터 또는 서로 다른 컴퓨터 상으로 로드될 수 있는 다른 어드레스 공간 내의 원격 메소드 또는 프로시져의 처리를 호출할 수 있게 한다. 본 발명의 참조로 일체화되어 있으며, Java 버츄얼 머신에 의해 제공되는 실행 환경과 관련하여 처리되는 James Gosling, Bill Joy, Guy Steele에 의한 "The JavaTMLanguage Specification"(Addison-Wesley, 1996)(이하에, "JavaTM언어 명세서"라고 함)에 설명된 바와 같이 JavaTM프로그래밍 언어로 제공된 프로그램을 참조할 것이다. Java 버츄얼 머신은 또한 본 발명의 참조로서 일체화되어 있는 Lindholm 및 Yellin에 의한 "The Java Virtual Machine Specification"(Addison-Wesley, 1996)에 설명되어 있다. Java 언어 명세서에 설명된 바와 같이, Java 프로그래밍 언어의 프로그램은 "클래스"와 "인터페이스"를 정의한다. 클래스는 하나 이상의 메소드 또는 프로시져를 정의하는데 사용되고, 이들 각각은 인터페이스에 대한 참조로서 호출될 수 있다. 클래스는 "슈퍼-클래스(super-class)"와 연관되고 이를 확장할 수 있으며, 이와 같은 점에서 슈퍼-클래스의 모든 인터페이스 및 메소드를 일체화하고, 또한 부수적인 인터페이스 및/또는 메소드를 포함한다. 클래스는 또한 각각의 슈퍼-클래스가 그들 각각의 슈퍼-클래스를 일체화하고 가능하게 이를 확장하는 하나 이상의 슈퍼-클래스(및 따라서 그 서브-클래스 각각의 슈퍼-클래스를 포함함)를 가질 수 있다.The system according to the invention facilitates the acquisition and dynamic loading of "stub" information, so that programs operating in one address space are called by remote methods in different address spaces that can be loaded on the same computer or on different computers. Or you can call the procedure's processing. "The Java TM Language Specification" (Addison-Wesley, 1996) by James Gosling, Bill Joy, Guy Steele, incorporated herein by reference and processed in connection with the execution environment provided by a Java virtual machine (hereinafter Reference is made to a program provided in the Java TM programming language, as described in "Java TM Language Specification". The Java virtual machine is also described in "The Java Virtual Machine Specification" (Addison-Wesley, 1996) by Lindholm and Yellin, which are incorporated herein by reference. As described in the Java Language Specification, programs in the Java programming language define "classes" and "interfaces". Classes are used to define one or more methods or procedures, each of which can be called as a reference to an interface. A class can be associated with and extend a "super-class", in this respect unifying all the interfaces and methods of a super-class, and also including ancillary interfaces and / or methods. A class may also have one or more super-classes (and thus include the super-classes of each of its sub-classes), each super-class uniting and possibly extending their respective super-class.

인터페이스는 일단의 메소드들이 선언(declared)될 수 있는 메커니즘을 제공한다. 이와 같은 점에서, 인터페이스는 예를 들어, 명칭에 의해 인터페이스에 의해 선언된 각각의 메소드를 식별하고, 메소드에 제공될 인수(들)이 데이타 타입(들), 메소드에 의해 반환될 반환 값의 데이타 타입(들), 및 메소드의 처리 동안 던겨질 수 있는 예외용 식별자를 식별한다. 클래스는, 특정 인터페이스를 구현할 수 있다는 것과, 이와 같은 점에서 연결이 인터페이스에서 선언된 모든 메소드를 처리하는데 사용될 프로그램 코드를 포함한다는 것을 가리킨다. 또한, 서로 다른 클래스는 이들이 동일한 인터페이스를 구현할 수 있다는 것과, 각각이 인터페이스에서 선언된 모든 메소드를 처리하는데 사용될 프로그램 코드를 가질 것이지만, 메소드를 처리하는데 사용하기 위해 각각의 클래스에 제공된 프로그램 코드가 동일한 메소드를 처리하는데 사용되는 다른 클래스에 제공된 프로그램 코드와는 다르다는 것을 가리킨다. 따라서, 인터페이스는 임의의 메소드를 처리하는데 사용될 프로시져의 표시를 제공하지 않고 일단의 메소드가 선언될 수 있는 메커니즘을 제공한다. 인터페이스는 인터페이스를 사용하여 호출될 수 있는 메소드들 또는 메소드를 구현하는 특정 클래스에 무관하게 선언될 수 있다. 이와 같은 점에서, 메소드를 호출하는 클래스, 및 이 메소드를 실제로 실시하는 클래스는 공통 슈퍼-클래스를 공유할 필요가 없다.An interface provides a mechanism by which a set of methods can be declared. In this regard, the interface identifies each method declared by the interface by name, for example, and the argument (s) to be provided to the method is the data type (s), the data of the return value to be returned by the method. Identifies the type (s) and the identifier for the exception that may be thrown during processing of the method. A class indicates that a particular interface can be implemented, and that in this respect the connection contains program code that will be used to handle all the methods declared in the interface. Also, different classes will have the same code that they can implement the same interface, and that each will have program code that will be used to handle all the methods declared in the interface, but the program code provided to each class for use in processing the method is the same method. This is different from the program code provided for other classes used to handle. Thus, the interface provides a mechanism by which a set of methods can be declared without providing an indication of the procedure to be used to handle any method. An interface can be declared independent of the methods that can be called using the interface or the specific class that implements the method. In this sense, the class that invokes the method, and the class that actually implements the method, do not need to share a common super-class.

Java 프로그램의 처리 동안, Java 버츄얼 머신 명에서에 설명한 바와 같이, 클라이언트 컴퓨터(11(n))는 Java 프로그램을 해석하기 위한 실행 환경(20)을 제공한다. Java 버츄얼 머신은 제어 모듈(19)의 제어하에 있는 클래스 로더(21)를 포함하고, 프로그램이 실행되는 동안, 참조번호 22에 도 1에 총체적으로 도시한 클래스의 인스턴스를, 실행하는 프로그램의실행 환경으로 링크할 수 있다. 이 동작에서, 제어 모듈(19)은 클래스 로더가를 효율적으로 인에이블시켜, 총체적으로 참조번호 23으로 도시한 비인스턴스화 클래스(uninstantiated classes)를 검색하고, 이들을 클래스 인스턴스(22)로서 각각의 클래스(23)가 구현하는 메소드가 호출됨에 따라 Java 프로그램의 런 타임으로 실행 환경의 어드레스 공간으로 링크한다. 또한, 클래스 로더(21)는 필요하지 않거나 또는 메모리를 보존하기 위해, 클래스 임의의 인스턴스(22)를 폐기할 수 있다. 만일 클래스 인스턴스(22)가 폐기되었다면, 다음에 필요하다면 나중에 클래스 로더(21)에 의해 재로드될 수 있다.During processing of the Java program, as described in Java Virtual Machine Name, the client computer 11 (n) provides an execution environment 20 for interpreting the Java program. The Java virtual machine includes a class loader 21 under the control of the control module 19, and while the program is running, an execution environment of a program for executing an instance of the class collectively shown in FIG. You can link to In this operation, the control module 19 effectively enables the class loader to retrieve non-instantiated classes, collectively indicated by reference 23, and assigns them as class instances 22 to each class ( As the method implemented by 23 is called, it links to the address space of the execution environment at runtime of the Java program. In addition, the class loader 21 may discard any instance 22 of the class in order not to be needed or to conserve memory. If the class instance 22 has been discarded, it can later be reloaded by the class loader 21 later if necessary.

본 발명에 따른 시스템은 클라이언트 컴퓨터(11(n))에 의한 실행 환경(20)에서 실행하는 프로그램에 의해, 서버 컴퓨터(12(m)) 상의 클래스에 의해 구현되는 메소드의 원격 호출을 용이하게 하는 구성을 제공한다. 메소드의 실행에서, 서버 컴퓨터(12(m))는 또한 제어 모듈(28)의 제어 하에 Java 메소드를 처리하기 위한 실행 환경(24)을 제공할 것이다. 이 동작에서, 실행 환경(21)을 제공하는 Java 버츄얼 머신은, 제어 모듈(28)의 제어하에, 클래스(26)의 인스턴스를 동적으로 링크시켜 메소드가 실행 환경(24)에서 처리될 수 있게 하는 클래스 로더(25)(클래스 로더(21)와 유사할 수 있음), 및 원격으로 호출된 메소드를 처리하는데 필요할 수 있는 다른 클래스의 인스턴스(총체적으로 참조번호 26으로 표현함)를 포함한다. 이 동작에서, 제어 모듈(28)은 클래스 로더(25)가 총체적으로 참조번호 27로 표현된 복수의 비인스턴화 클래스로부터 호출될 메소드에 대한 비인스턴스화 클래스를 검색하고, 이를 초기화(즉, 호출될 메소드를 제공하는 비인스턴스화 클래스)하며, 이를 클래스 인스턴스(26)로서 실행 환경에 링크하도록 효율적으로 인에이블시킨다. 또한, 클래스 로더(25)는 메소드의 처리가 종료될 때 클래스 인스턴스(26)를 폐기할 수 있다. 만일 클래스 인스턴스(26)가 폐기되었다면 다음에 필요할 때 나중에 클래스 로더(25)에 의해 재로될 수 있다는 것을 알아야 한다.The system according to the present invention facilitates remote invocation of methods implemented by classes on server computer 12 (m) by a program running in execution environment 20 by client computer 11 (n). Provide configuration. In the execution of the method, server computer 12 (m) will also provide an execution environment 24 for processing Java methods under the control of control module 28. In this operation, the Java virtual machine providing the execution environment 21 dynamically links an instance of class 26, under the control of the control module 28, to allow the method to be processed in the execution environment 24. Class loader 25 (which may be similar to class loader 21), and instances of other classes (collectively denoted by reference numeral 26) that may be needed to handle remotely invoked methods. In this operation, the control module 28 retrieves the non-instantiated class for the method to be called by the class loader 25 from a plurality of non-instantiated classes collectively represented by reference number 27 and initializes (ie Non-instantiated classes that provide methods, and efficiently enable them to link to the execution environment as class instances 26. In addition, the class loader 25 may discard the class instance 26 when the processing of the method is finished. It should be appreciated that if the class instance 26 has been discarded then it can be reloaded later by the class loader 25 as needed.

만일 제공된다면, 네임서버 컴퓨터(13)의 구조는 총체적으로 서버 컴퓨터(12(m))의 그것과 유사하므로 별도로 설명되지 않을 것이다.If provided, the structure of the name server computer 13 will generally not be described separately as it is similar to that of the server computer 12 (m).

메소드의 원격 호출을 용이하게 하기 위해, 클라이언트 컴퓨터의 실행 환경(21)의 제어 모듈(19)은, 원격 메소드를 호출하는 클래스 인스턴스를 포함한 다양한 클래스 인스턴스(22)가 처리되고 있는 실행 환경(21)의 일부로서 제공되고, 총체적으로 참조번호 30으로 표현된 하나 이상의 스터브 클래스 인스턴스를 이용한다. 각각의 스터브 클래스 인스턴스(30)는 비인스턴스화 스터브 클래스(31)의 인스턴스이고, 여기서, 서버 컴퓨터(12(m))는, 서버 컴퓨터(12(m))가 "엑스포트(exported)", 즉 서버 컴퓨터(12(m))가 그에 의해 제공된 메소드의 원격 호출에 사용하기 위한 클라이언트 컴퓨터(11(n))에 이용가능하게 하는 비인스턴스화 클래스(27) 및 다양한 클래스 인스턴스(26)를 유지할 수 있다. 비인스턴스화 스터브 클래스(31)는 호출될 원격 메소드를 구현하는 특정 원격 비인스턴스화 클래스(27)에 대해 인터페이스의 완전한 세트에 대핸 선언을 제공하고, 또한 원격 클래스에 의해 구현되는 원격 메소드(들)의 액세스를 용이하게 하는 메소드를 제공하거나 또는 호출한다. 초기화되고, 스터브 클래스 인스턴스(30)로서 클라이언트 컴퓨터(11(n))의 실행 환경(20)에 제공될 때 비인스턴스화 스터브 클래스(31)는 호출하는 Java 프로그램의 실행 환경(20)의 제어 모듈(19)에 의해 필요한 정보를 제공함으로써, 연관된 클래스에 의해 구현되는 원격 메소드가 특정 실행 환경에서 실행하는 Java 프로그램에 의해 호출될 때에, 원격 메소드가 처리될 것이고 반환 값(들)이 호출하는 Java 프로그램에 제공될 것이다. 한 실시예에서, 스터브 클래스 인스턴스가 실행 환경(20)에 제공될 수 있는 구성은 Waldo 등에 의한 특허출원에 설명된 것과 유사하다.In order to facilitate the remote invocation of the method, the control module 19 of the execution environment 21 of the client computer executes the execution environment 21 in which the various class instances 22 including the class instance invoking the remote method are being processed. It utilizes one or more stub class instances, which are provided as part of and are collectively represented by reference numeral 30. Each stub class instance 30 is an instance of a non-instantiated stub class 31, where the server computer 12 (m) allows the server computer 12 (m) to be " exported " It is possible to maintain the de-instantiated class 27 and the various class instances 26 that the computer 12 (m) makes available to the client computer 11 (n) for use in remote invocation of the methods provided by it. The de-instantiation stub class 31 provides declarations for the complete set of interfaces for a particular remote de-instantiation class 27 that implements the remote method to be invoked, and also provides access to the remote method (s) implemented by the remote class. Provide or call a method that facilitates When it is initialized and provided to the execution environment 20 of the client computer 11 (n) as a stub class instance 30, the non-instantiated stub class 31 is a control module of the execution environment 20 of the calling Java program ( By providing the information required by 19), when a remote method implemented by an associated class is called by a Java program executing in a particular execution environment, the remote method will be processed and the return value (s) will be passed to the calling Java program. Will be provided. In one embodiment, the configuration in which the stub class instance may be provided to the execution environment 20 is similar to that described in the patent application by Waldo et al.

부수적으로, 서버 컴퓨터(20)는 서버 컴퓨터(12(m))에 의해 엑스포트된 특정 클래스와 메스드를 식별하는 스켈턴(skeleton)(20)과, 어떻게 해서 각각의 클래스를 로드하고 그에 의해 제공된 특정 메소드의 처리를 초기화하는지에 대한 정보를 제공한다. 부수적으로, 서버 컴퓨터(12(m))는 네트워크 상에 서비스를 등록하기 위한 룩업 서비스(400)를 포함한다. 룩업 서비스(400)는 이하에 설명한다.Incidentally, the server computer 20 is a skeleton 20 identifying the particular classes and methods exported by the server computer 12 (m), and how to load each class and provided by it. Provides information about whether to initiate the processing of a particular method. Incidentally, the server computer 12 (m) includes a lookup service 400 for registering a service on a network. The lookup service 400 is described below.

클래스 인스턴스가 서버 컴퓨터(12(m))에 의해 유지되는 원격 메소드를 호출하면, 이는 원격 메소드, 즉 그 처리에서 어떤 값이 원격 메소드를 사용할 것인지에 대해, 스터브 클래스 인스턴스(30)에 대한 다양한 파라메타용의 값을 제공할 것이다. 만일 원격 메소드가 호출하는 Java 프로그램과 동일한 컴퓨터 상에서 구현되면, 호출하는 Java 프로그램이 원격 메소드를 호출할 때, 컴퓨터는 실행 환경(20)과 유사하게 실행 환경을 수립하고, 실행 환경의 클래스 로더를 인에이블시켜 이 메소드를 클래스 인스턴스(22)와 유사한 클래스 인스턴스로서 구현하는 클래스를 로드하고 초기화하며, 원격 호출로 호출하는 클래스 인스턴스에 의해 제공된 파라메타의 값을 사용하여 원격 메소드를 처리한다. 메소드의 처리가 완료한 후에, 원격 메소드가 처리되는 실행 환경은, 원격 메소드를 호출한 특정 클래스 인스턴스(22)에 제공하도록 호출된 원격 메소드에 대해 스터브 클래스 인스턴스(30)에 그 결과를 제공할 것이다.When a class instance invokes a remote method maintained by the server computer 12 (m), it is used for the various parameters to the stub class instance 30 for the remote method, that is, what value the remote method will use in its processing. Will give you the value of. If the remote method is implemented on the same computer as the calling Java program, when the calling Java program invokes the remote method, the computer establishes an execution environment similar to the execution environment 20 and loads the class loader of the execution environment. Able to load and initialize a class that implements this method as a class instance similar to class instance 22, and to handle the remote method using the values of the parameters provided by the class instance invoking the remote call. After the processing of the method completes, the execution environment in which the remote method is processed will provide the result to the stub class instance 30 for the remote method called to provide to the particular class instance 22 that invoked the remote method. .

만일 컴퓨터(11(n)) 및 서버 컴퓨터(12(m))가 서로 다른 물리적 컴퓨터 상에서 실행하면 유사한 동작이 수행될 것이다. 이 경우에, 원격 호출에 응답해서, 호출하는 클래스 인스턴스(22)를 처리하는 클라이언트 컴퓨터클라이언트(11(n))는 호출하는 클래스 인스턴스(22)에 대한 실행 환경(20)에 대한 제어 모듈(19)의 제어하에, 적당한 스터브 클래스 인스턴스(30)를 사용하여, 통신 링크(14)로서 표현된 네트워크를 통해, 원격 메소드가 서버 컴퓨터(12(m))를 인에이블시켜 원격 메소드를 구현하는 클래스에 대해 실행 환경(24)을 수립하게 하며, 클래스 로더(25)를 사용하여 클래스의 인스턴스를 클래스 인스턴스(26)로서 로드하도록 구현하는 서버 컴퓨터(12(m))와 통신하게 한다. 또한, 클라이언트 컴퓨터(11(n))는 또한, 네트워크(14)를 통해, 적당한 스터브 클래스 인스턴스(30)를 사용하여 임의의 필요한 파라메타 값을 서버 컴퓨터(12(m))에 제공할 것이다. 그후, 서버 컴퓨터(12(m))는 이와 같이 제공된 파라메타 값을 사용하는 원격 메소드를 처리하여, 네트워크를 통해, 클라이언트 컴퓨터(11(n))에, 특히 적당한 스터브 클래스 인스턴스(30)에 전송되는 결과 값(들)을 발생할 것이다. 클라이언트 컴퓨터(11(n))는 네트워크로부터 결과 값(들)을 수신한 후에, 이들을 그 처리를 위해 호출하는 클래스 인스턴스(22)에 공급할 것이다.If computer 11 (n) and server computer 12 (m) run on different physical computers, similar operations will be performed. In this case, in response to the remote call, the client computer 11 (n), which processes the calling class instance 22, controls the control module 19 for the execution environment 20 for the calling class instance 22. Under the control of a), through a network represented as the communication link 14, using a suitable stub class instance 30, the remote method enables the server computer 12 (m) to implement a class that implements the remote method. Establish an execution environment 24 for the server, and communicate with a server computer 12 (m) that uses a class loader 25 to load an instance of the class as a class instance 26. In addition, the client computer 11 (n) will also provide the server computer 12 (m) with any necessary parameter values using the appropriate stub class instance 30 via the network 14. The server computer 12 (m) then processes the remote method using the parameter values provided in this way and is transmitted over the network to the client computer 11 (n), in particular to the appropriate stub class instance 30. Will result in result (s). After the client computer 11 (n) receives the result value (s) from the network, it will supply them to the class instance 22 that calls for its processing.

어느 경우도, 클라이언트 컴퓨터의 실행 환경(20)의 제어 모듈(19)이 원격 오브젝트에 대한 참조가 수신되었다고 판정할 때, 만일 참조를 수신할 때 스터브 클래스 인스턴스(30)가 존재하지 않는다고 판정하면, 이는 예를 들어, 원격 메소드를 구현하는 서버 컴퓨터(12(m))로부터 스터브 클래스 인스턴스(30)를 얻으려고 시도하고, 스터브 클래스 인스턴스(30)가 호출하는 클래스 인스턴스(22)에 대해 실행 환경(20)에서 동적으로 로드되도록 인에이블시킨다. 원격 오브젝트에 대한 참조는 예를 들어, 다른 원격 메소드 호출의 반환 값 또는 다른 원격 메소드 호출 동안 수신된 파라메타로서 수신될 수 잇다. 스터브 클래스 인스턴스는 실행 환경(20)에서 클래스 인스턴스(22)를 로드하는데 사용되는 것과 유사한 방식으로 실행 환경에 동적으로 로드될 수 있다. 실행 환경(20)에는 제어 모듈(19)의 제어하에 실행 환경에서 처리되는 클래스 인스턴스(22)에 의한 필요에 따라 스터브 클래스 인스턴스(30)를 찾고 로드하려고 시도하는 스터브 클래스 로더(33)가 제공된다. 메소드가 원격으로 호출되도록 구현하는 클래스를 유지하는 특정 서버 컴퓨터(12(m))의 위치가 호출하는 클래스 인스턴스로부터의 호출에 포함될 수 있거나 또는 클라이언트 컴퓨터클라이언트(11(n))에 유지되는 다른 메커니즘(도시되지 않음)을 통해 스터브 클래스 로더(33)에 공지될 수 있다.In either case, when the control module 19 of the execution environment 20 of the client computer determines that a reference to the remote object has been received, if it determines that the stub class instance 30 does not exist when receiving the reference, This is for example an attempt to obtain a stub class instance 30 from a server computer 12 (m) that implements a remote method, and for the class instance 22 that the stub class instance 30 calls, the execution environment ( Enable to load dynamically in 20). References to remote objects may be received, for example, as return values of other remote method calls or as parameters received during other remote method calls. The stub class instance can be dynamically loaded into the execution environment in a manner similar to that used to load class instances 22 in the execution environment 20. The execution environment 20 is provided with a stub class loader 33 which, under the control of the control module 19, attempts to find and load the stub class instance 30 as required by the class instance 22 processed in the execution environment. . The location of the particular server computer 12 (m) that maintains the class that implements the method to be called remotely can be included in the call from the invoking class instance or other mechanism maintained by the client computer 11 (n). It may be known to the stub class loader 33 (not shown).

그러나, 만일 스터브 클래스 로더(33)가 어떤 서버 컴퓨터(12(m))가 원격으로 호출될 수 있는 메소드를 구현하는 클래스를 유지하는지에 대해 통지되지 않으면, 서버네임 컴퓨터(13)를 사용하여 그 식별을 제공한다. 이 식별은 서버 컴퓨터(12(m))를 식별하는데 사용될 수 있는 임의의 식별자, 또는 네트워크(14) 상에서 이용가능하고 서버 컴퓨터(12(m))가 응답할 수 있는 다른 자원을 구비할 수 있다. 예를 들어, 도시하는 식별자는 서버 컴퓨터 및/또는 자원을 식별하는 네트워크 어드레스를 포함하거나, 만일 네트워크(14)가 인터넷이거나 또는 이를 포함하면, 예를 들어, 인터넷을 통해 이용가능한 자원을 식별하기 위한 통일된 메커니즘을 제공하는 식별 또는 "URL(Uniform Resouce Locator)"를 제공할 수 있는 월드 와이드 웹에 대한 식별자를 포함한다. 클라이언트 컴퓨터클라이언트(11(n))로부터의 요청에 응답해서 원격 메소드를 구현하는 서버 컴퓨터(12(m))는 원격 호출이 초기화될 수 있도록 인에이블시키기 위해 클라이언트 컴퓨터클라이언트(11(n))가 실행 환경(21)에 로드될 수 있는 스터브 클래스 인스턴스(30)를 제공한다.However, if the stub class loader 33 is not informed which server computer 12 (m) maintains a class that implements a method that can be called remotely, then the server name computer 13 can be used to identify the server. Provide identification. This identification may have any identifier that may be used to identify server computer 12 (m), or other resources available on network 14 and to which server computer 12 (m) may respond. . For example, the identifier shown may include a network address identifying a server computer and / or a resource, or if the network 14 is or includes the internet, for example to identify a resource available over the internet. It includes an identifier for the World Wide Web that can provide an identification or "Uniform Resouce Locator" that provides a unified mechanism. The server computer 12 (m), which implements the remote method in response to a request from the client computer client 11 (n), is configured to allow the client computer client 11 (n) to enable the remote call to be initiated. It provides a stub class instance 30 that can be loaded into the execution environment 21.

상술한 바와 같이, 만일 스터브 클래스 로더(33)가 어떤 서버 컴퓨터(12(m))가 호출될 수 있는 원격 메소드를 구현하는 지를 알지 못하면(따라서, 어떤 컴퓨터가 원격 호출을 위한 스터브 클래스 코드를 제공하는 지를 알지 못하는), 이는 제어 모듈(19)의 제어 하에, 네임서버 컴퓨터(13)로부터 식별을 얻는다. 이 동작에서, 스터브 클래스 로더(33)는 이와 같은 경우에 사용하기 위해 제공된 이전에 제공된 디폴트 스터브 클래스를 사용할 수 있다. Java 프로그램에 의해 사용될 때, 디폴트 클래스 스터브는, 원격 메소드를 호출하는데 사용될 수 있는 정보를 얻기 위해, 호출하는 Java 프로그램을 처리하는 컴퓨터가 네임서버 컴퓨터(13)와 통신하도록 인에이블시킨다. 이 동작은, 원격 메소드가 원격으로 호출될 클래스와 메소드를 식별하는 파라메타를 포함하여 본질적으로 네임서버 컴퓨터(13)에 의해 처리될 원격 메소드의 호출과 동일하며, 네임서버 컴퓨터(13)를 인에이블시켜 요청하는 클라이언트 컴퓨터클라이언트(11(n))에 대한 메소드를 처리할 수 있는 서버 컴퓨터(12(m))의 식별과,서버 컴퓨터(12(m))와 통신하고 특정 메소드르 호출하는데 도움이 될 수 있는 다른 정보를 제공하게 한다. 네임서버 컴퓨터(13)가 "엑스포트된" 자원, 즉 네트워크(14)에 접속된 클라이언트 컴퓨터클라이언트(11(n))에 이용가능한 클래스와 메소드와 같은 자원의 테이블(도시않됨), 및 엑스포트된 자원을 사용하는데 클라이언트 컴퓨터클라이언트(11(n))에 유용한 그와 같은 자원을 제공하는 특정 서버 컴퓨터(12(m))의 식별과 같은 정보를 유지할 것이라는 것을 알 수 있다.As mentioned above, if the stub class loader 33 does not know which server computer 12 (m) implements a remote method that can be invoked (thus, which computer provides stub class code for remote calls) Which, under the control of the control module 19, obtains an identification from the nameserver computer 13. In this operation, stub class loader 33 can use the previously provided default stub class provided for use in such a case. When used by a Java program, the default class stub enables the computer processing the calling Java program to communicate with the nameserver computer 13 to obtain information that can be used to invoke the remote method. This behavior is essentially the same as invoking a remote method to be handled by the nameserver computer 13, including parameters identifying the class and method to which the remote method is to be called remotely, enabling the nameserver computer 13 Identification of a server computer 12 (m) capable of handling methods for the requesting client computer client 11 (n) and for communicating with the server computer 12 (m) and invoking specific methods. Have them provide other information that may be possible. Resources (such as classes and methods not shown) that the name server computer 13 is "exported" resources, ie classes and methods available to the client computer client 11 (n) connected to the network 14, and exported resources. It will be appreciated that it will retain information such as the identification of the particular server computer 12 (m) that provides such resources useful to the client computer 11 (n) for use.

네임서버 컴퓨터(13)는 기술분야에 공지된 다양한 방법으로 엑스포트된 자원 테이블을 생성하고 유지할 수 있다는 것을 알 것이다. 예를 들어, 네임서버 컴퓨터(13)는 엑스포트된 자원을 유지할 수 있는 다양한 서버 컴퓨터(12(m))가 응답할 수 있는 엑스포트된 자원 정보에 대한 요청을 네트워크(14)를 통해 주기적으로 방송할 수 있다. 이 경우에, 네임서버 컴퓨터(13)는 서버 컴퓨터(12(m))로부터의 응답에 기초하여 그 엑스포트된 자원 테이블을 수립할 수 있다. 선택적으로, 엑스포트된 자원을 유지할 수 있는 다양한 서버 컴퓨터(12(m))의 각각은, 유지하고 있는 엑스포트된 자원에 대한 정보를 주기적으로 방송할 수 있고, 네임서버 컴퓨터(13)는 서버 컴퓨터로부터의 방송에 기초하여, 그 엑스포트된 자원 테이블을 갱신할 수 있다. 또한, 네임서버 컴퓨터의 엑스포트된 자원 테이블은 시스템 운영자에 의해 설정될 있고, 운영자가 그것을 갱신할 때까지 고정될 수 있다.It will be appreciated that the name server computer 13 can create and maintain exported resource tables in a variety of ways known in the art. For example, the name server computer 13 may periodically broadcast a request for the exported resource information through the network 14 to which various server computers 12 (m) that can maintain the exported resources can respond. Can be. In this case, the name server computer 13 may establish its exported resource table based on the response from the server computer 12 (m). Optionally, each of the various server computers 12 (m) capable of maintaining the exported resources may periodically broadcast information about the exported resources that it maintains, and the name server computer 13 may be from the server computer. Based on the broadcast of, the exported resource table can be updated. In addition, the exported resource table of the nameserver computer may be set by the system administrator and may be fixed until the operator updates it.

어느 경우에, 디폴트 스터브에 의해 초기화된 요청에 응답해서 네임서버 컴퓨터(13)에 의해 제공된 정보는, 예를 들어, 호출될 원격 메소드를 실시하는 클래스를 제공할 수 있는 컴퓨터(12(m))의 식별, 컴퓨터(즉, 원격 메소드를 실시하는 컴퓨터)가 요청된 스터브 클래스 코드를 제공할 것을 요구하는 특정 정보 등을 포함할 것이다. 네임서버 컴퓨터(13)로부터 정보를 수신한 후에, 제어 모듈(19)의 제어 하에, 호출하는 Java 프로그램을 처리하는 컴퓨터클라이언트(11(n))는, 정보를 사용하여 컴퓨터(즉, 원격 메소드를 실시하는 컴퓨터)와 통신함으로써, 스터브 클래스를 얻으며, 그후 상술한 바와 같이 메소드를 호출할 수 있다.In either case, the information provided by the name server computer 13 in response to the request initiated by the default stub may, for example, provide a computer 12 (m) that can provide a class that implements the remote method to be called. Identification, specific information requiring the computer (i.e., the computer executing the remote method) to provide the requested stub class code, and the like. After receiving the information from the name server computer 13, under the control of the control module 19, the computer client 11 (n), which processes the calling Java program, uses the information to execute the computer (i.e., the remote method). By communicating with the executing computer), the stub class can be obtained, and then the method can be called as described above.

이와 같은 배경으로, 클라이언트 컴퓨터클라이언트(11(n)), 서버 컴퓨터(12(m)), 및 필요에 따라 원격 메소드에 대한 참조가 수신될 때 스터브 클래스 인스턴스를 얻고 동적으로 로드하는 것과 연관된 네임서버(13)에 의해 수행되는 동작들이 도 2에 설명된 순서도를 참조하여 설명될 것이다. 또한, 스터브 클래스 인스턴스를 사용하여 메소드의 원격 호출과 연관되어 클라이언트 컴퓨터클라이언트(11(n)) 및 서버 컴퓨터에 의해 수행되는 동작들은 도 3에 도시된 순서도를 참조하여 설명될 것이다. 먼저 도 2를 참조하면, 실행 환경 제어 모듈(19)은 원격 메소드에 대한 참조를 수신하면, 초기에 원격 메소드의 호출이 용이하도록 실행 환경(20)에 적당한 스터브 클래스 인스턴스가 존재하는지의 여부를 판정한다(단계 100). 만일 제어 모듈(19)이 원격 메소드에 대한 이와 같은 스터브 클래스 인스턴스(30)가 실행 환경에 존재하는 것으로 판정하면, 이는 다른 동작을 포함할 수 있다(단계 101). 그러나, 만일 제어 모듈(19)이 단계(101)에서, 이와 같은 스터브 클래스 인스턴스가 원격 메소드에 대한 실행 환경(20)에 존재하지 않는다고 판정하면, 제어 모듈(19)은 스터브 클래스 로더(33)를 사용하여 클래스가 원격 메소드를 처리하도록 스터브 클래스 인스턴스(30)를 찾고 로드하려고 시도할 것이다. 이 경우에, 제어 모듈(19)은 초기에 클래스 인스턴스(22)로부터의 호출이 서버 컴퓨터(12(m))를 식별하는 자원 로케이터(resource locator) 또는 호출될 메소드에 대한 클래스를 유지하는 다른 자원을 포함하고 있는지, 또는 그것(즉, 제어 모듈(19)) 또는 스터브 클래스 로더(33)에 이와 같은 자원 로케이터가 제공되어 있는지의 여부를 판정할 것이다(단계 102). 만일 제어 모듈(19)이 상기 단계에서 긍정으로 응답하면, 스터브 클래스 로더(33)를 인에이블시켜, 식별된 서버 컴퓨터(12(m))와의 통신을 초기화시켜 호출될 클래스와 메소드에 대한 스터브 클래스 인스턴스를 얻는 단계(103)로 진행할 것이다(단계 103). 스터브 클래스 로더(33)가 서버 컴퓨터(12(m))로부터 스터브 클래스 인스턴스(30)를 수신하면, 이는 스터브 클래스 인스턴스(30)를 단계(100)에서 원격 메소드 호출을 초기화한 클래스 인스턴스(22)에 대한 실행 환경(20)으로 로드할 것이다. 참조된 원격 메소드에 대한 스터브 클래스 인스턴스(30)가 실행 환경에 로드된 후에, 도 3과 관련하여 이하에 설명하는 바와 같이 메소드가 호출될 것이다.Against this background, the client computer 11 (n), server computer 12 (m), and a name server associated with obtaining and dynamically loading stub class instances when a reference to a remote method is received as needed. Operations performed by (13) will be described with reference to the flowchart described in FIG. Further, operations performed by the client computer 11 (n) and the server computer in association with remote invocation of the method using a stub class instance will be described with reference to the flowchart shown in FIG. Referring first to FIG. 2, upon receiving a reference to a remote method, the execution environment control module 19 determines whether there is an appropriate stub class instance in the execution environment 20 to facilitate invocation of the remote method initially. (Step 100). If the control module 19 determines that such a stub class instance 30 for the remote method exists in the execution environment, it may include other actions (step 101). However, if the control module 19 determines in step 101 that such a stub class instance is not present in the execution environment 20 for the remote method, the control module 19 may turn the stub class loader 33 on. Will attempt to find and load the stub class instance 30 for the class to handle the remote method. In this case, the control module 19 is initially responsible for the resource locator identifying the server computer 12 (m) where the call from the class instance 22 or the other resource holding the class for the method to be called. It will be determined whether or not such a resource locator is provided to the stub class loader 33 (ie, the control module 19) or the stub class loader (step 102). If the control module 19 responds affirmatively in this step, the stub class loader 33 is enabled, initiating communication with the identified server computer 12 (m) and the stub class for the class and method to be called. Proceeding to step 103, obtaining an instance (step 103). When the stub class loader 33 receives the stub class instance 30 from the server computer 12 (m), it causes the stub class instance 30 to initialize the remote method call in step 100, the class instance 22. Will load into the execution environment 20 for. After the stub class instance 30 for the referenced remote method is loaded into the execution environment, the method will be invoked as described below with respect to FIG. 3.

단계(102)로 돌아가, 만일 제어 모듈(19)이, 클래스 인스턴스(22)로부터의 호출이 서버 컴퓨터(12(m))를 식별하는 자원 로케이터 또는 호출된 메소드에 대한 클래스를 유지하는 다른 자원을 포함하지 않고, 이것(즉, 제어 모듈(19)) 또는 스터브 클래스 로더(33)에 이와 같은 자원 로케이터가 제공되지 않았다고 판정하면, "클래스 찾지 못함(class not found)" 예외가 표시될 수 있는데, 이때 제어 모듈(19)은 예외 핸들러를 호출할 수 있다. 예외 핸들러는 예를 들어, 원격 메소드가 발견할 수 없었다고 제어 모듈(19)에 단지 통지하여, 후속하는 동작을 판정할 수 있게 하는 것을 포함하는 많은 복구 동작중 임의의 동작을 수행할 수 있다.Returning to step 102, if the control module 19 calls a resource locator that identifies the server computer 12 (m) that the call from the class instance 22 maintains, or another resource that maintains the class for the called method. If not included, (ie, control module 19) or stub class loader 33 determines that such a resource locator has not been provided, a "class not found" exception may be displayed, At this time, the control module 19 may call the exception handler. The exception handler may perform any of a number of recovery operations, including, for example, merely notifying the control module 19 that the remote method could not be found, to determine subsequent actions.

선택적으로, 제어 모듈(19)은, 호출, 예를 들어 디폴트 스터브 클래스 인스턴스(30)를 사용하여, 네임서버 컴퓨터(13)로부터의 자원 로케이터, 또는 네트워크(14)(총체적으로 도 1에 네임서버 컴퓨터(13)로 표현됨)에 의해 제공된 다른 자원을 얻으려고 시도할 수 있다. 디폴트 스터브 클래스 인스턴스(30)에 대한 호출은 호출될 클래스와 메스드의 식별, 및 네임서버 컴퓨터(13m)의 이름을 포함할 수 있다. 디폴트 스터브 클래스 인스턴스(30)를 사용하여, 제어 모듈(19)은 컴퓨터클라이언트(11(n))를 인에이블시켜, 네임서버 컴퓨터(13)와의 통신을 인에이블시켜, 호출될 클래스와 메소드를 유지하는 서버 컴퓨터(12(m))에 대한 식별자를 얻는다(단계 110). 디폴트 스터브 클래스 인스턴스(30)로부터의 통신은, 만일 원격으로 호출될 클래스와 메스드와 연관되어 있다면 반드시 메소드가 네임서버 컴퓨터를 인에이블시켜 서버 컴퓨터(12(m))에 대한 식별을 제공하거나 또는 선택적으로 어떠한 서버 컴퓨터(12(m))도 클래스와 메소드와 연관된 것으로 식별되지 않는다는 것을 가리키는 표시를 제공함으로써, 원격 메소드 호출에 응답할 것이다. 단계(110)에서의 통신 단계 동안, 디폴트 스터브 클래스 인터페이스(30)은 파라메타 값으로서, 호출될 클래스 및 메소드의 식별을 제공할 것이다.Optionally, the control module 19 may use a resource locator from the nameserver computer 13, or network 14 (collectively the nameserver in FIG. 1), using a call, for example a default stub class instance 30. May attempt to obtain other resources provided by the computer 13). The call to the default stub class instance 30 may include the identification of the class and method to be called, and the name of the nameserver computer 13m. Using the default stub class instance 30, the control module 19 enables the computer client 11 (n) to enable communication with the name server computer 13 to maintain the classes and methods to be called. The identifier for the server computer 12 (m) is obtained (step 110). Communication from the default stub class instance 30, if associated with the class and method to be called remotely, the method must enable the name server computer to provide an identification for the server computer 12 (m), or Optionally, it will respond to a remote method call by providing an indication that no server computer 12 (m) is identified as being associated with the class and method. During the communication phase in step 110, the default stub class interface 30 will provide, as parameter values, an identification of the class and method to be called.

디폴트 스터브 클래스 인스턴스(30)로부터의 통신에 응답해서, 네임서버 컴퓨터(13)는 원격 메소드로서 요청을 처리하고(단계 111), 그 결과 정보는 만일 원격으로 호출될 클래스와 메스드와 연관되어 있다면 서버 컴퓨터(12(m))에 대한 식별, 또는 선택적으로 어떠한 서버 컴퓨터(12(m))도 클래스와 메소드와 연관된 것으로 식별되지 않는다는 것을 가리키는 표시를 포함한다. 메소드를 종료한 후에, 네임서브 컴퓨터(13)는 디폴트 스터브 클래스 인스턴스(30)에 결과 정보를 제공하기 위해, 디폴트 스터브 클래스 인스턴스(30)와의 통신을 개시할 것이다(단계 112).In response to communication from the default stub class instance 30, the nameserver computer 13 processes the request as a remote method (step 111), and the resulting information is associated with the class and method to be invoked remotely. An identification of the server computer 12 (m), or optionally, an indication indicating that no server computer 12 (m) is identified as being associated with the class and method. After ending the method, the namesub computer 13 will initiate communication with the default stub class instance 30 to provide result information to the default stub class instance 30 (step 112).

네임서버(13)로부터의 결과 정보를 수신한 후에, 디폴트 스터브 클래스 인스턴스는 제어 모듈(19)의 제어하에, 스터브 클래스 로더(33)에 결과 정보를 전달할 것이다(단계 113). 그후, 스터브 클래스 로더(33)는, 네임서버 컴퓨터로부터의 결과 정보가 서버 컴퓨터(12(m))에 대한 식별, 또는 어떠한 서버 컴퓨터(12(m))도 클래스와 연관되어 있지 않는 것으로 식별되는 표시를 포함하는지의 여부를 판정한다(단계 114). 만일 스터브 클래스 로더(33)가, 결과 정보가 서버 컴퓨터(12(m))에 대한 식별을 포함하는 것으로 판정하면, 이것(즉, 스터브 클래스 로더(33))는 호출될 수 있는 클래스와 메소드에 대한 스터브 클래스 인스턴스를 얻기 위해, 식별된 서버 컴퓨터(12(m))와의 통신을 초기화시키는 단계(101)로 복귀할 것이다. 한편, 만일 스터브 클래스 로더(33)가 단계(114)에서, 네임서버 컴퓨터(13)가 어떠한 서버 컴퓨터(12(m))도 호출될 수 있는 클래스와 메소드와 연관된 것으로 식별되지 않는다는 표시를 제공하였다면, "클래스 발견되지 않음" 예외가 표시될 수 있고(단계 115), 상술한 바와 같이 예외 핸들러가 호출된다.After receiving the result information from the name server 13, the default stub class instance will pass the result information to the stub class loader 33, under the control of the control module 19 (step 113). The stub class loader 33 then identifies that the resulting information from the name server computer is an identification for the server computer 12 (m), or that no server computer 12 (m) is associated with the class. It is determined whether or not an indication is included (step 114). If the stub class loader 33 determines that the resulting information includes an identification for the server computer 12 (m), this (i.e. stub class loader 33) is invoked on the classes and methods that can be called. In order to obtain a stub class instance, the process will return to step 101 of initiating communication with the identified server computer 12 (m). On the other hand, if the stub class loader 33 has provided an indication in step 114 that the name server computer 13 is not identified as being associated with classes and methods to which any server computer 12 (m) can be invoked. , A "Class not found" exception may be displayed (step 115), and the exception handler is called as described above.

상술한 바와 같이, 도 2를 참조하여 설명한 바와 같이 검색되고 로드된 스터브 클래스 인스턴스(30)는 메소드의 원격 호출에 사용될 수 있다. 메소드의 원격 호출과 관련하여 클라이언트 컴퓨터클라이언트(11(n))에 의해 수행된 동작이 도 3의 순서도를 참조하여 설명될 것이다. 도 3에 도시한 바와 같이, 클래스 인스턴스(22)가 메소드를 호출하면, 제어 모듈(19)은 초기에 스터브 클래스 인스턴스(30)가 호출될 원격 메소드에 대한 실행 환경에 존재하는지를 증명한다(단계 120). 만일 단계(120)에서 긍정 결과가 얻어지면, 스터브 클래스 인스턴스(30)가 원격 호출에 사용될 것이고, 원격 호출에서 원격 메소드를 처리하는데 사용될 파라메타 값을 제공할 것이다(단계 121). 그후, 호출될 수 있는 원격 메소드에 대한 스터브 클래스 인스턴스(30)는 원격 메소드에 대한 클래스를 유지하는 서버 컴퓨터(12(m))와의 통신을 초기화시키는데 사용되고(단계 122), 프로세스에서, 원격 메소드를 처리하는데 사용될 파라메타 값을 전달하는 것이 전달될 것이다. 만일 메소드를 처리할 서버 컴퓨터(12(m))가 메소드를 호출하는 클라이언트 컴퓨터(12n)와 동일한 물리적 컴퓨터이면, 통신은 물리적 컴퓨터 내에서 처리되고 있는 실행 환경 내일 것이다. 한편,만일 메소드를 처리할 서버 컴퓨터(12(m))가 메소드를 호출하는 클라이언트 컴퓨터(12n)의 그것과는 다른 물리적 컴퓨터이면, 통신은 클라이언트 컴퓨터와 서버 컴퓨터의 각각의 네트워크 인터페이스(15(n) 및 16(m))를 통하고, 네트워크(14)를 통한 것일 것이다.As described above, the stub class instance 30 retrieved and loaded as described with reference to FIG. 2 may be used for remote invocation of the method. The operations performed by the client computer client 11 (n) in connection with the remote invocation of the method will be described with reference to the flowchart of FIG. As shown in FIG. 3, when class instance 22 invokes a method, control module 19 initially verifies that stub class instance 30 exists in the execution environment for the remote method to be invoked (step 120). ). If a positive result is obtained in step 120, the stub class instance 30 will be used for the remote call and provide a parameter value that will be used to process the remote method in the remote call (step 121). The stub class instance 30 for the remote method that can then be called is used to initiate communication with the server computer 12 (m) that maintains the class for the remote method (step 122), and in the process, Passing parameter values to be used for processing will be passed. If the server computer 12 (m) to process the method is the same physical computer as the client computer 12n calling the method, the communication will be in the execution environment being processed within the physical computer. On the other hand, if the server computer 12 (m) to process the method is a physical computer different from that of the client computer 12n invoking the method, the communication is performed by each network interface 15 (n) of the client computer and the server computer. ) And 16 (m)), and through the network 14.

단계(122)에서 스터브 클래스 인스턴스로부터의 통신에 응답해서, 서버 컴퓨터(12(m))는 필요에 따라 호출될 수 있는 메소드를 유지하는 클래스에 대한 실행 환경(24)을 수립하고, 스켈턴(32)에 의해 제공된 정보를 사용하여 해당 클래스에 대한 클래스 인스턴스(26)를 생성한다(단계 123). 그후, 서버 컴퓨터(12(m))는 제어 모듈(28)의 제어 하에, 스터브 클래스 인스턴스(30)에 의해 제공된 파라메타 값과 관련하여 메소드를 처리할 것이다(단계 124). 메소드의 처리를 완료한 후에, 서버 컴퓨터(12(m))는 또한 제어 모듈(28)의 제어 하에, 클라이언트 컴퓨터의 스터브 클래스 인스턴스(30)와의 통신을 초기화시켜, 스터브 클래스 인스턴스에 결과 정보를 제공할 것이다(단계 125). 단계(102)에 관련하여 상기 술명한 것과 유사하게, 만일 메소드를 처리한 서버 컴퓨터(12(m))가 메소드를 호출한 클라이언트 컴퓨터(12n)와 동일한 물리적 컴퓨터이면, 물리적 컴퓨터 내에서 처리되고 있는 실행 환경(24 및 20) 내일 수 있다. 한편, 만일 메소드를 처리한 서버 컴퓨터(12(m))가 메소드를 호출하는 클라이언트 컴퓨터(12n)와는 다른 물리적 컴퓨터이면, 통신은 서버 컴퓨터 및 클라이언트 컴퓨터의 각각의 네트워크 인터페이스(16m 및 15n)를 통하고 네트워크(14)를 통한 것일 것이다. 스터브 클래스 인스턴스(30)가 서버 컴퓨터로부터 결과 정보를 수신하면, 이는 원격 메소드 호출을 초기화한 클래스 인스턴스(22)에 결과 정보를 제공하고(단계 126), 상기 클래스 인스턴스(22)는 제어 모듈(19)의 제어 하에 처리를 계속할 것이다.In response to the communication from the stub class instance in step 122, server computer 12 (m) establishes an execution environment 24 for the class that maintains the method that can be called as needed, and the Skelton ( The information provided by 32 is used to create a class instance 26 for that class (step 123). The server computer 12 (m) will then process the method with respect to the parameter value provided by the stub class instance 30, under the control of the control module 28 (step 124). After completing the processing of the method, the server computer 12 (m) also under the control of the control module 28 initiates communication with the stub class instance 30 of the client computer, providing the result information to the stub class instance. Will be done (step 125). Similar to what is described above with respect to step 102, if the server computer 12 (m) that processed the method is the same physical computer as the client computer 12n that invoked the method, then it is being processed within the physical computer. May be within execution environment 24 and 20. On the other hand, if the server computer 12 (m) that handled the method is a physical computer different from the client computer 12n invoking the method, communication is via the respective network interfaces 16m and 15n of the server computer and the client computer. And via the network 14. When the stub class instance 30 receives the result information from the server computer, it provides the result information to the class instance 22 that initiated the remote method call (step 126), and the class instance 22 receives the control module 19 Processing will continue.

단계(120)로 돌아가, 만일 제어 모듈(19)이 이 단계에서 호출될 수 있는 원격 메소드에 적합한 스터브 클래스 인스턴스(30)를 가지고 있지 않다고 판정하면, 이 지점에서 예외 핸들러를 호출하여(단계 127), 선택된 에로 복구 동작을 수행할 수 있다.Returning to step 120, if it is determined that the control module 19 does not have a stub class instance 30 suitable for the remote method that can be called in this step, it calls the exception handler at this point (step 127). In this case, the selected erotic recovery operation can be performed.

본 발명에 따른 방법 및 시스템은, 많은 장점을 제공한다. 특히, 본 발명은 하나의 실행 환경에서 동작하는 프로그램이 다른 실행 환경 내의 메소드의 처리를 원격으로 호출하게 함으로써, 실행되고 필요할 때 스터브가 프로그램에 의해 로드되게 하는 스터브의 동적인 로딩을 용이하게 하는 신규한 시스템 및 방법을 제공한다. 스터브가 프로그램으로 컴파일되어 프로그램이 컴파일될 때가 정적으로 결정되는 시스템에서, 스터브들은 프로그램에 의해 수신되는 원격 참조에 의해 지원되며, 프로그램에 제공된 스터브와, 프로그램이 실행될 때 호출되는 원격 프로시져의 조건 간의 불일치로 인한 에러와 비효율을 초래할 수 있는 실제 세트의 원격 인터페이스의 서브셋을 실시할 수 있다.The method and system according to the present invention provide many advantages. In particular, the present invention allows a program running in one execution environment to remotely invoke the processing of a method in another execution environment, thereby facilitating dynamic loading of the stub to be executed and loaded by the program when needed. One system and method are provided. In a system where stubs are compiled into a program and statically determined when the program is compiled, stubs are supported by remote references received by the program, and there is a mismatch between the stubs provided to the program and the conditions of the remote procedure called when the program is run. A subset of the actual set of remote interfaces can be implemented that can result in errors and inefficiencies.

그런, 동적 스터브 로딩 시스템 및 방법에서, 로드되는 스터브가 원격 메소드를 제공하는 특정 자원으로부터 얻어질 수 있기 때문에, 스터브가 런 타임으로 호출하는 프로그램을 제공하도록 정확한 세트의 인터페이스를 정의할 수 있으므로써, 제공되는 스터브와, 호출되는 원격 메소드의 조건 간의 불일치로 인할 수 있는 런 타임 비호환성을 없앨 수 있다.In such a dynamic stub loading system and method, since the stub being loaded can be obtained from a particular resource that provides a remote method, the exact set of interfaces can be defined to provide a program that the stub invokes at runtime. Eliminate runtime incompatibilities caused by inconsistencies between the provided stub and the condition of the remote method being called.

상술한 바와 같은 구성에 많은 수정이 이루어질 수 있다는 것을 알 것이다. 예를 들어, 비록 실행 환경(20)이 원격 메소드에 대한 참조가 수신될 때 원격 메소드의 호출을 용이하게 하기 위해, 스터브 클래스 인스턴스를 얻고 로드하는 것으로서 설명되었지만, 원격 메소드가 초기에 호출될 때 스터브 클래스 인스턴스가 얻어지고 로드될 수 있다는 것을 알 것이다. 그에 대한 참조가 수신될 때 원격 메소드에 대한 스터브 클래스 인스턴스를 얻는 것과 로드하는 것은, (I) 원격 메소드가 실제로 호출될 때에 스터브 클래스 인스턴스가 실행 환경에 존재할 것이라는 것과, (ii) 만일 적당한 스터브 클래스 인스턴스를 찾을 수 없다면, 프로그램 또는 운영자에게 조기에 통지될 수 있다는 장점을 가질 것이다. 한편, 메소드가 호출되려 할 때 원격 메소드에 대한 스터브 클래스 인스턴스를 얻고 로드하는 것은, 그에 대한 참조가 수신될 때에도 스터브 클래스 인스턴스를 찾고 로드할 필요가 없고, 만일 메소드가 실제로 호출되지 않는다면, 정확한 스터브 클래스 인스턴스를 발견할 수 있을 때까지 호출을 지연시키는 결과가 될 것이다.It will be appreciated that many modifications can be made to the configuration as described above. For example, although the execution environment 20 has been described as obtaining and loading stub class instances to facilitate the invocation of the remote method when a reference to the remote method is received, the stub when the remote method is initially called You will notice that a class instance can be obtained and loaded. Obtaining and loading a stub class instance for a remote method when a reference to it is received means that (I) the stub class instance will exist in the execution environment when the remote method is actually called, and (ii) if the appropriate stub class instance If it is not found, it would have the advantage of being notified early to the program or operator. On the other hand, getting and loading a stub class instance for a remote method when the method is about to be called does not require finding and loading the stub class instance even when a reference to it is received, and if the method is not actually called, the correct stub class This will result in delaying the call until an instance can be found.

본 발명에 따른 시스템은 전체 또는 부분적으로 특수 목적의 하드웨어 또는 범용 목적의 컴퓨터 시스템으로 또는 그 일부가 적당한 프로그램에 의해 제어될 수 있는 임의의 그 결합으로 구성될 수 있다는 것을 알 것이다. 임의의 프로그램은, 전체적으로 또는 부분적으로 종래 방식으로 시스템의 일부를 구성하거나 또는 그에 저장할 수 있거나, 또는 종래 방식으로 정보를 전달하기 위해 네트워크 또는 다른 메커니즘을 통해 시스템에 전체적으로 또는 부분적으로 제공될 수 있다. 또한, 시스템은 시스템에 직접 접속될 수 있거나 또는 종래 방식으로 정보를 전달하기 위해 네트워크 또는 다른 메커니즘을 통해 시스템에 정보를 전달할 수 있는 (도시되지 않은) 운영자 입력 소자를 사용하는 운영자에 의해 제공되는 정보에 의해 조작되고/되거나 제어될 수 있다.It will be appreciated that the system according to the invention may consist entirely or in part of special purpose hardware or general purpose computer system, or any combination thereof in which part thereof may be controlled by a suitable program. Any program may comprise or store part of the system in whole or in part in a conventional manner, or may be provided in whole or in part to the system via a network or other mechanism to convey information in a conventional manner. In addition, the information provided by the operator using an operator input element (not shown) that may be directly connected to the system or that may convey information to the system via a network or other mechanism to convey information in a conventional manner. Can be manipulated and / or controlled by.

본 발명의 대체 실시예Alternative embodiment of the present invention

비록 상술한 바와 같이 스터브를 동적으로 검색하고 로드하는 본 발명에 따른 실시예가 설명되었지만, 본 발명에 따른 대체 실시예는 또한. 오브젝트들이 특정 서비스와의 통신을 용이하게 하기 위한 코드( 스터브 정보)를 포함하거나 또는 오브젝트가 서비스를 수행하는 코드를 포함하는 룩업 서비스 내의 오브젝트를 로드하고 검색한다. 비록 대체 실시예가 상술한 바와 같이, 스터브를 나타내는 룩업 서비스로부터 오브젝트를 다운로드하는 것으로 설명하였지만, 이하에 설명하는 기법은 서비스를 실제로 수행하는 오브젝트를 다운로드하는 것에도 동등하게 적용될 수 있다. 룩업 서비스는 서비스의 네트워크의 디렉토리를 정의하며, 이들 서비스에 대한 참조를 저장한다. 네트워크 상의 서비스의 사용을 요구하는 사용자는, 서비스의 사용자의 액세스를 용이하게 하는 스터브 정보를 반환하는 룩업 서비스를 액세스한다.Although embodiments according to the present invention for dynamically retrieving and loading stubs as described above have been described, alternative embodiments according to the present invention are also described. Objects load and retrieve objects in a lookup service that contain code (stub information) to facilitate communication with a particular service or that the object contains code that performs a service. Although an alternative embodiment has been described as downloading an object from a lookup service representing a stub, as described above, the technique described below may equally apply to downloading an object that actually performs the service. Lookup services define directories of a network of services and store references to these services. A user who requires the use of a service on the network accesses a lookup service that returns stub information that facilitates the user's access to the service.

룩업 서비스는 본 발명의 참조로서 일체화되어 있으며, 본 발명과 동시 출원되었으며, 본 발명의 출원인에게 양도된 "Dynamic Lookup Service in a Distributed System"이라는 제목의 동시 계류중인 미국특허 출원 제 호에 설명된 바와 같이 "Djinn"이라고 하는 네트워크에서 이용가능한 모든 서비스의 서브셋을 포함할 수 있다. "Djinn"은 네트워크에 의해 제공되는 하나 이상의 서비스 또는 자원의 논리적 그룹핑을 가리킨다. 네트워크에 접속된 장치는 동적으로 스스로 Djinn에 부가될 수 있거나 또는 Djinn으로부터 동적으로 스스로 제거될 수 있다. 부가될 때, 장치는 Djinn에 제로 이상의 그 서비스를 제공할 수 있고, Djinn에 의해 현재 제공되는 모든 서비스를 이용할 수 있다. Djinn에 의해 제공되는 서비스는 Djinn에 대한 서비스를 찾고 이용하는 공통 방법을 제공하는 룩업 서비스에 의해 정의된다.The lookup service is incorporated herein by reference, co-filed with the present invention and described in co-pending US patent application entitled "Dynamic Lookup Service in a Distributed System", assigned to the applicant of the present invention. Likewise, it may include a subset of all services available in the network called "Djinn." "Djinn" refers to a logical grouping of one or more services or resources provided by a network. Devices connected to the network can be dynamically added to Djinn themselves or dynamically removed from Djinn themselves. When added, the device can provide more than zero its services to Djinn and can use all the services currently provided by Djinn. The services provided by Djinn are defined by a lookup service that provides a common way to find and use services for Djinn.

룩업 서비스는 서비스의 범위를 제공하는 Djinn 또는 다른 컴퓨터 네트워크를 위한 하부구조의 근본적인 일부이다. 프로그램이 Djinn 내에서 이용가능한 서비스를 찾는 것이 일차적인 수단이고, 사용자와 관리자가 Djinn 내의 서비스를 발견하고 상호작용할 수 있게 하는 스터브를 제공하는 것이 근본이다.Lookup services are an essential part of the infrastructure for Djinn or other computer networks that provide a range of services. The primary means for a program to find services available within Djinn is to provide a stub that allows users and administrators to discover and interact with services in Djinn.

지금부터 룩업 서비스(400)를 상세히 도시하는 도 4를 참조한다. 서버 컴퓨터(12(m))는 또한 이하에 설명하는 바와 같이 룩업 서비스(400)를 구비한다. 도 1에 도시한 바와 같이 서버(12(m)) 상에 위치한 룩업 서비스(400)는 "서비스 항목"(410-418)의 집단을 유지한다. 각각의 서비스 항목(410-418)은 Djinn 내에 이용가능한 서비스의 인스턴스를 나타내고, 각각의 서비스 항목(410)은 서비스 항목을 유일하게 식별하는 서비스 ID(402), 서비스를 액세스하는 사용을 프로그램하는 코드를 제공하는 스터브(404), 및 서비스를 설명하는 속성(406)의 집합을 포함한다.Reference is now made to FIG. 4, which illustrates the lookup service 400 in detail. Server computer 12 (m) also includes a lookup service 400 as described below. As shown in FIG. 1, lookup service 400 located on server 12 (m) maintains a collection of "service items" 410-418. Each service item 410-418 represents an instance of a service available within Djinn, and each service item 410 is a service ID 402 that uniquely identifies the service item, code that programs usage to access the service. A stub 404 that provides a, and a set of attributes 406 that describe the service.

룩업 서비스(400)에 새로운 서비스를 등록하면, 룩업 서비스는 새로운 서비스 항목(400)에 독특한 서비스 ID(402), 전형적으로 번호를 부여한다. 이 서비스(402)는 나중에 불필요한 검색을 피하거나 또는 질의시 몇몇 일치하는 서비스 항목을 찾는 것을 피하면서 특정 서비스를 액세스하는데 사용될 수 있다.Upon registering a new service with the lookup service 400, the lookup service assigns a new service item 400 with a unique service ID 402, typically a number. This service 402 may later be used to access a particular service while avoiding unnecessary searches or finding some matching service item in the query.

새로운 서비스가 생성되면(즉, 새루운 장치가 Djinn에 부가되면), 서비스는 그 스스로 룩업 서비스(400)를 제공하여, 클라이언트에 의해 사용될 스터브(404)를 제공함으로써, 서비스 및 서비스에 연관된 속성(406)의 초기 집합을 액세스하게 한다. 예를 들어, 프린터는 속도(분당 페이지), 해상도(인치당 도트), 컬러, 및 양면 인쇄가 지원되는지를 가리키는 속성을 포함할 것이다. 룩업 서비스 관리자(도시되지 않음)는 또한, 서비스의 물리적 위치 및 그에 대한 공통 명칭과 같은 새로운 속성을 부가할 수 있다. 부수적으로, 만일 서비스가 토너가 바닥난 프린터와 같이 관리적 관심을 필요로 하는 몇가지 문제에 부딪히면, 서비스는 어떤 문제인 지를 가리키는 속성을 부가할 수 있다. 본 발명에 따른 한 실시예에서, 속성은 다중-엔트리로서 저장되고, 본 발명의 참조로서 일체화된 발명의 명칭 "Method and System for In-place Modifications In A Database"라는 제목의, 현재 계류주인 미국특허출원 제 호에 설명된 다중-템플릿 및 기법을 사용하여, 속성의 부가, 변형 및 삭제가 이루어질 수 있다.When a new service is created (ie, a new device is added to Djinn), the service itself provides a lookup service 400, providing a stub 404 to be used by the client, thereby providing a service and attributes associated with the service ( Access the initial set of 406. For example, the printer will include attributes that indicate speed (pages per minute), resolution (dots per inch), color, and duplex printing is supported. The lookup service manager (not shown) may also add new attributes, such as the physical location of the service and its common name. Incidentally, if a service encounters some problems that require administrative attention, such as a printer that runs out of toner, the service may add an attribute indicating what the problem is. In one embodiment according to the present invention, the attribute is stored as a multi-entry and is a current mooring US patent entitled "Method and System for In-place Modifications In A Database", incorporated herein by reference. Using the multi-templates and techniques described in the application, additions, modifications and deletions of the attributes can be made.

개별적인 세트의 속성은 클래스의 인스턴스로서 표현되는데, 각각의 속성은 해당 클래스의 필드이다. 프린터에 대한 속성 세트의 예는 다음과 같다:An individual set of attributes is represented as an instance of a class, where each attribute is a field of that class. An example of a property set for a printer is as follows:

public class Printer {public class Printer {

Integer ppm; // 분당 페이지Integer ppm; // pages per minute

Integer dpi; //인치당 도트 해상도Integer dpi; // dot resolution per inch

Boolean duplex; // 양면 인쇄를 지원Boolean duplex; // support duplex printing

Boolean color; //컬러 또는 흑색 전용Boolean color; // color or black only

}}

상기 클래스는 세트 및 개별적인 속성 모두의 강력한 타이핑을 제공한다.The class provides strong typing of both sets and individual attributes.

서비스 항목(410)의 속성은 또한 속성 세트의 세트로서 표현될 수 있다. 서비스 항목(410)의 속성(406)은 서로 다른 클래스의 다중 인스턴스는 물론, 서로 다른 속성 값을 갖는 동일한 클래스의 다중 인스턴스를 포함할 수 있다. 예를 들어, 서비스 항목(410)의 속성(406)은, 각각의 인스턴스가 서로 다른 언어로 서비스의 공통 명칭을 부여하는 Name 클래스의 다중 인스턴스 + Location, Type 클래스 또는 다양한 다른 서비스 특정 클래스의 인스턴스를 가질 수 있다. 프린터를 설명하기 위해 부가된 몇가지 속성의 예는 Name, Type 또는 Location일 수 있다:The attributes of the service item 410 may also be represented as a set of attributes. Attribute 406 of service item 410 may include multiple instances of the same class, as well as multiple instances of different classes. For example, the attribute 406 of the service item 410 may include multiple instances of the Name class + instances of the Location, Type class, or various other service specific classes, each instance giving a common name for the service in a different language. Can have. Some examples of attributes added to describe a printer can be Name, Type, or Location:

public class Name implements Entry{public class Name implements Entry {

String name; //서비스의 사용자 친근 명칭String name; // user friendly name of the service

String description; // 서비스의 자유 형태 설명String description; // free form description of service

String language; // 상기에 사용된 언어(즉, 영어, 프랑스어)String language; // language used above (ie English, French)

}}

public class Type implements Entry{public class Type implements Entry {

String type; //서비스의 일반적인 타입String type; // general type of service

String vendor; //서비스를 실시하는 제품 공급자String vendor; // provider of service

String model; //제품의 모델번호/명칭String model; // model number / name of the product

String version; 제품의 버젼 번호String version; Product version number

}}

public class Location implements Entry{public class Location implements Entry {

Integer floor; //어떤 층이 서비스를 제공하는가Integer floor; // which layers provide services

String building; //어떤 건물에 들어갈 수 있는가String building; // what buildings can enter

String room; // 어떤 방을 들어갈 수 있는가String room; // what room you can enter

}}

본 예에서, 서비스 항목(406)의 속성(406)은, 각각의 클래스가 그들 자신의 개별적인 속성을 포함하는 Printer, Type 및 Location 클래스 인스턴스를 포함하는 일단의 속성일 것이다. 그러나, 속성에 사용된 스킴은 이들 예에 제한되지 않는다는 것을 알아야 한다.In this example, the attribute 406 of the service item 406 will be a set of attributes that include a Printer, Type, and Location class instance where each class includes its own individual attributes. However, it should be understood that the scheme used for the attribute is not limited to these examples.

특정 타입의 서비스를 필요로 하는 프로그램(다른 서비스를 포함)는 서비스를 액세스하는데 사용될 수 있는 스터브를 찾기 위해 룩업 서비스(400)를 사용할 수 있다. 서비스에 부착된 특정 속성은 물론 서비스의 타입에 기초하여 정합이 이루어질 수 있다. 예를 들어, 클라이언트 요구되는 서비스에 대응하는 스터브 타입을 요청함으로써 또는 특정 위치 또는 인쇄 속도와 같은 임의의 속성을 요청함으로써 프린터를 검색할 수 있다. 본 발명에 따른 한 실시예에서, 속성은 다중-엔트리로 저장되며, 속성의 정합은 본 발명의 참조로 일체화되어 있는 "Method and System For Multi-Entry and Multi=Template Matching In A Database"라는 제목의 현재 계류중인 미국 특허출원 제 호에 설명된 바와 같이, 다중-템플릿을 사용하여 이루어질 수 있다.Programs that require a particular type of service (including other services) can use lookup service 400 to find stubs that can be used to access the service. Matching can be made based on the type of service as well as the specific attributes attached to the service. For example, a printer can be searched by requesting a stub type corresponding to a client desired service or by requesting any attribute, such as a specific location or print speed. In one embodiment according to the present invention, the attribute is stored as a multi-entry and the matching of attributes is entitled "Method and System For Multi-Entry and Multi = Template Matching In A Database" which is incorporated by reference of the present invention. As described in the currently pending US patent application, it can be accomplished using a multi-template.

동적 스터브 로딩 및 검색을 이용하는 룩업 서비스의 액세스Access to lookup services using dynamic stub loading and retrieval

다시 도 4를 참조하면, 서비스에 대응하는 서비스(400)가 룩업 서비스(400)에 등록되어, 원격으로 메소드를 액세스하기 위해 클라이언트 컴퓨터클라이언트(11(n))에 의해 사용된다. 이 스터브(404)는 또한 "스마트 프락시(smart proxy)"일 수 있다. 내부에 스터브가 내장된 스마트 프락시 코드는, 클라이언트가 원격으로 호출될 스터브 및 메소드를 실시하는데 도움을 준다. 스마트 프락시는 또한 스터브를 호출하기 전 또는 후에 효율성을 위해 일부 국부적인 연산을 수행한다. 예를 들어, 스마트 프락시는 정보를 캐쉬하는 코드를 포함함으로서, 정보를 얻기 위해 서버에 다시 돌아가는 대신에 클라이언트가 다시 요청하였다면, 이는 대답을 캐쉬할 수 있고 이를 신속하게 반환할 수 있다. 만일 상황이 이를 요청하였다면, 스마트 프락시는 또한 클라이언트로부터 수신된 파라메타를 다른 타입으로 변형한 다음에, 변형된 타입을 전송할 수 있다. 스마트 프락시 개념은 본 출원인의 양수인에게 양도되었으며, 본 출원과 동일자로 출원되고 본 발명의 참조로 일체화된, "Downloadable Smart Proxies for Performing Processing Associated with a Remote Rrocedure Call in a Distrubuted System"이라는 제목의 현재 계류중인 미국특허출원 제 호 호에 상세히 설명되어 있다.Referring again to FIG. 4, a service 400 corresponding to the service is registered with the lookup service 400 and used by the client computer client 11 (n) to access the method remotely. This stub 404 may also be a "smart proxy." Smart proxy code with built-in stubs helps clients implement stubs and methods to be called remotely. Smart proxies also perform some local operations for efficiency before or after invoking the stub. For example, smart proxies contain code to cache information, so if a client requests it again instead of going back to the server to get the information, it can cache the answer and return it quickly. If the situation has requested this, the smart proxy can also transform the parameter received from the client to another type and then send the modified type. The smart proxy concept has been assigned to the Applicant's assignee and is currently pending under the heading "Downloadable Smart Proxies for Performing Processing Associated with a Remote Rrocedure Call in a Distrubuted System", filed on the same date and incorporated herein by reference. It is described in detail in US Patent Application No.

도 5는 본 발명에 따라 룩업 서비스에 서비스 스터브를 부가하기 위한 시스템에 사용되는 단계들을 도시하는 순서도이다. 장치가 네트워크를 조인(joins)할 때, 이는 전형적으로 룩업 서비스를 갖는 서비스를 등록한다(단계 500). 룩업 서비스(400)의 등록시, 장치는 룩업 서비스에 스터브(404)를 공급하고, 이는 또한 룩업 서비스에 연관된 속성(406)을 제공할 수 있다(단계 502). 이에 응답하여, 룩업 서비스(400)는 독특한 서비스 ID(402), 전형적으로 이전에 상술한 바와 같이, 룩업 서비스로 등록된 서비스에 숫자를 할당한다(단계 504). 일단 장치가 룩업 서비스(400)에 스터브(404) 및 속성(406)을 공급하고, 룩업 서비스는 독특한 서비스 ID(402)를 할당하면, 장치는 룩업 서비스로의 서비스 등록을 완료한다(단계 506). 서비스가 룩업 서비스(400)로 등록된 후에, 클라이언트는 룩업 서비스를 사용하여 등록된 서비스를 액세스하는데 필요한 스터브 정보를 얻을 수 있다.5 is a flow chart illustrating the steps used in a system for adding a service stub to a lookup service in accordance with the present invention. When the device joins the network, it typically registers a service with a lookup service (step 500). Upon registration of lookup service 400, the device supplies a stub 404 to the lookup service, which may also provide an attribute 406 associated with the lookup service (step 502). In response, lookup service 400 assigns a number to a unique service ID 402, typically a service registered as a lookup service, as previously described above (step 504). Once the device supplies the stub 404 and attributes 406 to the lookup service 400, and the lookup service assigns a unique service ID 402, the device completes service registration with the lookup service (step 506). . After the service is registered with the lookup service 400, the client may obtain stub information necessary to access the registered service using the lookup service.

도 6은 본 발명에 따라 룩업 서비스로부터 서비스 항목을 다운로드하는 시스템 및 방법에 의해 사용되는 단계들을 도시하는 순서도이다. 한 실시예에서, 클라이언트 컴퓨터클라이언트(11(n))는 룩업 서비스(400)를 갖는 서비스 요청을 서버(12(m))로 전송한다(단계 600). 요청은 클라이언트 컴퓨터클라이언트(11(n)) 상의 클래스 인스턴스(22)의 원격 메소드 호출로부터 기원하고, 요청된 서비스는 예시적인 장치(38)가 서버(12(I))에 상주함에 따라 원격 서버에 상주할 수 있다. 본 발명에 따른 한 실시예에서, 클라이언트 컴퓨터클라이언트(11(n))는 룩업 서비스(400)로부터 하나 이상의 서비스를 요청할 수 있다. 클라이언트의 요청은, 특정 서비스 ID(402), 스터브(404)의 타입 또는 일단의 속성(406) 또는 임의의 그 조합의 형태이다(단계 602). 요청에 응답해서, 제어(19)는 스터브 클래스 로더(33)에 지시하여 서버(12(m))로부터 대응하는 스터브(404)를 찾게 한다. 이를 위해, 제어(19)는 스터브 클래스 로더(33)를 인에이블시켜, 서버(12(m))와의 통신을 초기화시킴으로써 얻어질 서비스에 대한 스터브(404)를 얻는다.6 is a flow chart illustrating the steps used by the system and method for downloading a service item from a lookup service in accordance with the present invention. In one embodiment, client computer client 11 (n) sends a service request with lookup service 400 to server 12 (m) (step 600). The request originates from the remote method call of the class instance 22 on the client computer client 11 (n), and the requested service is sent to the remote server as the exemplary device 38 resides on the server 12 (I). Can reside In one embodiment in accordance with the present invention, client computer client 11 (n) may request one or more services from lookup service 400. The client's request is in the form of a particular service ID 402, type of stub 404 or a set of attributes 406 or any combination thereof (step 602). In response to the request, control 19 instructs stub class loader 33 to find the corresponding stub 404 from server 12 (m). To this end, the control 19 enables the stub class loader 33 to obtain a stub 404 for the service to be obtained by initiating communication with the server 12 (m).

클라이언트 컴퓨터(11(n))로부터의 요청의 수신시, 서버(12(m))내의 제어(28)는 요청된 서비스에 대응하는 스터브(404)에 대해 룩업 서비스(400)를 검색한다(단계 604). 만일 정합이 발견되면, 제어(28)는 널 값을 반환한다(단계 606 및 608). 그렇지 않고, 만일 클라이언트 컴퓨터(11(n))가 액세스를 시도하고 있다는 것을 서비스에 대응하는 스터브(404)를 찾으면, 서버(12(m))는 클라이언트 컴퓨터 상의 클라이언트 로더(33)로 스터브를 반환한다(단계 612). 만일 클라이언트의 요청에 정합하는 하나 이상의 스터브가 발견되면(단계 610), 본 발명에 따른 실시예에서는, 스터브 중의 임의의 스터브가 반환된다(단계 616). 클라이언트가 하나 이상의 서비스를 요청하는 다른 실시예에서, 서버(12(m))는 그 속성을 갖는 스터브의 요청된 번호를 반환한다(단계 614 및 618).Upon receipt of the request from the client computer 11 (n), the control 28 in the server 12 (m) retrieves the lookup service 400 for the stub 404 corresponding to the requested service (step). 604). If a match is found, control 28 returns a null value (steps 606 and 608). Otherwise, if the stub 404 corresponding to the service is found that the client computer 11 (n) is attempting to access, the server 12 (m) returns the stub to the client loader 33 on the client computer. (Step 612). If one or more stubs are found that match the client's request (step 610), in an embodiment in accordance with the present invention, any stubs in the stub are returned (step 616). In another embodiment where the client requests one or more services, server 12 (m) returns the requested number of stubs with that attribute (steps 614 and 618).

스터브(404)가 스터브 클래스 로더(33)에 의해 수신되면, 스터브 클래스 로더는 이것을 실행 환경(20)에 로드한다. 로드된 후에, 서비스(38)가 원격으로 호출될 수 있다. 스터브 정보를 사용하여 서비스(38)의 원격 처리를 호출하는 것은 도 3을 참조하여 이전에 설명한 것과 동일한 방법으로 수행된다.When stub 404 is received by stub class loader 33, the stub class loader loads it into execution environment 20. After loaded, service 38 may be called remotely. Invoking remote processing of service 38 using the stub information is performed in the same manner as previously described with reference to FIG. 3.

일반적으로, 클래스 인스턴스(22)는 스터브(404)를 사용하여 서버(12(I)) 상의 서비스(38)를 액세스할 수 있다. 클래스 인스턴스(22)가 반환된 스터브(404)에 대응하는 서비스(38)의 사용을 요청하면, 제어(19)는, 스터브(404)가 실행 환경(20)에 존재한다고 증명한다. 만일 그렇다면, 클래스 인스턴스(22)는 이때 스터브(404)를 사용하여 서비스(38)를 유지하고 있는 서버(12(I))와의 통신을 초기화할 수 있고, 파라메타가 실시를 위해 서비스(38)로 전달될 것이다.In general, class instance 22 may use stub 404 to access service 38 on server 12 (I). When the class instance 22 requests the use of the service 38 corresponding to the returned stub 404, the control 19 verifies that the stub 404 exists in the execution environment 20. If so, the class instance 22 may then use the stub 404 to initiate communication with the server 12 (I) maintaining the service 38, and the parameter to the service 38 for implementation. Will be delivered.

룩업 서비스 실시는, 한 어드레스 공간에서 동작하는 프로그램이 다른 어드레스 공간에 있는 프로시져의 처리를 호출하도록 인에이블시키는 스터브 정보의 동적인 로딩 및 검색의 한 어플리케이션이다. 룩업 서비스에 대한 동적 스터브 로딩을 사용하는 본 실시예는 클라이언트가 그 서비스를 직접 용이하개 사용할 수 있도록 스터브 정보를 수신한다. 이전의 룩업 서비스와는 달리, 본 발명에 따른 룩업 서비스는 서비스를 직접 액세스하는데 필요한 코드를 반환한다. 이와 같이 스터브 정보의 동적 로딩을 사용함으로써, 클라이언트는 원격 서버 상의 서비스의 사용을 용이하게 하는데 필요한 모든 모드를 수신할 수 있게 된다.Lookup service implementations are one application of dynamic loading and retrieval of stub information that enables a program running in one address space to invoke the processing of a procedure in another address space. This embodiment using dynamic stub loading for a lookup service receives stub information so that a client can easily use the service directly. Unlike the previous lookup service, the lookup service according to the present invention returns the code necessary to access the service directly. By using dynamic loading of stub information in this way, the client can receive all the modes necessary to facilitate the use of the service on the remote server.

상기 설명은 본 발명의 특정 실시예에 국한되었다. 따라서, 다양한 변형과 수정이 이루어질 수 있다. 첨부하는 특허청구범위의 목적은 본 발명의 정신과 범위 내에 오는 상기 및 이와 같은 다른 변형 및 수정을 포괄하는 것이다.The foregoing description is limited to specific embodiments of the present invention. Thus, various modifications and variations can be made. It is an object of the appended claims to cover such and other modifications and variations as come within the spirit and scope of the invention.

Claims (27)

데이터 처리 시스템에서, 룩업 서비스(lookup service)에 연관된 네트워크 서비스를 액세스하는 방법에 있어서,A method of accessing a network service associated with a lookup service in a data processing system, the method comprising: 네트워크 서비스중의 하나에 액세스하기 위한 룩업 서비스에 의한 요청을 수신하는 단계; 및Receiving a request by a lookup service to access one of the network services; And 상기 하나의 네트워크 서비스의 액세스를 용이하게 하는 코드를 반환하는 단계를 포함하는 방법.Returning a code that facilitates access to the one network service. 제1항에 있어서, 상기 반환된 코드를 사용하여 상기 네트워크 서비스를 액세스하는 단계를 더 포함하는 방법.2. The method of claim 1, further comprising accessing the network service using the returned code. 제1항에 있어서, 상기 코드의 반환 단계는 스터브를 반환하는 단계를 더 포함하는 방법.2. The method of claim 1, wherein returning the code further comprises returning a stub. 제1항에 있어서, 상기 코드의 반환 단계는 스마트 프락시를 반환하는 단계를 포함하는 방법.The method of claim 1 wherein returning the code comprises returning a smart proxy. 제1항에 있어서, 상기 수신 단계는 상기 하나의 네트워크 서비스가 서비스의 타입에 의해 식별되도록, 상기 하나의 네트워크 서비스를 액세스하는 요청을 수신하는 단계를 포함하는 방법.2. The method of claim 1, wherein said receiving comprises receiving a request to access said one network service such that said one network service is identified by a type of service. 제1항에 있어서, 상기 수신 단계는 상기 하나의 네트워크 서비스가 서비스 식별 번호에 의해 식별되도록, 상기 하나의 네트워크 서비스를 액세스하는 요청을 수신하는 단계를 포함하는 방법.The method of claim 1, wherein the receiving step includes receiving a request to access the one network service such that the one network service is identified by a service identification number. 제1항에 있어서, 상기 수신 단계는 상기 하나의 네트워크 서비스가 상기 하나의 네트워크 서비스의 속성에 의해 식별되도록, 상기 하나의 네트워크 서비스를 액세스하는 요청을 수신하는 단계를 포함하는 방법.The method of claim 1, wherein the receiving step includes receiving a request to access the one network service such that the one network service is identified by an attribute of the one network service. 제1항에 있어서, 상기 코드의 반환 단계는 상기 요청에 정합하는 복수의 네트워크 서비스에 연관된 복수의 스터브를 반환하는 단계를 포함하는 방법.2. The method of claim 1, wherein returning the code comprises returning a plurality of stubs associated with a plurality of network services that match the request. 제8항에 있어서, 상기 복수의 스터브를 반환하는 단계는 각각의 스터브에 연관된 속성을 반환하는 단계를 포함하는 방법.The method of claim 8, wherein returning the plurality of stubs comprises returning an attribute associated with each stub. 룩업 서비스가 복수의 서비스를 갖는 데이터 처리 시스템에서의 방법에 있어서,A lookup service in a data processing system having a plurality of services, the method comprising: 상기 서비스 중의 하나를 액세스하는 요청을 상기 룩업 서비스에 전송하는 단계; 및Sending a request to the lookup service to access one of the services; And 상기 요청에 응답해서, 상기 하나의 서비스의 사용을 용이하게 하는 코드를 수신하는 단계를 포함하는 방법.In response to the request, receiving a code that facilitates use of the one service. 제10항에 있어서, 상기 수신된 코드를 사용하여 상기 하나의 서비스를 액세스하는 단계를 더 포함하는 방법.11. The method of claim 10, further comprising accessing the one service using the received code. 제10항에 있어서, 상기 코드의 수신 단계는 상기 하나의 서비스의 액세스를 용이하게 하는 스터브를 수신하는 단계를 포함하는 방법.11. The method of claim 10, wherein receiving a code comprises receiving a stub that facilitates access to the one service. 제10항에 있어서, 상기 코드의 수신 단계는 상기 하나의 서비스의 액세스를 용이하게 하는 스마트 프락시를 수신하는 단계를 포함하는 방법.The method of claim 10, wherein receiving a code comprises receiving a smart proxy that facilitates access to the one service. 제1 컴퓨터가 클라이언트를 가지며, 제2 컴퓨터가 연관된 서비스를 액세스하는데 사용되는 서비스 스터브(service stubs)를 포함하는 룩업 서비스를 갖는 데이타 처리 시스템에서의 방법에 있어서,1. A method in a data processing system having a lookup service having a client, wherein the first computer has a client and service stubs used to access an associated service. 클라이언트가, 액세스될 상기 연관된 서비스중의 하나를 식별하는 요청을 상기 룩업 서비스에 송신하는 단계;Sending, by the client, a request to the lookup service identifying one of the associated services to be accessed; 상기 룩업 서비스에 의해 상기 요청을 수신하는 단계;Receiving the request by the lookup service; 상기 식별된 서비스에 대해 룩업 서비스를 검색하는 단계;Searching for a lookup service for the identified service; 상기 식별된 서비스에 연관된 상기 서비스 스터브를 상기 클라이언트에 반환하는 단계;Returning the service stub associated with the identified service to the client; 성기 클라이언트에 의해 상기 서비스 스터브를 수신하는 단계;Receiving the service stub by a genital client; 상기 서비스 스터브가 상기 식별된 서비스를 호출하는데 사용가능하도록, 상기 서비스 스터브를 상기 클라이언트의 어드레스 공간에 로드하는 단계; 및Loading the service stub into the client's address space such that the service stub is available to invoke the identified service; And 상기 클라이언트에 의해 상기 스터브를 사용하여 상기 식별된 서비스를 액세스하는 단계를 포함하는 방법.Accessing the identified service using the stub by the client. 제14항에 있어서,The method of claim 14, 상기 송신 단계는 반환될 하나 이상의 서비스에 대한 요청을 송신하는 단계를 포함하되,The transmitting step includes transmitting a request for one or more services to be returned, 상기 반환 단계는, 상기 요청에 응답해서 상기 클라이언트에 하나 이상의 스터브를 반환하는 단계를 더 포함하는 방법.The returning step further includes returning one or more stubs to the client in response to the request. 제14항에 있어서, 상기 검색 단계는 상기 요청에 정합하는 어떠한 서비스도 발견되지 않으면 널 값을 반환하는 단계를 포함하는 방법.15. The method of claim 14, wherein said retrieving comprises returning a null value if no service matching the request is found. 복수의 네트워크 서비스를 갖는 분산 시스템에 있어서,In a distributed system having a plurality of network services, 상기 네트워크 서비스에의 액세스를 용이하게 하기 위해 스터브를 갖는 룩업 서비스를 구비한 서버 컴퓨터; 및A server computer with a lookup service having a stub to facilitate access to the network service; And 상기 네트워크 서비스중의 하나에 대응하는 스터브들중의 하나에 대해 룩업 서비스에 요청을 송신하며, 상기 스터브를 수신하고, 상기 수신된 스터브를 사용하여 상기 하나의 네트워크 서비스를 액세스하는 프로그램을 구비한 클라이언트 컴퓨터를 구비하는 분산 시스템.A client having a program for sending a request to a lookup service for one of the stubs corresponding to one of the network services, receiving the stub, and using the received stub to access the one network service Distributed system with a computer. 제17항에 있어서, 상기 클라이언트 컴퓨터는 상기 스터브를 수신하는 원격 프로시져 호출 메커니즘을 이용하는 분산 시스템.18. The distributed system of claim 17 wherein the client computer utilizes a remote procedure call mechanism to receive the stub. 제1 컴퓨터가 클라이언트를 가지며, 제2 컴퓨터가 연관된 서비스를 액세스하는데 사용되는 서비스 스터브(service stubs)를 포함하는 룩업 서비스를 갖는 시스템에 있어서,1. A system having a lookup service, wherein the first computer has a client and the second computer has service stubs used to access an associated service, the system comprising: 클라이언트가, 액세스될 상기 연관된 서비스중의 하나를 식별하는 요청을 상기 룩업 서비스에 송신하기 위한 수단;Means for a client to send a request to the lookup service identifying one of the associated services to be accessed; 상기 룩업 서비스에 의해 상기 요청을 수신하기 위한 수단;Means for receiving the request by the lookup service; 상기 식별된 서비스에 대해 룩업 서비스를 검색하기 위한 수단;Means for searching a lookup service for the identified service; 상기 식별된 서비스에 연관된 상기 서비스 스터브를 상기 클라이언트에 반환하기 위한 수단;Means for returning the service stub associated with the identified service to the client; 상기 클라이언트에 의해 상기 서비스 스터브를 수신하기 위한 수단;Means for receiving the service stub by the client; 상기 서비스 스터브가 상기 식별된 서비스를 호출하는데 사용가능하도록, 상기 서비스 스터브를 상기 클라이언트의 어드레스 공간에 로드하기 위한 수단; 및Means for loading the service stub into the client's address space such that the service stub is available to invoke the identified service; And 상기 클라이언트에 의해 상기 스터브를 사용하여 상기 식별된 서비스를 액세스하기 위한 수단을 구비하는 시스템.Means for accessing the identified service using the stub by the client. 데이터 처리 시스템이 룩업 서비스에 포함된 네트워크 서비스를 액세스하도록 제어하기 위한 명령어를 포함하는 컴퓨터 판독가능 매체에 있어서,A computer readable medium comprising instructions for controlling a data processing system to access a network service included in a lookup service, the computer readable medium comprising: 상기 방법이,This method, 네트워크 서비스중의 하나에 액세스하기 위한 룩업 서비스에 의한 요청을 수신하는 단계; 및Receiving a request by a lookup service to access one of the network services; And 상기 하나의 네트워크 서비스의 액세스를 용이하게 하는 코드를 반환하는 단계를 포함하는 컴퓨터 판독가능 매체.Returning a code to facilitate access of the one network service. 제20항에 있어서, 상기 반환된 코드를 사용하여 상기 네트워크 서비스를 액세스하는 단계를 더 포함하는 컴퓨터 판독가능 매체.21. The computer readable medium of claim 20, further comprising accessing the network service using the returned code. 제20항에 있어서, 상기 반환 단계는 스터브를 반환하는 단계를 더 포함하는 컴퓨터 판독가능 매체.21. The computer readable medium of claim 20, wherein returning further comprises returning a stub. 제20항에 있어서, 상기 반환 단계는 스마트 프락시를 반환하는 단계를 포함하는 컴퓨터 판독가능 매체.21. The computer readable medium of claim 20, wherein returning comprises returning a smart proxy. 데이터 처리 시스템이 룩업 서비스에 포함된 네트워크 서비스를 액세스하도록 제어하기 위한 명령어를 포함하는 컴퓨터 판독가능 매체에 있어서,A computer readable medium comprising instructions for controlling a data processing system to access a network service included in a lookup service, the computer readable medium comprising: 상기 방법이,This method, 서비스중의 하나에 액세스하는 요청을 상기 룩업 서비스에 송신하는 단계; 및Sending a request to the lookup service to access one of the services; And 상기 요청에 응답해서, 상기 하나의 서비스의 사용을 용이하게 하는 코드를 수신하는 단계를 포함하는 컴퓨터 판독가능 매체.In response to the request, receiving a code that facilitates use of the one service. 제24항에 있어서, 상기 수신된 코드를 사용하여 상기 하나의 서비스를 액세스하는 단계를 더 포함하는 컴퓨터 판독가능 매체.25. The computer readable medium of claim 24, further comprising accessing the one service using the received code. 제24항에 있어서, 상기 코드의 수신 단계는 상기 하나의 서비스의 액세스를 용이하게 하는 스터브를 수신하는 단계를 포함하는 컴퓨터 판독가능 매체.25. The computer readable medium of claim 24, wherein receiving the code comprises receiving a stub that facilitates access to the one service. 제24항에 있어서, 상기 코드의 수신 단계는 상기 하나의 서비스의 액세스를 용이하게 하는 스마트 프락시를 수신하는 단계를 포함하는 컴퓨터 판독가능 매체.25. The computer readable medium of claim 24, wherein receiving the code comprises receiving a smart proxy that facilitates access to the one service.
KR1020007009230A 1998-02-26 1999-02-25 Method and system for facilitating access to a lookup service KR20010034515A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US7604898P 1998-02-26 1998-02-26
US60/076,048 1998-02-26
US09/044,826 1998-03-20
US09/044,826 US6832223B1 (en) 1996-04-23 1998-03-20 Method and system for facilitating access to a lookup service
PCT/US1999/004066 WO1999044134A1 (en) 1998-02-26 1999-02-25 Method and system for facilitating access to a lookup service

Publications (1)

Publication Number Publication Date
KR20010034515A true KR20010034515A (en) 2001-04-25

Family

ID=61094071

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020007009395A KR20010041295A (en) 1998-02-26 1999-02-17 Leasing for failure detection
KR1020007009318A KR20010041228A (en) 1998-02-26 1999-02-17 Method and system for leasing storage
KR1020007009230A KR20010034515A (en) 1998-02-26 1999-02-25 Method and system for facilitating access to a lookup service

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020007009395A KR20010041295A (en) 1998-02-26 1999-02-17 Leasing for failure detection
KR1020007009318A KR20010041228A (en) 1998-02-26 1999-02-17 Method and system for leasing storage

Country Status (1)

Country Link
KR (3) KR20010041295A (en)

Also Published As

Publication number Publication date
KR20010041295A (en) 2001-05-15
KR20010041228A (en) 2001-05-15

Similar Documents

Publication Publication Date Title
US6654793B1 (en) System and method for facilitating dynamic loading of stub information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6708171B1 (en) Network proxy
US9183066B2 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US8713089B2 (en) Dynamic lookup service in a distributed system
US6604127B2 (en) Dynamic lookup service in distributed system
US6832223B1 (en) Method and system for facilitating access to a lookup service
JP4729172B2 (en) Method and apparatus for performing transactions in a stateless web environment that supports a declarative paradigm
JP3853592B2 (en) Distributed web application server
US6983285B2 (en) Apparatus and method for dynamically verifying information in a distributed system
EP0501610B1 (en) Object oriented distributed computing system
US6134603A (en) Method and system for deterministic hashes to identify remote methods
JP3853593B2 (en) Method and apparatus for implementing an extensible authentication mechanism in a web application server
US20060053415A1 (en) Method and system for efficiently interpreting a computer program
US20030055862A1 (en) Methods, systems, and articles of manufacture for managing systems using operation objects
US6629154B1 (en) Method and system for deterministic hashes to identify remote methods
JP2002505464A (en) Apparatus and method for providing downloadable code for use in communicating with devices in a distributed system
US20020046228A1 (en) Method and system for facilitating access to a lookup service
US20090138548A1 (en) Apparatus, method, and computer program product for processing information
US6931427B2 (en) Method and apparatus for discovering data services in a distributed computer system
US7089263B2 (en) Apparatus and method for dynamically verifying information in a distributed system
US20090257085A1 (en) Generation of a web page including menu items for web pages
WO1999044134A1 (en) Method and system for facilitating access to a lookup service
EP1058880A1 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
KR20010034515A (en) Method and system for facilitating access to a lookup service
EP1194837A2 (en) Dynamic lookup service in a distributed system

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination