KR100487739B1 - 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리장치 및 그 방법 - Google Patents

웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리장치 및 그 방법 Download PDF

Info

Publication number
KR100487739B1
KR100487739B1 KR10-2001-0085776A KR20010085776A KR100487739B1 KR 100487739 B1 KR100487739 B1 KR 100487739B1 KR 20010085776 A KR20010085776 A KR 20010085776A KR 100487739 B1 KR100487739 B1 KR 100487739B1
Authority
KR
South Korea
Prior art keywords
instance
memory
lru queue
cache
queue
Prior art date
Application number
KR10-2001-0085776A
Other languages
English (en)
Other versions
KR20030055714A (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
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2001-0085776A priority Critical patent/KR100487739B1/ko
Publication of KR20030055714A publication Critical patent/KR20030055714A/ko
Application granted granted Critical
Publication of KR100487739B1 publication Critical patent/KR100487739B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/546Message passing systems or structures, e.g. queues

Abstract

본 발명은 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 장치 및 그 방법에 관한 것이다.
본 발명은 클라이언트 프로그램이 특정 객체의 함수를 호출할 때 해당 객체가 메모리 상의 인스턴스 캐쉬나 큐에 존재하면 이를 반환하고, 존재하지 않으면 인스턴스 풀에서 미리 생성된 객체를 가져오고 객체 풀이 비어 있으면 객체를 생성하여 반환하고, 해당 객체가 트랜잭션에 참여하면 인스턴스 캐쉬에 저장하고 트랜잭션에 참여하지 않으면 큐에 저장하고, 만약 큐에 비어 있는 공간이 없으면 메모리를 체크하여 메모리의 여유 공간이 있으면 큐의 크기를 증가시키고, 메모리의 여유 공간이 부족하면 타임 아웃된 객체를 메모리에서 제거하고 타임 아웃된 객체가 없으면 가장 오랫동안 사용되지 않은 객체를 메모리에서 제거하도록 되어 있으며,
이에 따라서 시스템이 대용량의 클라이언트 요청과 많은 수의 객체를 효율적으로 관리할 수 있다.

Description

웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 장치 및 그 방법 { APPARATUS FOR MANAGING BUSINESS OBJECTS IN MEMORY OF WEB-BASED APPLICATION SYSTEMS AND METHOD THEREOF }
본 발명은 웹 기반 응용 시스템에 관한 것이며, 보다 상세히는 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 방법에 관한 것이다.
일반적으로 웹 기반 응용 시스템은 웹 기반 전자상거래 응용이 활성화되고 기업의 다양한 업무 프로세스가 웹을 기반으로 이루어지면서 이러한 웹 응용을 쉽게 저작, 배포, 운용할 수 있는 미들웨어 시스템으로서 개발되어 등장하게 되었다.
상기 웹 기반 응용 시스템은 HTML(Hyper Text Markup Language), JSP(Java Server Page), 서블릿(Servlet)과 같은 다양한 웹 컴포넌트뿐만 아니라 기업의 업무 프로세스를 나타내는 수많은 비즈니스 객체를 관리해야 한다.
또한, 상기 웹 기반 응용 시스템은 웹의 특성상 불특정 다수의 클라이언트로부터의 요청을 처리해야 할 뿐만 아니라, 기업의 업무 프로세스가 통합화, 복잡화되고 클라이언트의 수가 많아짐에 따라 시스템의 메모리에 유지해야 하는 웹 컴포넌트 및 비즈니스 객체의 수도 증가하게 되고 이를 효과적으로 관리하기 위한 메커니즘을 필요로 한다.
따라서, 시스템의 메모리 상에서 효과적인 객체 관리를 위한 기존의 방법은 웹 컴포넌트에 초점이 맞추어진 캐쉬 기술이 주로 사용되었다.
상기 캐쉬 기술은 본래 컴퓨터의 중앙처리장치와 주기억장치 혹은 주기억장치와 보조기억장치 사이의 처리 속도를 해소하기 위해, 자주 사용되는 데이터를 메모리에 임시로 보관하는 기법으로서, 웹 기반 서비스 환경에서도 자주 사용되는 웹 사이트의 웹 컴포넌트를 자기의 컴퓨터나 프락시 서버(Proxy Server)에 보관하는 방식으로 캐쉬 기술을 활용하고 있다.
그러나, 종래의 캐쉬 관리 방법은 컴퓨터에서 사용되는 캐쉬와, 인터넷에서 취급하는 데이터가 모두 정적인 것으로 사용자가 캐쉬에 요청한 내용이 어떤 처리를 통해서 새로 얻어지는 것이 아니라 이미 존재하고 있는 파일 형태의 데이터이며, 웹 컴포넌트 외의 동적인 비즈니스 객체에 대한 효율적인 관리 방법은 제시하지 못하고 있다.
특히, 웹 기반 응용 시스템의 성능 및 안정성을 향상시키기 위해서는 웹 컴포넌트뿐만 아니라 기업의 비즈니스 업무를 표현하는 비즈니스 객체에 대한 효율적인 관리도 필수적임에도 불구하고, 종래에는 상기 비즈니스 객체에 대한 효율적인 관리 방법은 제시하지 못하고 있다.
따라서, 본 발명은 상술한 종래의 문제점을 극복하기 위한 것으로서, 본 발명의 목적은 비즈니스 객체의 상태 정보 및 데이터를 효율적으로 관리하기 위한 캐쉬 기술 및 객체 풀 관리 기술로 실현되는 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 장치 및 그 방법을 제공하는데 있다.
상기 본 발명의 목적을 달성하기 위한 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 장치는, 서버 시스템에서 사용자의 요청을 처리하기 위해서 필요한 객체 인스턴스를 요구하면 해당 객체 인스턴스를 반환하는 인스턴스 관리자와; 사용자의 요청을 처리하여 활성화되고 트랜잭션에 참여하는 객체를 메모리에 보관하고, 상기 인스턴스 관리자에서 요구하는 해당 객체 인스턴스를 반환하는 인스턴스 캐쉬와; 상기 인스턴스 캐쉬에 해당 객체 인스턴스가 없을 경우, 일부의 객체를 미리 생성하여 보관하고 있는 인스턴스 풀에서 객체 인스턴스를 하나 가져와 활성화한 후 데이터베이스에서 해당 객체에 대한 상태를 읽어 객체 인스턴스에 저장한 후 반환하는 활성자와; 상기 인스턴스 캐쉬에서 소정의 시간동안 사용자의 요청이 전달되지 않은 객체와 트랜잭션에 참여하지 않은 활성화된 객체를 보관하는 LRU 큐와; 상기 LRU 큐에서 특정 시간 이상 사용자의 요청을 처리하지 않은 객체의 상태를 데이터베이스나 파일에 저장하고, 객체 자체는 재사용을 위해 상기 인스턴스 풀에 반환하는 타임아웃 검사기; 및 상기 타임아웃 검사기에 의해 LRU 큐로부터 일정 시간 동안 사용자의 요청이 도달하지 않는 객체가 전달되면 객체 인스턴스의 상태를 지정된 데이터베이스나 파일에 기록하고 해당 객체 인스턴스를 재사용을 위해 상기 인스턴스 풀에 저장하는 비활성자로 구성된다.
상기 본 발명의 목적을 달성하기 위한 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 방법은, 서버 시스템이 객체 인스턴스를 요청하면 인스턴스 관리자가 인스턴스 캐쉬에 해당 객체가 있는지 검사하는 단계와; 상기 인스턴스 캐쉬에 해당 객체가 존재할 경우 현재 트랜잭션의 존재 유무에 따라서 해당 객체를 반환하거나, 인스턴스 캐쉬에서 해당 객체를 제거한 후 LRU 큐의 제일 앞에 해당 객체를 저장하고 해당 객체를 반환하는 단계와; 상기 인스턴스 캐쉬에 해당 객체가 존재하지 않으면 상기 LRU 큐에 해당 객체가 있는지 검사하는 단계와; 상기 LRU 큐에 해당 객체의 존재 유무와 트랜잭션의 존재 유무에 따라서 객체를 상기 LRU 큐에서 제거하고 상기 인스턴스 캐쉬에 삽입한 후 객체를 반환하거나, 인스턴스 풀에서 빈 객체를 가져오고 데이터베이스에서 해당 객체에 대한 상태를 읽어와 인스턴스 풀에서 가져온 객체에 저장하는 단계와; 상기 인스턴스 풀에서 가져온 객체의 트랜잭션 존재 유무에 따라서 인스턴스 캐쉬에 객체를 삽입하고, 상기 LRU 큐에 여유 공간이 있는지 검사하는 단계와; 상기 LRU 큐에 여유 공간이 있으면 해당 객체를 LRU 큐의 제일 앞에 삽입하고 해당 객체를 반환하고, 여유 공간이 없으면 메모리의 여유 공간을 검사하는 단계와; 메모리의 여유 공간이 있으면 LRU 큐의 크기를 증가시키고, 해당 객체를 LRU 큐의 제일 앞에 삽입하고 해당 객체를 반환하는 단계와; 메모리에 여유 공간이 없으면 타임아웃 검사기를 실행하여 타임 아웃된 객체를 메모리에서 제거하고 큐에 여유 공간이 있는지 검사하여, 큐에 여유 공간이 없으면 큐의 맨 마지막에 있는 객체를 선택하여 비활성자에게 넘겨 비활성화시키고, 이때 생긴 여유 공간에 해당 객체를 삽입하고 반환하는 단계; 및 타임 아웃된 객체가 있으면 LRU 큐의 여유 공간에 해당 객체를 삽입하고 반환하고, 반환하기 전에 항상 해당 객체의 상태를 '요청중'으로 변환하고 해당 객체에 대해 현재 시간을 저장하는 단계로 이루어진다.
이하, 본 발명에 따른 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 방법을 첨부한 도면을 참조하여 상세히 설명하기로 한다.
도 1을 참조하면, 종래의 웹 기반 응용 시스템(10)은 웹브라우저(20)나 자바 클라이턴트(30), 웹 서버(40) 등의 사용자에게 그래픽 화면을 보여주거나 사용자의 입력을 받아 처리하는 HTML(Hyper Text Markup Language), JSP(Java Server Page), 서블릿(Servlet)으로 이루어진 웹 컴포넌트(50)와 웹 컴포넌트(50)로부터 전달된 사용자의 요구에 대해, 실제 데이터베이스나 트랜잭션 서버(Transaction server),보안서버(Security server), 데이터베이스관리시스템(DBMS), 고객관계관리(CRM), 공급망관리(SCM), 전자상거래장터(e-MP), 전사적자원관리시스템(ERP System) 등과 같은 각종 비즈니스 업무를 위한 서버 및 관리 시스템, 레거시(legacy) 시스템 등과의 연동을 통해 기업의 비즈니스 업무를 처리하는 비즈니스 객체(객체n)로 이루어진다.
상기 비즈니스 객체(객체n)는 주로 데이터베이스에 존재하는 정보를 나타내는 데이터 객체와 사용자의 요청에 따라 비즈니스 로직을 수행하는 업무 객체로 나누어진다.
예를 들어, 데이터베이스에 사용자의 계좌 정보가 기록되어 있으며, 이 계좌 정보에서 한 달간의 이자를 계산하는 응용이 있다고 가정하면, 이때 데이터베이스에 존재하는 사용자의 계좌 정보는 데이터 객체가 되고, 상기 데이터 객체에서 사용자 계좌 정보를 읽어 한 달간의 이자를 계산하는 객체는 업무 객체가 된다.
즉, 상기 데이터 객체는 여러 사용자에 의해 공유되어지는 반면 업무 객체는 한 사용자만의 사용하는 객체이다.
한편, 웹 상의 일반 쇼핑 몰이 다양화, 전문화, 대형화되고, 기업의 업무 프로세스가 웹 기반으로 바뀌면서 상기 웹 기반 응용 시스템(10)이 처리해야 할 업무 프로세스가 복잡하게 되었으며 유지보수 비용도 증가하게 되었다. 또한, 웹의 특성상 특정 시간에 엄청난 수의 사용자가 동시에 접근이 가능하기 때문에 이러한 상황을 고려한 시스템의 안정화는 필수적이라 하겠다. 이러한 이유로 인해 웹 기반 응용 시스템이 내부적으로 다루어야 할 비즈니스 객체의 수가 증가하게 되었으며, 다수의 객체에 대한 동시 접근 시 상기 웹 기반 응용 시스템(10)의 안정성 보장은 필수적인 요구 사항이 되었다.
이때, 사용자의 요청은 크게 두 가지 종류가 있다. 첫번째는 특정 비즈니스 객체에 요청을 보내기 위해 상기 웹 기반 응용 시스템(10)에 해당 비즈니스 객체를 요구하는 요청이며, 두번째는 해당 비즈니스 객체(이하, 객체라 함)에 요청을 하는 경우이다.
예를 들면, 사용자가 자신의 계좌에서 현금을 인출하는 경우 현금 인출이라는 요청을 처리할 객체를 사용자 프로그램은 상기 웹 기반 응용 시스템(10)에 요구하게 된다.
상기 웹 기반 응용 시스템(10)은 해당 객체를 사용자 프로그램에게 반환하게 되고, 사용자 프로그램은 상기 웹 기반 응용 시스템(10)에서 반환된 객체에 돈을 인출하라는 요청을 하게 된다.
그러나, 상기 웹 기반 응용 시스템(10)에서 사용자에게 반환되는 객체는 실제 시스템 상에 존재하여 실제 요청을 처리하는 객체가 아니고 사용자의 요청을 받아 시스템 쪽에 해당 요청을 전달하는 통신을 담당하는 객체가 된다.
이와 같은 객체를 보통 스텁(stub) 혹은 프락시(Proxy) 객체라고 하며, 웹 기반 응용 시스템(10) 내의 해당 요청을 처리할 객체에 대한 식별자(identifier)를 보관하고 있다. 상기 웹 기반 응용 시스템(10)은 스텁을 생성할 때 스텁에 식별자를 할당하게 된다.
예컨대, 현금 인출이라는 요청을 스텁 객체로부터 전달받은 웹 기반 응용 시스템(10)은 해당 스텁 객체로부터 객체 식별자를 추출한 후 해당 식별자에 해당하는 객체를 웹 기반 응용 시스템 내에서 선택하여 해당 요청을 처리하게 된다.
사용자의 요청을 처리하기 위해서는 이를 처리하는 객체가 메모리 상에 존재하여 해당 요청을 처리하여야 한다. 해당 객체가 메모리 상에 존재하지 않으면 객체를 하나 생성하여 해당 요청을 처리한다.
상기와 같은 사용자의 요청이 웹 기반 응용 시스템(10)에 전달될 경우, 본 발명에 따른 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 장치는 다름과 같이 작동한다.
도 2를 참조하면, 사용자의 요청이 상기 웹 기반 응용 시스템(10; 이하, 서버 시스템이라 함)에 전달되면 해당 요청을 처리하는 객체가 필요하게 되는데, 이를 위해 서버 시스템(10)은 해당 요청을 처리하는 객체 인스턴스를 인스턴스 관리자(11; Instance Manager)에게 요구한다.
이때, 해당 객체가 인스턴스 캐쉬(12; Instance Cache)에 존재하면 이를 반환하고, 그렇지 않으면 활성자(13)에게 해당 객체를 요구한다.
상기 활성자(13; Activator)는 인스턴스 풀(14; Instance Pool)에서 객체 인스턴스를 하나 가져온 후 데이터베이스(15)에서 해당 객체에 대한 상태를 읽어 객체 인스턴스에 저장한 후 반환한다.
활성화된 객체는 상기 인스턴스 캐쉬(12) 혹은 LRU 큐(16; Least Recently Used Queue)에 저장되게 되는데 해당 객체가 트랜잭션(transaction)에 참여하면 상기 인스턴스 캐쉬(12)에 저장하고 트랜잭션에 참여하지 않으면 상기 LRU 큐(16)에 저장한다.
만약, 상기 LRU 큐(16)에 비어 있는 공간이 없으면 메모리를 체크하여 메모리의 여유 공간이 있으면 큐의 크기를 증가시키고, 메모리의 여유 공간이 부족하면 타임 아웃된 객체를 메모리에서 제거하고 타임 아웃된 객체가 없으면 가장 오랫 동안 사용되지 않은 객체를 메모리에서 제거한다.
일정 시간 동안 사용자의 요청이 도달하지 않는 객체는 타임아웃 검사기(17; Timeout checker)에 의해 상기 LRU 큐(16)에서 비활성자(18; Passivator)로 전달되며, 상기 비활성자(18)는 객체 인스턴스의 상태를 지정된 상기 데이터베이스(15)나 파일에 기록하고 해당 객체 인스턴스를 재사용을 위해 상기 인스턴스 풀(14)에 저장한다.
여기서, 상기 인스턴스 캐쉬(12)는 전에 한 번이라도 사용자의 요청을 처리한 객체를 메모리에 보관하는 기능을 수행한다.
상기 LRU 큐(16)는 인스턴스 캐쉬(12)에서 오랫동안 사용자의 요청이 전달되지 않은 객체를 보관하는 곳으로 크기가 제한되어 있다.
상기 타임아웃 검사기(17)는 상기 LRU 큐(16)에서 특정 시간 이상 사용자의 요청을 처리하지 않은 오래된 객체의 상태(객체내의 변수)를 데이터베이스(15)나 파일에 저장하고, 객체 자체는 재사용을 위해 상기 인스턴스 풀(14)에 반환한다.
상기 인스턴스 풀(14)은 일부의 객체를 미리 생성하여 보관하는 기능을 수행한다. 상기 인스턴스 풀(14)에는 상태 즉 객체 내의 변수에는 특정 값이 할당되어 있지 않은 빈(empty) 객체만 존재하게 된다.
상기 활성자(13)는 인스턴스 풀(14)에서 미리 생성된 객체 인스턴스를 가지고 오고, 데이터베이스(15)나 파일에서 사용자가 요청한 객체의 데이터를 읽어 인스턴스 풀(14)에서 가져온 객체 인스턴스에 읽어온 데이터를 저장하여 객체 인스턴스를 반환한다.
또한, 보통 사용자로부터 전달되는 요청은 트랜잭션과 연관되어 진다. 트랜잭션과 연관된 객체는 비활성자(18)를 통해 비활성화시킬 경우 해당 객체 인스턴스의 상태뿐만 아니라 트랜잭션 정보를 함께 저장해야 하며 트랜잭션 처리에 부담이 되므로 비활성화 시키지 않는다.
이런 이유로 트랜잭션과 연관되어 있는 객체는 상기 인스턴스 캐쉬(12)에 저장되고, 트랜잭션과 연관되어 있지 않는 객체 인스턴스는 LRU 큐(16)에 저장되어 비활성자에 의한 비활성화 대상이 된다.
상기 서버 시스템(10)이 인스턴스 관리자(11)에게 객체 인스턴스를 요청하는 과정을 보다 상세히 설명하면 다음과 같다.
도 3을 참조하면, 먼저 서버 시스템(10)은 객체 식별자(Object Identifier)를 상기 인스턴스 관리자(11)에게 전달하고 해당 객체 식별자에 해당하는 객체 인스턴스를 요청한다.
상기 인스턴스 관리자(11)는 인스턴스 캐쉬(12)에 해당 객체가 있는지 검사한 후(S101), 해당 객체가 존재하고(S102) 현재 트랜잭션이 존재하면(S103) 해당 객체를 반환하고, 트랜잭션이 존재하지 않으면 인스턴스 캐쉬(12)에서 해당 객체를 제거한 후(S104) 상기 LRU 큐(16)의 제일 앞에 해당 객체를 저장하고(S105), 해당 객체를 반환한다.
상기 인스턴스 캐쉬(12)에 해당 객체가 존재하지 않으면 상기 LRU 큐(16)에 해당 객체가 있는지 검사한다(S106). 상기 LRU 큐(16)에 해당 객체가 존재하면(S107) 트랜잭션이 있는지 검사하고(S108) 트랜잭션이 존재하면 객체를 상기 LRU 큐(16)에서 제거하고(S109) 인스턴스 캐쉬(12)에 삽입한 후(S110) 객체를 반환한다.
상기 LRU 큐(16)에 해당 객체가 존재하지 않으면 인스턴스 풀(14)에서 빈 객체를 가져온다(S111). 데이터베이스(15)에서 해당 객체에 대한 상태를 읽어와 인스턴스 풀(14)에서 가져온 객체에 저장한다(S112). 트랜잭션이 있는지 검사하고(S113) 트랜잭션이 있으면 인스턴스 캐쉬(12)에 객체를 삽입한다(S110).
트랜잭션이 없으면 상기 LRU 큐(16)에 여유 공간이 있는지 검사하고(S114), 여유 공간이 있으면 해당 객체를 LRU 큐(16)의 제일 앞에 삽입하고(S120) 해당 객체를 반환한다. 상기 LRU 큐(16)에 여유 공간이 없으면 메모리에 여유 공간이 있는지 검사하고(S115), 여유 공간이 있으면 LRU 큐(16)의 크기를 증가시키고(S116), 해당 객체를 LRU 큐(16)의 제일 앞에 삽입하고(S120) 해당 객체를 반환한다.
메모리에 여유 공간이 없으면 상기 타임아웃 검사기(18)를 실행하여(S117) 타임 아웃된 오래된 객체를 메모리에서 제거하고, 큐에 여유 공간이 있는지 검사한다(S118). 타임 아웃된 객체가 없으면 큐에 여유 공간이 없으며, 이때에는 큐의 맨 마지막에 있는 객체를 선택하여 상기 비활성자(18)에게 넘겨 비활성화시키고(S119), 이때 생긴 여유 공간에 해당 객체를 삽입하고(S120) 반환한다.
타임 아웃된 객체가 있으면 LRU 큐(16)에 여유 공간이 생기므로 그 공간에 해당 객체를 삽입하고(S120) 반환한다. 반환하기 전에 항상 해당 객체의 상태를 '요청중'으로 변환하고 해당 객체에 대해 현재 시간을 저장한다(S121,S122).
상기 서버 시스템(10)이 인스턴스 관리자(11)로부터 객체 인스턴스를 받은 후 해당 객체에 요청을 처리하고 난 후의 처리 과정을 보다 상세히 설명하면 다음과 같다.
도 4를 참조하면, 상기 서버 시스템(10)은 사용자에게 요청 결과를 반환하기 전, 상기 인스턴스 관리자(11)에게 받은 객체를 인스턴스 관리자(11)에게 다시 반환해야 한다.
상기 인스턴스 관리자(11)는 먼저 트랜잭션이 있는지 검사하여(S201), 트랜잭션이 있으면 객체가 인스턴스 캐쉬(12)에 존재하는지 검사한다(S202).
상기 인스턴스 캐쉬(12)에 존재하지 않으면 객체가 LRU 큐(16)에 존재하므로 LRU 큐(16)에서 제거하고(S203) 인스턴스 캐쉬(12)에 삽입한다(S204). 트랜잭션이 없으면 객체가 LRU 큐(16)에 존재하는지 검사하여(S205), LRU 큐(16)에 존재하지 않으면 객체가 인스턴스 캐쉬(12)에 존재하는 경우이므로 인스턴스 캐쉬(12)에서 제거하고(S206), LRU 큐(16)의 제일 앞에 삽입한다(S207). 마지막으로, 함수를 종료하기 전에 객체의 상태를 준비중으로 변경한다(S208).
한편, 상기 타임아웃 검사기(17)가 LRU 큐(16)에서 오래된 객체를 제거하는 과정을 보다 상세히 설명하면 다음과 같다.
도 5를 참조하면, 타임아웃 검사기(17)는 일정 시간마다 한 번 씩 검사를 수행한다.
먼저, 상기 LRU 큐(16)의 마지막에 있는 객체를 제거하여 가져오고(S301), 현재 시간에서 저장한 해당 객체의 시간(time)을 뺀 후 이것을 휴지시간(idle Time)에 저장한다(S302). 만약, 휴지시간이 서버 시스템(10)에서 정해 놓은 특정 시간, 예를 들어 5분보다 크면, 해당 객체는 5분 동안 어떠한 요청도 처리하지 않은 객체이므로 메모리에서 제거할 대상이 된다.
그래서 먼저 휴지시간이 시스템이 정한 특정 시간보다 큰지 검사하고(S303), 특정 시간보다 크면 객체의 상태가 '준비중'인지 검사한다(S304). 객체 상태가 '준비중'이 아니고 '처리중'이면 해당 객체가 사용자의 요청을 처리 중이므로 메모리에서 제거하면 안된다.
만약, 해당 객체의 상태가 '준비중'이면 비활성자(18)에 전달하여 해당 객체의 상태를 파일이나 데이터베이스(15)에 저장하여 비활성화시키고(S305), 객체 자체는 인스턴스 풀(14)에 저장하여 재사용한다(S306). 만약, 현재 시간에서 LRU 큐(16)의 마지막에서 제거한 객체의 타임을 뺀 휴지시간값이 서버 시스템(10)이 정한 특정 시간보다 적으면, 더 이상 비교할 필요 없이 함수를 종료한다.
그 이유는, 상기 LRU 큐(16)에 특정 객체를 삽입할 때는 항상 제일 앞에 삽입하게 되므로 제일 마지막에 있는 객체가 사용되지 않는 가장 오래된 객체이며, 가장 오래된 객체가 서버 시스템(10)이 정해 놓은 시간을 초과하지 않았다면 다른 객체는 비교할 필요가 없기 때문이다.
상술한 바와 같이 본 발명에 따른 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 방법은 비즈니스 객체의 상태 정보 및 데이터를 효율적으로 관리하기 위한 캐쉬 기술 및 객체 풀 관리 기술로 실현되기 때문에, 시스템이 대형화, 복잡화되더라도 시스템 내에서 사용되는 비즈니스 객체를 효율적으로 관리할 수 있을 뿐만 아니라, 기존의 기업 응용과의 연동을 통한 서비스와 새로운 환경에 맞는 서비스 등 다양한 서비스를 제공할 수 있는 장점이 있다.
이상에서 설명한 것은 본 발명에 따른 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 방법을 실시하기 위한 하나의 실시예에 불과한 것으로서, 본 발명은 상기한 실시예에 한정되지 않고, 이하의 특허청구의 범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 정신이 있다고 할 것이다.
도 1은 일반적인 웹 기반 응용 시스템을 도시한 구성도,
도 2는 본 발명에 따른 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 장치를 도시한 구성도,
도 3은 본 발명에 따른 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 방법을 도시한 흐름도,
도 4는 본 발명에 따른 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 방법을 도시한 다른 흐름도,
도 5는 객체의 타임아웃 검사를 이용하여 오래된 객체를 파일이나 데이터베이스에 저장하여 비활성화하는 방법을 도시한 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
10: 서버 시스템 11: 인스턴스 관리자
12: 인스턴스 캐쉬 13: 활성자
14: 인스턴스 풀 15: 데이터베이스(또는 파일)
16: LRU 큐 17: 타임아웃 검사기
18: 비활성자 20: 웹브라우저
30: 자바 클라이언트 40: 웹서버
50: 웹 컴포넌트

Claims (4)

  1. 서버 시스템에서 사용자의 요청을 처리하기 위해서 필요한 객체 인스턴스를 요구하면 해당 객체 인스턴스를 반환하는 인스턴스 관리자와,
    사용자의 요청을 처리하여 활성화되고 트랜잭션에 참여하는 객체를 메모리에 보관하고, 상기 인스턴스 관리자에서 요구하는 해당 객체 인스턴스를 반환하는 인스턴스 캐쉬와,
    상기 인스턴스 캐쉬에 해당 객체 인스턴스가 없을 경우, 일부의 객체를 미리 생성하여 보관하고 있는 인스턴스 풀에서 객체 인스턴스를 하나 가져와 활성화한 후 데이터베이스에서 해당 객체에 대한 상태를 읽어 객체 인스턴스에 저장한 후 반환하는 활성자와,
    상기 인스턴스 캐쉬에서 소정의 시간동안 사용자의 요청이 전달되지 않은 객체와 트랜잭션에 참여하지 않은 활성화된 객체를 보관하는 LRU 큐와,
    상기 LRU 큐에서 특정 시간 이상 사용자의 요청을 처리하지 않은 객체의 상태를 데이터베이스나 파일에 저장하고, 객체 자체는 재사용을 위해 상기 인스턴스 풀에 반환하는 타임아웃 검사기, 및
    상기 타임아웃 검사기에 의해 LRU 큐로부터 일정 시간 동안 사용자의 요청이 도달하지 않는 객체가 전달되면 객체 인스턴스의 상태를 지정된 데이터베이스나 파일에 기록하고 해당 객체 인스턴스를 재사용을 위해 상기 인스턴스 풀에 저장하는 비활성자
    로 구성되는 것을 특징으로 하는 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 장치.
  2. 서버 시스템이 객체 인스턴스를 요청하면 인스턴스 관리자가 인스턴스 캐쉬에 해당 객체가 있는지 검사하는 단계와,
    상기 인스턴스 캐쉬에 해당 객체가 존재할 경우 현재 트랜잭션의 존재 유무에 따라서 해당 객체를 반환하거나, 인스턴스 캐쉬에서 해당 객체를 제거한 후 LRU 큐의 제일 앞에 해당 객체를 저장하고 해당 객체를 반환하는 단계와,
    상기 인스턴스 캐쉬에 해당 객체가 존재하지 않으면 상기 LRU 큐에 해당 객체가 있는지 검사하는 단계와,
    상기 LRU 큐에 해당 객체가 존재 유무와 트랜잭션의 존재 유무에 따라서 객체를 상기 LRU 큐에서 제거하고 상기 인스턴스 캐쉬에 삽입한 후 객체를 반환하거나, 인스턴스 풀에서 빈 객체를 가져오고 데이터베이스에서 해당 객체에 대한 상태를 읽어와 인스턴스 풀에서 가져온 객체에 저장하는 단계와,
    상기 인스턴스 풀에서 가져온 객체의 트랜잭션 존재 유무에 따라서 인스턴스 캐쉬에 객체를 삽입하고, 상기 LRU 큐에 여유 공간이 있는지 검사하는 단계와,
    상기 LRU 큐에 여유 공간이 있으면 해당 객체를 LRU 큐의 제일 앞에 삽입하고 해당 객체를 반환하고, 여유 공간이 없으면 메모리의 여유 공간을 검사하는 단계와,
    메모리의 여유 공간이 있으면 LRU 큐의 크기를 증가시키고, 해당 객체를 LRU 큐의 제일 앞에 삽입하고 해당 객체를 반환하는 단계와,
    메모리에 여유 공간이 없으면 타임아웃 검사기를 실행하여 타임 아웃된 객체를 메모리에서 제거하고 큐에 여유 공간이 있는지 검사하여, 큐에 여유 공간이 없으면 큐의 맨 마지막에 있는 객체를 선택하여 비활성자에게 넘겨 비활성화시키고, 이때 생긴 여유 공간에 해당 객체를 삽입하고 반환하는 단계, 및
    타임 아웃된 객체가 있으면 LRU 큐의 여유 공간에 해당 객체를 삽입하고 반환하고, 반환하기 전에 항상 해당 객체의 상태를 '요청중'으로 변환하고 해당 객체에 대해 현재 시간을 저장하는 단계
    로 이루어지는 것을 특징으로 하는 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 방법.
  3. 서버 시스템이 인스턴스 관리자로부터 객체 인스턴스를 받은 후 사용자에게 요청 결과를 반환하기 전, 상기 인스턴스 관리자에게 받은 객체를 인스턴스 관리자에게 다시 반환하면, 상기 인스턴스 관리자가 먼저 트랜잭션이 있는지 검사하는 단계와,
    트랜잭션이 있으면 객체가 인스턴스 캐쉬에 존재하는지 검사하는 단계와,
    상기 인스턴스 캐쉬에 객체가 존재하지 않으면 LRU 큐에 존재하는 객체를 제거하고 인스턴스 캐쉬에 삽입하는 단계와,
    트랜잭션이 없으면 객체가 LRU 큐에 존재하는지 검사하는 단계와,
    상기 LRU 큐에 객체가 존재하지 않으면 인스턴스 캐쉬에 존재하는 객체를 제거하고 LRU 큐의 제일 앞에 삽입하는 단계, 및
    상기 인스턴스 캐쉬 또는 LRU 큐에 객체가 존재하면 객체의 상태를 '준비중'으로 변경하는 단계
    로 이루어지는 것을 특징으로 하는 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 방법.
  4. 제 2 항에 있어서, 상기 타임아웃 검사기가 LRU 큐에서 객체를 제거하는 단계는,
    상기 LRU 큐의 마지막에 있는 객체를 제거하여 가져오는 단계와,
    현재 시간에서 저장한 해당 객체의 시간을 뺀 값을 휴지시간으로 저장하는 단계와,
    상기 휴지시간이 서버 시스템에서 정해 놓은 특정 시간보다 크면 객체의 상태가 '준비중'인지 검사하는 단계, 및
    상기 객체 상태가 '준비중'이면 상기 비활성자에 전달하여 해당 객체의 상태를 파일이나 데이터베이스에 저장하여 비활성화시키고, 객체 자체는 인스턴스 풀에 저장하여 재사용하는 단계
    로 이루어지는 것을 특징으로 하는 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리 방법.
KR10-2001-0085776A 2001-12-27 2001-12-27 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리장치 및 그 방법 KR100487739B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0085776A KR100487739B1 (ko) 2001-12-27 2001-12-27 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0085776A KR100487739B1 (ko) 2001-12-27 2001-12-27 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20030055714A KR20030055714A (ko) 2003-07-04
KR100487739B1 true KR100487739B1 (ko) 2005-05-06

Family

ID=32213972

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0085776A KR100487739B1 (ko) 2001-12-27 2001-12-27 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR100487739B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100596399B1 (ko) * 2003-12-18 2006-07-03 한국전자통신연구원 개방형 네트워크에서 정적 서비스 조합 방법 및 그 시스템
CN112181663A (zh) * 2020-10-15 2021-01-05 新华三大数据技术有限公司 一种内存调度方法、装置及计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02187840A (ja) * 1989-01-13 1990-07-24 Nec Corp キャッシュメモリ制御方式
US5897634A (en) * 1997-05-09 1999-04-27 International Business Machines Corporation Optimized caching of SQL data in an object server system
KR20010020250A (ko) * 1997-05-08 2001-03-15 코야마 리오 객체 지향의 프로그래밍 언어를 위한 하드웨어 가속기
US6286080B1 (en) * 1999-02-16 2001-09-04 International Business Machines Corporation Advanced read cache emulation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02187840A (ja) * 1989-01-13 1990-07-24 Nec Corp キャッシュメモリ制御方式
KR20010020250A (ko) * 1997-05-08 2001-03-15 코야마 리오 객체 지향의 프로그래밍 언어를 위한 하드웨어 가속기
US5897634A (en) * 1997-05-09 1999-04-27 International Business Machines Corporation Optimized caching of SQL data in an object server system
US6286080B1 (en) * 1999-02-16 2001-09-04 International Business Machines Corporation Advanced read cache emulation

Also Published As

Publication number Publication date
KR20030055714A (ko) 2003-07-04

Similar Documents

Publication Publication Date Title
US6460071B1 (en) System and method for managing client application state in a stateless web browser environment
US8112434B2 (en) Performance of an enterprise service bus by decomposing a query result from the service registry
US9223867B2 (en) Methods and systems for data processing
US5894554A (en) System for managing dynamic web page generation requests by intercepting request at web server and routing to page server thereby releasing web server to process other requests
US5721825A (en) System and method for global event notification and delivery in a distributed computing environment
US7634570B2 (en) Managing state information across communication sessions between a client and a server via a stateless protocol
US6339771B1 (en) Method and system for managing connections to a database management system
US8489693B2 (en) System and method for context-based serialization of messages in a parallel execution environment
EP2038746B1 (en) Methods, apparatus and computer programs for managing persistence
CN107659605A (zh) 一种票据交易的流程实现方法及相关系统
US6651140B1 (en) Caching pattern and method for caching in an object-oriented programming environment
US20060109857A1 (en) System, method and computer program product for dynamically changing message priority or message sequence number in a message queuing system based on processing conditions
US20020083210A1 (en) Message parsing in message processing systems
WO2002013010A2 (en) Method, system, and program for invoking stored procedures and accessing stored procedure data
US7865913B2 (en) Systems and methods for collaboration between computers
CN107315972A (zh) 一种大数据非结构化文件动态脱敏方法及系统
US20030110232A1 (en) Distributing messages between local queues representative of a common shared queue
US6178457B1 (en) Method and system for controlling and tracking client access to server software
US7409379B1 (en) Application cache management
CN112189199A (zh) 隐私保护数据收集和分析
CN101147131A (zh) 用于增强远程调用性能的多级高速缓存器装置和方法
KR100487739B1 (ko) 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리장치 및 그 방법
US8234412B2 (en) Method and system for transmitting compacted text data
US6920489B1 (en) Server storing processing result of first request and returning stored processing result in response to identical requests
CN106776076A (zh) 一种实现MongoDB事务管理的方法及系统

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: 20120330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20130325

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee