KR101316902B1 - Extended JAVA virtual machine for supporting multi-tenancy and Method for processing multi-tenancy using the same - Google Patents

Extended JAVA virtual machine for supporting multi-tenancy and Method for processing multi-tenancy using the same Download PDF

Info

Publication number
KR101316902B1
KR101316902B1 KR1020090128903A KR20090128903A KR101316902B1 KR 101316902 B1 KR101316902 B1 KR 101316902B1 KR 1020090128903 A KR1020090128903 A KR 1020090128903A KR 20090128903 A KR20090128903 A KR 20090128903A KR 101316902 B1 KR101316902 B1 KR 101316902B1
Authority
KR
South Korea
Prior art keywords
tenant
identifier
thread
user
extended
Prior art date
Application number
KR1020090128903A
Other languages
Korean (ko)
Other versions
KR20110072102A (en
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
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020090128903A priority Critical patent/KR101316902B1/en
Publication of KR20110072102A publication Critical patent/KR20110072102A/en
Application granted granted Critical
Publication of KR101316902B1 publication Critical patent/KR101316902B1/en

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 자바 플랫폼상에서 멀티테넌시를 지원하도록 자바가상머신의 기능을 확장시키는 기술에 관한 것이다. The present invention relates to a technique for extending the functionality of a Java virtual machine to support multi-tenancy on the Java platform.

본 발명에 따라 자바 플랫폼상에서 멀티테넌시를 지원하기 위한 확장된 자바가상머신은, 테넌트 식별자 및 사용자 식별자로 식별되는 쓰레드를 생성하는 컨텍스트 관리자 및 동일한 테넌트에 속하는 사용자 쓰레드를 하나의 쓰레드그룹으로 매핑하여 관리하는 테넌트 쓰레드 그룹 관리자를 구비하는 확장된 쓰레드 관리자와, 쓰레드에 연관된 테넌트 식별자를 이용하여 해당 테넌트에 관련된 데이터가 저장된 저장소 위치 및 필요한 객체 식별자를 확인하고 테넌트 데이터 DB로부터 상기 확인된 객체를 로드하는 객체 로더를 구비하는 확장된 클래스 로더를 포함한다.According to the present invention, an extended Java virtual machine for supporting multi-tenancy on the Java platform includes a context manager that creates a thread identified by a tenant identifier and a user identifier, and a user thread belonging to the same tenant to one thread group. An extended thread manager having a tenant thread group manager to manage, and a tenant identifier associated with the thread to identify the storage location and the required object identifier where the data related to the tenant is stored and to load the identified object from the tenant data DB. It includes an extended class loader with an object loader.

자바 플래폼, 자바가상머신, 멀티테넌시(multi-tenancy) Java platform, Java virtual machine, multi-tenancy

Description

멀티테넌시를 지원하기 위한 확장된 자바가상머신 및 이를 이용한 멀티테넌시 처리 방법{Extended JAVA virtual machine for supporting multi-tenancy and Method for processing multi-tenancy using the same} Extended JAVA virtual machine for supporting multi-tenancy and Method for processing multi-tenancy using the same}

본 발명은 하나의 플랫폼을 이용하여 다수의 테넌트(tenant)들에게 다양한 애플리케이션을 저렴한 비용으로 온라인으로 제공하는 SaaS(Soft-as-a-service) 플랫폼 기술에 관한 것으로, 구체적으로는 자바 플랫폼상에서 멀티테넌시를 지원하도록 자바가상머신의 기능을 확장시키는 기술에 관한 것이다.The present invention relates to a soft-as-a-service (SaaS) platform technology that provides a variety of applications online at a low cost to a number of tenants using a single platform. It's about technology that extends the capabilities of Java virtual machines to support tenancy.

SaaS라 함은 소프트웨어의 기능중에서 고객이 필요로 하는 것만을 서비스로서 배포하여 이용 가능하도록 한 소프트웨어의 배포 형태이다. 서비스형 소프트웨어(Service-as-a-Software)로 불리며 서버의 컴퓨터상에 소프트웨어를 설치해 두고 고객은 웹 브라우저를 통해 사용한 만큼 비용을 지불하고 소프트웨어를 서비스로 이용하는 방식이다. 따라서, SaaS 플랫폼은 하나의 소프트웨어 코드 이미지를 이용하여 다수의 고객(또는 테넌트)의 요구사항에 대한 서비스를 온라인으로 제공 하는 멀티테넌시(multi-tenancy) 기능을 지원하여야 한다. SaaS is a distribution form of software that makes available only what the customer needs as a service among the functions of the software. Called service-as-a-software, the software is installed on the server's computer, and the customer pays for it through a web browser and uses the software as a service. Therefore, the SaaS platform must support a multi-tenancy feature that provides services for the needs of multiple customers (or tenants) online using one software code image.

현재 서비스중인 자바(JAVA) 기반의 SaaS 플랫폼은 멀티테넌시 기능 구현에 특화된 가상머신을 추가로 정의하거나 멀티테넌시 기능을 제공하는 중간 모듈 계층을 추가로 포함하므로, 불필요한 클래스 로딩과 메소드 호출이 필요하고 실행되어야 하는 코드 길이 증가로 인해 프로그램 복잡도가 증가하고 성능이 저하되는 단점이 있다.Currently in service Java (JAVA) -based SaaS platform includes additional intermediate module layer that defines multi-tenancy functions or additional middle machine layer, so unnecessary class loading and method calls are required. Increasing code length, which must be executed and executed, increases program complexity and degrades performance.

본 발명의 목적은 하나의 코드 이미지로 다수 테넌트들의 요구사항을 온라인으로 서비스하기 위해 요구되는 멀티테넌시 지원 기능을 자바 플랫폼에서 제공하도록 확장된 자바가상머신 및 이의 동작하는 방법을 제안하는 것이다. An object of the present invention is to propose a Java virtual machine and a method of operating the same, which are extended to provide a multi-tenancy support function required for online service of the requirements of multiple tenants with one code image.

본 발명의 일 실시예에 따라 자바 플랫폼상에서 멀티테넌시를 지원하기 위한 확장된 자바가상머신은, 테넌트 식별자 및 사용자 식별자로 식별되는 쓰레드를 생성하는 컨텍스트 관리자 및 동일한 테넌트에 속하는 사용자 쓰레드를 하나의 쓰레드그룹으로 매핑하여 관리하는 테넌트 쓰레드 그룹 관리자를 구비하는 확장된 쓰레드 관리자와, 쓰레드에 연관된 테넌트 식별자를 이용하여 해당 테넌트에 관련된 데이터가 저장된 저장소 위치 및 필요한 객체 식별자를 확인하고 테넌트 데이터 DB로 부터 상기 확인된 객체를 로드하는 객체 로더를 구비하는 확장된 클래스 로더를 포함한다.According to one embodiment of the present invention, an extended Java virtual machine for supporting multi-tenancy on a Java platform includes a context manager for creating a thread identified by a tenant identifier and a user identifier, and a user thread belonging to the same tenant. An extended thread manager having a tenant thread group manager that maps and manages the group, and a tenant identifier associated with the thread, checks the storage location and the necessary object identifier where data related to the tenant is stored, and checks the above from the tenant data DB. It includes an extended class loader that has an object loader for loading a named object.

본 발명의 다른 실시예에 따라 자바 플랫폼상에서 멀티네넌시를 지원하기 위한 방법은, 테넌트 사용자가 로그인하면 사용자 인증을 수행하는 단계; 상기 테넌트 사용자 요청을 처리하기 위해 테넌트 식별자 및 사용자 식별자에 의해 식별되는 쓰레드를 생성하는 단계; 상기 테넌트 사용자로부터 명령을 수신하는 단계; 상기 수신된 명령을 처리하기 위해 상기 테넌트 사용자의 커스터마이즈된 테넌트 객체를 로드하기 위해 클래스로더를 호출하는 단계; 상기 클래스로더가 상기 테넌트 식별자, 상기 사용자 식별자 및 상기 수신된 명령에 기반하여 해당 테넌트 객체를 메모리에 로드하는 단계; 및 상기 쓰레드가 해당 테넌트 객체를 실행시키는 단계를 포함한다.According to another embodiment of the present invention, a method for supporting multi-nancy on a Java platform includes: performing user authentication when a tenant user logs in; Creating a thread identified by a tenant identifier and a user identifier to process the tenant user request; Receiving a command from the tenant user; Calling a classloader to load the tenant user's customized tenant object to process the received command; Loading, by the classloader, a tenant object into memory based on the tenant identifier, the user identifier, and the received command; And executing, by the thread, the tenant object.

본 발명은 자바가상머신의 기능을 확장하여 자바플랫폼에 멀티테넌시 기능을 내재화할 수 있는 기술로서, 다양한 어플리케이션을 온라인으로 제공하는 웹서버에 설치되어 사용될 수 있다. 본 발명에 따르면, 자바 API 수준이 아닌 자바가상머신 내부에서 멀티테넌시 기능을 직접 지원함으로써 자바 플랫폼의 성능에 많은 영향을 미치는 불필요한 클래스 로딩 및 실제 코드에 매핑시키기 위한 메소드 호출 과정을 줄여 전체 시스템 성능을 향상시키고, 실행 코드의 길이를 줄임으로써 코드의 간결성을 제공하여 개발 비용을 감소시킬 수 있는 장점이 있다.The present invention is a technology that can extend the functionality of the Java virtual machine to internalize the multi-tenancy function on the Java platform, and can be installed and used in a web server that provides various applications online. According to the present invention, by supporting the multi-tenancy feature directly inside the Java virtual machine rather than the Java API level, the overall system performance is reduced by reducing unnecessary class loading and method call process mapping to actual code, which greatly affects the performance of the Java platform. By reducing the length of the execution code and improving the code size, the development cost can be reduced by providing the simplicity of the code.

아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명하겠다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art can easily carry out the present invention. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and like reference numerals designate like parts throughout the specification.

명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있음을 의미한다.Throughout the specification, when a part is said to "include" a certain component, it means that it can further include other components, without excluding other components unless specifically stated otherwise. In addition, the terms “… unit”, “module”, and the like described in the specification mean a unit that processes at least one function or operation, which means that the unit may be implemented by hardware or software or a combination of hardware and software.

도 1은 본 발명이 적용되는 자바플랫폼의 기본 구조를 도시한 도면이다. 도시된 바와 같이, 자바 플랫폼은 자바가상머신(110)과 자바가상머신(110)상에서 자바될 수 있는 클래스들이 저장된 자바클래스파일(120)로 이루어지며, 자바가상머신(110)은, 자바 바이트코드를 해석하는 바이트코드 해석부(111), 자바 클래스파일(110)로 바이필요한 클래스를 로드하는 자바 클래스로더(112), 메모리를 관리하 는 가비지 콜렉터(113), 쓰레드어지며 및 관리를 자바가상머쓰레드어관리자(114), 보안어관리자(115) 및 메모리영역(116)을 포함한다. 자바가상머신(110)은 클래스로더(112)를 이용하여 자바클래스파일(120)로 바이프로그램 실행에 필요한 클래스 자바 클래스여 바이트코드 해석부(111)클래스한 해석을 통1112)를게 된다. 또한, 쓰레드어관리자(114)의 쓰레드어지며 및 관리는 자바 API를 통11제공된다. 자바 프로그램에서는 쓰레드어클래스를 이용하여 필요에 따라 로 이루어지며할 수 있으며, 생성된 여러 쓰레드를 통합관리하기 위해 쓰레드그룹(ThreadGroup) 클래스를 이용할 수 있다. 1 is a diagram illustrating a basic structure of a Java platform to which the present invention is applied. As shown, the Java platform consists of a Java virtual machine 110 and a Java class file 120 that stores classes that can be Java on the Java virtual machine 110, the Java virtual machine 110, Java byte code Bytecode analysis unit 111 for interpreting the Java class file 110, the Java class loader 112 for loading the necessary classes, the garbage collector 113 for managing the memory, threading and management of Java virtual The thread manager 114, the security manager 115, and the memory area 116 are included. The Java virtual machine 110 uses the class loader 112 to pass through a class java class file byte code interpreting unit 111 class necessary for the bi-program execution to the Java class file 120 through 1112. In addition, threading and management of the thread manager 114 is provided through a Java API. In a Java program, you can use the thread access classes as needed and use the ThreadGroup class to manage the created multiple threads.

본 발명에서는 전술한 자바가상머신(110)의 내부 기능에 직접 멀티테넌시 처리 기능을 내장시키기 위해, 클래스로더(112)와 쓰레드 관리자(114)의 기능을 확장시킨다. 이하에서 도 2 및 도 3을 참조하여, 본 발명에 따라 멀티테넌시 처리 기능을 구현하기 위해 확장된 클래스로더 및 쓰레드 관리자의 구조를 살펴보도록 한다.In the present invention, in order to embed the multi-tenancy processing function directly into the internal functions of the above-described Java virtual machine 110, the functions of the class loader 112 and the thread manager 114 is extended. 2 and 3, the structure of the class loader and thread manager extended to implement the multi-tenancy processing function according to the present invention.

도 2는 본 발명의 일 실시예에 따라 확장된 쓰레드 관리자의 구조를 도시한다. 도시된 바와 같이, 확장된 쓰레드 관리자는, 테넌트 식별자 및 사용자 식별자로 식별되는 쓰레드를 생성하는 컨텍스트 관리자(201)와, 동일한 테넌트에 속하는 사용자들의 쓰레드를 하나의 쓰레드그룹으로 매핑하여 관리하는 테넌트 쓰레드 그룹 관리자(202)를 포함한다. 테넌트 쓰레드 그룹 관리자(202)는 동일한 테넌트에 속하는 쓰레드를 하나의 그룹으로 관리하거나 테넌트내에서 각 쓰레드의 역 할(role)에 기반하여 세부 그룹 단위로 쓰레드를 관리할 수 있다. 테넌트 쓰레드 그룹 관리자(202)는 그룹 단위의 쓰레드 그룹 관리를 통해 서비스 품질 및 자원관리 모니터링 정책을 테넌트마다 또는 테넌트 내 그룹단위로 일관되게 적용할 수 있다.2 illustrates a structure of an extended thread manager according to an embodiment of the present invention. As shown, the extended thread manager includes a context manager 201 that creates a thread identified by a tenant identifier and a user identifier, and a tenant thread group that manages by mapping threads of users belonging to the same tenant into one thread group. Manager 202 is included. The tenant thread group manager 202 may manage threads belonging to the same tenant as a group or manage the threads in detailed group units based on the role of each thread in the tenant. The tenant thread group manager 202 can consistently apply the service quality and resource management monitoring policy to each tenant or to each group within the tenant through group group thread management.

도 3은 본 발명의 일 실시 예에 따라 확장된 클래스 로더의 구조를 도시한다. SaaS 플랫폼에서 서비스되는 어플리케이션은 컨피규레이터를 통해 다양한 테넌트 요구사항을 만족시키도록 사용자 인터페이스, 비즈니스로직, 데이터스키마 등이 커스터마이징된다. 테넌트별 커스터마이징 정보는 메타데이터 DB(304)에 저장되며, 사용자가 명령을 입력할 경우에 테넌트 메타데이터를 해석하여 적합한 비즈니스 로직이 실행되고 사용자 UI를 보여주게 된다. 3 illustrates a structure of an extended class loader according to an embodiment of the present invention. Applications serviced on the SaaS platform can be customized with user interfaces, business logic, and data schemas to meet various tenant requirements through the configurator. Tenant-specific customization information is stored in the metadata DB 304, and when a user enters a command, the tenant metadata is interpreted to execute appropriate business logic and show a user UI.

도 3에 도시된 바와 같이, 확장된 클래스 로더는, 메타데이터 추출부(301), 메타데이터 해석부(302) 및 객체 로더(303)를 포함한다. 메타데이터 DB(304)는 테넌트 요구사항을 만족시키도록 커스터마이징된 사용자 인터페이스, 비즈니스로직, 데이터스키마 정보 등을 저장한다. 메타데이터 추출부(301)는 쓰레드로부터 테넌트 식별자, 테넌트 사용자 식별자 및 명령 메시지를 전달받고, 이들에 기반하여 메타데이터 DB(304)로부터 해당 테넌트에 연관된 메타데이터를 추출한다. 테넌트 식별자는 메타데이터 DB를 구성하는 테이블에서 테넌트 정보를 구별하는 유일키로서, 사용자 명령 메시지를 수행하기 위한 비즈니스 로직과 관련 데이터에 접근하는데 사용된다.As shown in FIG. 3, the extended class loader includes a metadata extracting unit 301, a metadata analyzing unit 302, and an object loader 303. Metadata DB 304 stores user interfaces, business logic, data schema information, and the like, customized to meet tenant requirements. The metadata extracting unit 301 receives a tenant identifier, tenant user identifier, and command message from a thread, and extracts metadata associated with the tenant from the metadata DB 304 based on these. The tenant identifier is a unique key that distinguishes tenant information in the tables constituting the metadata DB. The tenant identifier is used to access business logic and related data for performing a user command message.

메타데이터 해석부(302)는 추출된 메타데이터를 해석하여 해당 테넌트에 관련된 데이터 위치 및 관련 객체 식별자를 확인한다. 메타데이터는 테넌트가 설정한 사용자 인터페이스(UI), 데이터스키마, 비즈니스 로직에 대한 정보를 포함하고 있다. 사용자 명령 처리를 위해 메타데이터 해석부(302)는 우선 테넌트 UI의 메타데이터를 해석하여 해당 UI화면을 구성하고, UI화면에 필요한 데이터를 채우기 위해 데이터 스키마에 대한 메타데이터 정보를 해석하여 테넌트 데이터 정보가 저장된 저장소 위치를 판별하고, 동적 데이터를 생성하기 위한 비즈니스로직을 정의한 자바 객체 ID를 확인한다.The metadata analyzing unit 302 analyzes the extracted metadata to check the data location and the related object identifier related to the tenant. The metadata contains information about the user interface (UI), data schema, and business logic set by the tenant. For user command processing, the metadata analyzing unit 302 first constructs a corresponding UI screen by analyzing the metadata of the tenant UI, and analyzes the metadata information about the data schema to fill the necessary data on the UI screen, and thus the tenant data information. Determines the storage location where is stored, and checks the Java object ID that defines the business logic for generating dynamic data.

객체 로더(303)는 상기 확인된 객체 식별자를 이용하여 테넌트 데이터 DB(305)로부터 해당 테넌트에 관련된 객체를 자바 클래스를 저장하는 메모리 영역(306)으로 로드한다. 이와 같이 로드된 테넌트 객체의 클래스는 이후부터는 자바가상머신의 일반적인 동작방법을 따르게 된다.  The object loader 303 loads the object related to the tenant from the tenant data DB 305 to the memory area 306 storing the Java class using the identified object identifier. The loaded tenant object's class will follow the general behavior of the Java virtual machine.

전술한 확장된 클래스로더 및 쓰레드 관리자의 기능은 java.lang 패키지에 포함된 ClassLoader, Thread, ThreadGroup 클래스 API를 확장하여 제공하거나 자바 API는 변경하지 않고 자바 실행 환경의 컨텍스트를 이용하여 제공할 수 있다. 즉, 자바 실행 환경 자체를 확장하여 환경 변수로서 테넌트 식별자를 정의하고, 기존 어플리케이션의 테넌트 식별자 값은 미리 내정된 값을 사용함으로써 기존 API의 확장 없이 적용가능하다.The functions of the above-described extended class loader and thread manager can be provided by extending ClassLoader, Thread, and ThreadGroup class APIs included in the java.lang package or using the context of the Java execution environment without changing the Java API. That is, the tenant identifier is defined as an environment variable by extending the Java execution environment itself, and the tenant identifier value of the existing application can be applied without extension of the existing API by using a predefined value.

도 4는 본 발명의 일 실시예에 따라 확장된 자바플랫폼을 이용하여 멀티테넌 시를 지원하는 방법을 도시한 흐름도이다.4 is a flowchart illustrating a method for supporting multi-tenancy using an extended Java platform according to an embodiment of the present invention.

단계(410)에서 테넌트 사용자가 로그인하면 사용자 인증을 수행하고 테넌트 인증 정보 및 세션 정보 등을 컨텍스트 관리자에 등록한다.When the tenant user logs in in step 410, user authentication is performed and tenant authentication information and session information are registered in the context manager.

단계(420)에서, 상기 테넌트 사용자 요청을 처리하기 위해 테넌트 식별자 및 사용자 식별자에 의해 식별되는 쓰레드를 생성한다. 생성된 사용자 쓰레드를 테넌트에 대응되는 쓰레드 그룹에 등록한다.In step 420, a thread identified by the tenant identifier and the user identifier is created to process the tenant user request. Register the created user thread in the thread group corresponding to the tenant.

단계(430)에서, 사용자로부터 명령을 수신한다.In step 430, a command is received from a user.

단계(440)에서, 쓰레드는 상기 수신된 명령 처리에 필요한 사용자의 커스터마이즈된 테넌트 객체를 로드하기 위해 확장된 클래스로더를 호출하고, 패러미터로서 테넌트 식별자, 테넌트 사용자 식별자 및 명령 메시지를 확장된 클래스로더에 전달한다. In step 440, the thread invokes the extended classloader to load the user's customized tenant object for processing the received command, and passes the tenant identifier, tenant user identifier and command message as parameters to the extended classloader. To pass.

단계(450)에서, 확장된 클래스로더는 전달된 패러미터를 기반으로 커스터마이징된 테넌트 객체를 로드하고, 쓰레드는 해당 객체(코드)를 실행시킨다. In step 450, the extended class loader loads a customized tenant object based on the passed parameters, and the thread executes the object (code).

구체적으로, 확장된 클래스로더는 쓰레드로부터 테넌트 식별자, 테넌트 사용자 식별자 및 명령 메시지가 전달되면, 테넌트 식별자를 이용하여 메타데이터 DB(304)로부터 해당 테넌트에 연관된 메타데이터를 추출하고 이를 해석하여 해당 테넌트에 관련된 데이터가 저장된 저장소 위치 및 필요한 객체 식별자를 확인하고, 상기 확인된 객체 식별자를 이용하여 테넌트 데이터 DB로부터 해당 테넌트에 관련된 객체를 검색하여 메모리 영역(306)으로 로드한다. 테넌트 객체는 사용자 인터페이스, 워크플로우, 데이터 정보 등을 포함할 수 있다. Specifically, when a tenant identifier, tenant user identifier, and command message are delivered from a thread, the extended class loader extracts metadata associated with the tenant from the metadata DB 304 using the tenant identifier, interprets the metadata, and then interprets the metadata. The storage location and the required object identifier are stored, and the object related to the tenant is retrieved from the tenant data DB and loaded into the memory area 306 using the identified object identifier. Tenant objects can include user interfaces, workflows, data information, and the like.

쓰레드에 의한 실행이 완료되면 해당 테넌트 객체는 확장된 클래스로더에 의해 반환된다.After execution by the thread, the tenant object is returned by the extended class loader.

본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD_ROM, 자기테이프, 플로피디스크 및 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.The present invention can also be embodied as computer-readable codes on a computer-readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored. Examples of the computer-readable recording medium include a ROM, a RAM, a CD ROM, a magnetic tape, a floppy disk, and an optical data storage device, and also include a carrier wave (for example, transmission via the Internet) . The computer readable recording medium may also be distributed over a networked computer system and stored and executed in computer readable code in a distributed manner.

또한, 본 발명은 휴대용 멀티미디 재생 장치(MP3, PMP 등), 핸드폰 및 PDA에도 적용될 수 있다.The present invention can also be applied to portable multimedia playback devices (MP3, PMP, etc.), mobile phones and PDAs.

이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.So far I looked at the center of the preferred embodiment for the present invention. It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. Therefore, the disclosed embodiments should be considered in an illustrative rather than a restrictive sense. The scope of the present invention is defined by the appended claims rather than by the foregoing description, and all differences within the scope of equivalents thereof should be construed as being included in the present invention.

도 1은 본 발명이 적용되는 자바플랫폼의 기본 구조를 도시한 도면이다. 1 is a diagram illustrating a basic structure of a Java platform to which the present invention is applied.

도 2는 본 발명의 일 실시예에 따라 확장된 쓰레드 관리자의 구조를 도시한다.2 illustrates a structure of an extended thread manager according to an embodiment of the present invention.

도 3은 본 발명의 일 실시예에 따라 확장된 클래스 로더의 구조를 도시한다.3 illustrates a structure of an extended class loader according to an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 따라 확장된 자바플랫폼을 이용하여 멀티테넌시를 지원하는 방법을 도시한 흐름도이다.4 is a flowchart illustrating a method of supporting multi-tenancy using an extended Java platform according to an embodiment of the present invention.

Claims (8)

자바 플랫폼상에서 멀티테넌시를 지원하기 위한 확장된 자바가상머신 처리장치에 있어서,An extended Java virtual machine processing apparatus for supporting multi-tenancy on the Java platform, 테넌트 식별자 및 테넌트 사용자 식별자로 식별되는 쓰레드를 생성하는 컨텍스트 관리자 및 동일한 테넌트에 속하는 사용자 쓰레드를 하나의 쓰레드그룹으로 매핑하여 관리하는 테넌트 쓰레드 그룹 관리자를 구비하는 확장된 쓰레드 관리자와,An extended thread manager having a context manager that creates a thread identified by the tenant identifier and the tenant user identifier, and a tenant thread group manager that maps and manages user threads belonging to the same tenant into a single thread group; 쓰레드에 연관된 테넌트 식별자를 이용하여 해당 테넌트에 관련된 데이터가 저장된 저장소 위치 및 필요한 객체 식별자를 확인하고 테넌트 데이터 DB로부터 상기 확인된 객체를 로드하는 객체 로더를 구비하는 확장된 클래스 로더An extended class loader that includes an object loader that uses a tenant identifier associated with a thread to identify the storage location where the data related to the tenant is stored and the required object identifier and to load the identified object from the tenant data DB. 를 포함하는 멀티테넌시 지원용 확장된 자바가상머신 처리장치.Extended Java virtual machine processing device for multi-tenancy support, including. 제1항에 있어서, 상기 확장된 클래스로더는,The method of claim 1, wherein the extended class loader, 쓰레드로부터 테넌트 식별자, 테넌트 사용자 식별자 및 명령 메시지가 전달되면 상기 테넌트 식별자, 상기 테넌스 사용자 식별자 및 명령 메시지에 기반하여 메타데이터 DB로부터 해당 테넌트에 연관된 메타데이터를 추출하는 메타데이터 추출부; A metadata extractor configured to extract metadata associated with the tenant from a metadata DB based on the tenant identifier, the tenant user identifier, and the command message when a tenant identifier, tenant user identifier, and command message are transmitted from a thread; 상기 추출된 메타데이터를 해석하여 해당 테넌트에 관련된 데이터가 저장된 저장소 위치 및 필요한 객체 식별자를 확인하는 메타데이터 해석부; 및A metadata analysis unit for analyzing the extracted metadata to identify a storage location in which data related to the tenant is stored and a necessary object identifier; And 상기 확인된 저장소 위치 및 객체 식별자를 이용하여 테넌트 데이터 DB로부터 해당 테넌트에 관련된 객체를 메모리 영역으로 로드하는 객체 로더An object loader for loading an object related to the tenant from a tenant data DB into a memory area using the identified storage location and object identifier 를 포함하는 멀티테넌시 지원용 확장된 자바가상머신 처리장치.Extended Java virtual machine processing device for multi-tenancy support, including. 제1항에 있어서, 상기 테넌트 쓰레드 그룹 관리자는 동일한 테넌트에 속하는 쓰레드 또는 쓰레드 그룹에 대하여 동일한 서비스 품질 및 자원관리 모니터링 정책을 적용하는 멀티테넌시 지원용 확장된 자바가상머신 처리장치.The apparatus of claim 1, wherein the tenant thread group manager applies the same quality of service and resource management monitoring policies to threads or thread groups belonging to the same tenant. 제2항에 있어서, 상기 메타데이터 DB는 테넌트별 어플리케이션 커스터마이징 정보를 저장하는 멀티테넌시 지원용 확장된 자바가상머신 처리장치.The apparatus of claim 2, wherein the metadata DB stores tenant application customization information. 제1항에 있어서, 상기 확장된 클래스 로더는 쓰레드로부터 쓰레드에 연관된 테넌트 식별자, 테넌트 사용자 식별자 및 명령 메시지를 전달받는 멀티테넌시 지원용 확장된 자바가상머신 처리장치.The apparatus of claim 1, wherein the extended class loader receives a tenant identifier, a tenant user identifier, and a command message associated with the thread from a thread. 자바 플랫폼상에서 멀티네넌시를 지원하기 위하여 프로세서에 의해 수행되는 방법에 있어서, In a method performed by a processor to support multi-needance on the Java platform, 테넌트 사용자가 로그인하면 사용자 인증을 수행하는 단계;Performing user authentication when the tenant user logs in; 상기 테넌트 사용자 요청을 처리하기 위해 테넌트 식별자 및 사용자 식별자에 의해 식별되는 쓰레드를 생성하는 단계;Creating a thread identified by a tenant identifier and a user identifier to process the tenant user request; 상기 테넌트 사용자로부터 명령을 수신하는 단계;Receiving a command from the tenant user; 상기 수신된 명령을 처리하기 위해 상기 테넌트 사용자의 커스터마이즈된 테넌트 객체를 로드하기 위해 클래스로더를 호출하는 단계;Calling a classloader to load the tenant user's customized tenant object to process the received command; 상기 클래스로더가 상기 테넌트 식별자, 상기 사용자 식별자 및 상기 수신된 명령에 기반하여 해당 테넌트 객체를 메모리에 로드하는 단계;Loading, by the classloader, a tenant object into memory based on the tenant identifier, the user identifier, and the received command; 상기 쓰레드가 해당 테넌트 객체를 실행시키는 단계;The thread executing the tenant object; 를 포함하는 자바 플랫폼상에서의 멀티네넌시 지원 방법.Multi-Nancy Support on the Java platform, including. 제6항에 있어서, 상기 생성된 쓰레드를 상기 테넌트에 대응되는 쓰레드 그룹에 등록하는 단계를 더 포함하는 자바 플랫폼상에서의 멀티네넌시 지원 방법.7. The method of claim 6, further comprising registering the created thread with a thread group corresponding to the tenant. 제6항에 있어서, 상기 클래스로더가 해당 테넌트 객체를 메모리에 로드하는 단계는, The method of claim 6, wherein the classloader loads the tenant object into memory. 상기 테넌트 식별자를 이용하여 메타데이터 DB로부터 해당 테넌트에 연관된 메타데이터를 추출하는 단계;Extracting metadata associated with the tenant from the metadata DB using the tenant identifier; 상기 추출된 메타데이터를 해석하여 해당 테넌트에 관련된 데이터가 저장된 저장소 위치 및 필요한 객체 식별자를 확인하는 단계;Analyzing the extracted metadata to identify a storage location and a necessary object identifier in which data related to the tenant is stored; 상기 확인된 저장소 위치 및 객체 식별자를 이용하여 테넌트 데이터 DB로부터 해당 테넌트에 관련된 객체를 검색하여 메모리 영역으로 로드하는 단계Retrieving an object related to the tenant from the tenant data DB using the identified storage location and the object identifier and loading the object into the memory area; 를 포함하는 자바 플랫폼상에서의 멀티네넌시 지원 방법.Multi-Nancy Support on the Java platform, including.
KR1020090128903A 2009-12-22 2009-12-22 Extended JAVA virtual machine for supporting multi-tenancy and Method for processing multi-tenancy using the same KR101316902B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090128903A KR101316902B1 (en) 2009-12-22 2009-12-22 Extended JAVA virtual machine for supporting multi-tenancy and Method for processing multi-tenancy using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090128903A KR101316902B1 (en) 2009-12-22 2009-12-22 Extended JAVA virtual machine for supporting multi-tenancy and Method for processing multi-tenancy using the same

Publications (2)

Publication Number Publication Date
KR20110072102A KR20110072102A (en) 2011-06-29
KR101316902B1 true KR101316902B1 (en) 2013-10-18

Family

ID=44403073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090128903A KR101316902B1 (en) 2009-12-22 2009-12-22 Extended JAVA virtual machine for supporting multi-tenancy and Method for processing multi-tenancy using the same

Country Status (1)

Country Link
KR (1) KR101316902B1 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769071B2 (en) * 2011-02-25 2014-07-01 Red Hat, Inc. Dynamic mapping of identifiers in a multi-tenant computing system
KR101361243B1 (en) * 2011-11-30 2014-02-12 삼성에스디에스 주식회사 Apparatus and Method for Tenant-aware Security Management in Multi-Tenancy system
CN104813288B (en) * 2012-11-27 2018-01-12 瑞典爱立信有限公司 The apparatus and method that tenant's specific data are separated during for using MPLS in the cloud computing for enable OPENFLOW
KR101487859B1 (en) * 2014-01-15 2015-02-02 주식회사 이디엄 Method for Collecting UDP Packet When Java Program Is Being Executed
WO2016048266A1 (en) * 2014-09-22 2016-03-31 Hewlett Packard Enterprise Development Lp Tenant data mapping for multiple tenant cloud applications
KR102554497B1 (en) * 2014-12-30 2023-07-11 주식회사 로즈시스템즈 Apparatus and method of platform building for providing service of shipping port logistics based on cloud computing
KR102098896B1 (en) * 2016-03-02 2020-04-09 한국전자통신연구원 Apparatus and method for managing data
KR102088303B1 (en) * 2016-12-14 2020-03-12 한국전자통신연구원 Apparatus and method for providing virtual security service based on cloud

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090271472A1 (en) 2008-04-28 2009-10-29 Scheifler Robert W System and Method for Programmatic Management of Distributed Computing Resources
US20090293056A1 (en) 2008-05-22 2009-11-26 James Michael Ferris Methods and systems for automatic self-management of virtual machines in cloud-based networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090271472A1 (en) 2008-04-28 2009-10-29 Scheifler Robert W System and Method for Programmatic Management of Distributed Computing Resources
US20090293056A1 (en) 2008-05-22 2009-11-26 James Michael Ferris Methods and systems for automatic self-management of virtual machines in cloud-based networks

Also Published As

Publication number Publication date
KR20110072102A (en) 2011-06-29

Similar Documents

Publication Publication Date Title
KR101316902B1 (en) Extended JAVA virtual machine for supporting multi-tenancy and Method for processing multi-tenancy using the same
Mann et al. A framework for static detection of privacy leaks in android applications
EP2307977B1 (en) System and method for dynamic partitioning of applications in client-server environments
US9576257B2 (en) Integrating data-handling policies into a workflow model
US8898731B2 (en) Association of service policies based on the application of message content filters
US20040098724A1 (en) Associating a native resource with an application
US20090100321A1 (en) Universal contextual actions menu across windows applications
CN102087615A (en) Automated merger of logically associated messages in a message queue
US20190272180A1 (en) Bootstrapping Profile-Guided Compilation and Verification
CN109656879A (en) Big data method for managing resource, device, equipment and storage medium
US8887241B2 (en) Virtual roles
CN111083093B (en) Method and device for calling terminal capability, electronic equipment and storage medium
TWI590073B (en) Virtualizing integrated calls to provide access to resources in a virtual namespace
US9632897B2 (en) Monitoring components in a service framework
US20210019155A1 (en) Optimizing managed runtime applications for serverless environments
US10803413B1 (en) Workflow service with translator
US9032326B2 (en) Late instantiation of dependent objects
US9298473B2 (en) System and method for a generic object access layer
CN113176876B (en) Data reading and writing method and device and electronic equipment
US10303531B2 (en) Console application through web service
US8214499B2 (en) System and method for enabling software applications as a service in a non-intrusive manner
US20160188872A1 (en) Method and system for runtime injection of secure applications
CN117951106A (en) Log processing method and device, electronic equipment and computer readable medium
CN117194837A (en) Page access method and device, electronic equipment and computer readable medium
CN117762386A (en) Service processing method, device, electronic equipment and computer readable medium

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160927

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee