KR100579015B1 - 유상태 프로그램 엔터티의 작업량 관리 - Google Patents

유상태 프로그램 엔터티의 작업량 관리 Download PDF

Info

Publication number
KR100579015B1
KR100579015B1 KR1020037012000A KR20037012000A KR100579015B1 KR 100579015 B1 KR100579015 B1 KR 100579015B1 KR 1020037012000 A KR1020037012000 A KR 1020037012000A KR 20037012000 A KR20037012000 A KR 20037012000A KR 100579015 B1 KR100579015 B1 KR 100579015B1
Authority
KR
South Korea
Prior art keywords
instance
program entity
server
bean
work
Prior art date
Application number
KR1020037012000A
Other languages
English (en)
Other versions
KR20030088459A (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20030088459A publication Critical patent/KR20030088459A/ko
Application granted granted Critical
Publication of KR100579015B1 publication Critical patent/KR100579015B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5016Session

Abstract

각 서버 프로세스가 "엔터프라이즈 자바 빈(Enterprise JavaBeanTM)"에서 명시된 유상태 세션 빈(stateful session bean) 등과 같은 주어진 일 프로그램 엔터티를 지원할 수 있는 복수의 서버 프로세스들을 포함하는 작업량 관리 시스템에서, 유상태 세션 빈은 작업단위가 종결될 때 빈 저장고(bean store)에 기록됨으로써 불활성화된다(passivated). 다음 사용에서, 상기 세션 빈은 빈 저장고로부터 판독됨으로써 복수의 서버들 중 임의의 하나에서 재활성화되고(reactivated) 그럼으로써 유상태 세션 빈들의 작업량을 관리할 수 있게 한다. 경로지정표(routing table)는 비휘발성 대용량 저장 장치에 유지되고, 작업단위 및 유상태 세션 빈 인스턴스들에 대한 위치 정보를 보유하는데, 이 정보는 작업단위의 수명 동안 작업단위-서버 친화성(unit of work-server affinity)을 유지하기 위하여 사용된다. 유상태 세션 빈 인스턴스들은 경로지정표가 그 빈 인스턴스에 대한 위치정보를 보유하고 있는 것을 지시하기 위하여 사용되는 플래그를 포함하는 ID 키들과 연관된다.
작업량관리, 프로세스, 세션 빈, 활성화, 불활성화

Description

유상태 프로그램 엔터티의 작업량 관리{WORKLOAD MANAGEMENT OF STATEFULL PROGRAM ENTITIES}
본 발명은 휘발성 메모리에 상태를 유지하는 프로그램 엔터티(entity)의 작업량 관리에 관한 것이고 특히 "엔터프라이즈 자바 빈(Enterprise JavaBeanTM)" 구조의 유상태 세션 빈(stateful session bean)들과 같은 객체들의 재배치에 관한 것이다.
최근 클라이언트-서버 엔터프라이즈 시스템에서의 작업량 관리는 일반화되었다. 작업량이 관리되고 있는 시스템에서 서버 프로세스들은 그룹 내의 각 서버 프로세스가 비슷한 용량을 갖도록 그룹(작업그룹)지워진다. 이는 작업그룹 내의 모든 서버 프로세스가 클라이언트를 대신하여 주어진 요구(또는 메시지)를 처리할 수 있도록 해준다. 클라이언트가 작업그룹에 요구를 보내면, 작업량 관리 장치는 작업 그룹 내의 어느 서버 프로세스에 요구를 할당할지를 결정한다. 이는 보통 사용자에 의하여 정의되는 정책에 기초하는데, 예를 들어, 가장 덜 바쁜 프로세스를 고른다든가 "라운드-로빈(round-robin)" 방식 같은 것이 될 수 있다. 이는 바람직한 경우 서버 프로세스 자원들의 효율적인 사용 및 하나의 서버 프로세스가 많은 클라이언트들의 요구들을 동시에 처리하는 데에서 생기는 병목현상 때문에 클라이언트들이 제대로 응답을 받지 못하는 일의 방지를 보장한다.
도 1은 전형적인 작업량 관리 시스템을 보여준다. 시스템은 네트워크(11)를 통하여 작업량 관리 장치(12)와 통신하는 많은 클라이언트(10)를 포함한다. 작업량 관리 장치(12)는 두개의 서버 프로세스들로 구성되는 작업그룹에 네트워크(11)를 통하여 일을 분배하는데, 각 서버 프로세스들은 서버(13, 14)에서 실행된다. 클라이언트가 요구를 보내면 작업량 관리 장치는 요구를 받아 그것을 할당할 서버 프로세스를 선택한다. 작업량 관리 장치는 작업그룹을 구성하는 하나 이상의 서버 프로세스들의 일부일 수도 있다.
이상적으로는 이러한 시스템들에서 작업량 관리 장치는 수신된 각 클라이언트 요구에 대하여, 선택된 정책에 기초하여 서버 프로세스를 자유롭게 고를 수 있는데, 이는 그렇게 하는 것이 작업을 더 잘 분배할 수 있기 때문이다. 그러나 이것이 언제나 가능한 것은 아니다. 예를 들어, 한 요구에서 클라이언트가 주어진 서버 프로세스에서 객체 인스턴스를 생성하고, 이어지는 요구들에서 이 인스턴스에 포함된 데이터에 액세스하려 할 수 있다. 클라이언트가 제대로 동작하려면, 작업량 분배 장치는 클라이언트가 올바른 객체 인스턴스에 액세스할 수 있도록 보장해야 한다. 이는 클라이언트가 다음 번에 객체 인스턴스에 액세스를 요구할 때에 그 인스턴스가 생성되었던 서버 프로세스에 돌아갈 수 있도록 보장하는 클라이언트-서버 친화성(client-server affinity)과 같은 어떤 요소를 클라이언트의 수명 동안 유지시킴으로서 가능할 수도 있을 것이고, 객체 인스턴스가 요구들 사이에서 상태를 잃어버리지 않고 서버 프로세스들 사이를 이동할 수 있도록 함으로서 가능할 수 도 있을 것이다. 만일 유일하게 선택할 수 있는 방법이 클라이언트-서버 친화성이라면, 일부의 클라이언트 요구들에 대해서만 작업량 관리를 할 수 있고, 클라이언트-서버 친화성이 결정될 때에 클라이언트가 서버 프로세스에 부과할 부담을 예측하는 것이 비록 불가능하진 않더라도 어렵기 때문에, 작업량 분배에 불리한 영향을 받는다.
그러므로 객체들이 요구들 사이에서 서버 프로세스들을 이동할 수 있게끔 하는 것이 바람직하다. 상태 데이터를 데이터베이스(또는 파일) 내에 유지하는 객체들에 있어서는, 객체 인스턴스가 작업그룹 내의 임의의 서버 프로세스로부터도 데이터베이스 또는 파일에 액세스할 수 있으므로 이동이 매우 수월하다. 그 결과, 객체 인스턴스는 임의의 서버 프로세스로 이동할 수 있다. 다만, 트랜잭션(transaction) 동안에 만들어지는 데이터베이스의 변화는 트랜잭션이 커밋(commit)할 때에만 데이터베이스에서 안정되므로, 객체가 트랜잭션에 참여하고 있는 동안에는 객체는 트랜잭션이 종결될 때까지는 이동할 수 없다. 그러나, 객체 인스턴스가 상태 데이터를 휘발성 메모리에 보유하고 있으면, 이는 쉽게 서버 프로세스들간을 이동할 수 없다. 이는 보통 휘발성 메모리는 그것을 할당한 서버 프로세스만이 정상적으로 액세스할 수 있기 때문이다. 그 결과, 만일 클라이언트가 이러한 유형의 객체를 사용한다면, 클라이언트-서버 친화성을 사용할 수 밖에 없고 작업량 관리는 앞에서 설명한 한계를 갖게 된다.
이는 이러한 작업량 관리 클라이언트-서버 엔터프라이즈 시스템들에 채용되는 특정한 프로그래밍 모델을 살펴봄으로써 설명될 수 있다. 좋은 일 예는 산업 규격인 "엔터프라이즈 자바 빈(Enterprise JavaBeansTM; EJBTM)" 프로그래밍 모델이다. 이 모델은 "Sun Microsystems, Inc."으로부터 구할 수 있고 본 명세서에 참조문헌으로 포함되어 있는 "엔터프라이즈 자바 빈 버전 1.1(Enterprise JavaBeans v1.1)" 사양에 완전히 정의되어 있다. 본 발명을 명확히 하기 위하여 이제 이 사양의 몇 가지 특징들이 설명된다.
엔터프라이즈 자바 빈 버전 1.1 사양은 서버 프로세스들에서 실행되는 "EJB"들(객체들)의 기능에 따른 분류를 설명한다. 두 분류는 세션 빈(session bean) 및 엔터티 빈(entity bean)이다. 세션 빈들은 대개 한 클라이언트를 대신하여 실행되고; 데이터베이스에 액세스하지만 데이터베이스를 나타내지는 않고; 단기수명이고; 복구될 수 없다. 엔터티 빈들은 대개 다수의 클라이언트들에 액세스할 수 있고; 데이터베이스를 나타내고; 장기수명이 가능하고; 복구될 수 있다. 세션 빈들은 다시 무상태(stateless)와 유상태(stateful)로 분류된다. 무상태 세션 빈 인스턴스는 대화형 상태(conversational state)를 포함하지 않으므로 클라이언트가 세션 빈의 임의의 인스턴스를 이용할 수 있다. 그러나, 유상태 빈 인스턴스는 클라이언트가 반복적인 액세스를 요구하는 대화형 상태를 포함할 수 있다. 그 결과, 클라이언트는 언제나 요구된 상태에 있는 유상태 세션 빈 인스턴스에 액세스해야 한다. 이 상태는 적어도 부분적으로는 휘발성 메모리에 보유되어 있기 때문에 이는 대개 클라이언트가 언제나 동일한 유상태 세션 빈 인스턴스에 액세스할 것을 요구한다.
"EJB" 컨테이너들은 서버 프로세스 내에서 "EJB"들을 위한 실행 환경을 제공한다. 엔터프라이즈 자바 빈 버전 1.1 사양은 클라이언트들과 컨테이너들간 및 "EJB"와 그것의 컨테이너간의 계약을 명시한다. 클라이언트와 컨테이너 사이의 계약의 일부는 "EJB"가 새 "EJB" 인스턴스를 생성하고, 존재하는 "EJB" 인스턴스들을 위치시키기 위하여 갈 수 있는 홈을 제공하는 것이다. "EJB"와 그것의 컨테이너 사이의 계약의 일부는 컨테이너가 빈 인스턴스에게 컨테이너 서비스들에 대한 액세스를 제공하고 빈 인스턴스에게 통지를 발행할 수 있도록 하기 위하여 "EJB"가 구현해야할 메소드들을 명시한다. 이 메소드들은 빈 유형에 따라 다양하다. 예를 들어, 유상태 세션 빈이 구현해야 하는 두 가지 메소드들은 ejbActivate()와 ejbPassivate()이다. ejbPassivate()는 컨테이너가 빈 인스턴스를 직렬화하고 디스크에 기록함으로서 불활성화하고자 할 때에 빈 인스턴스에 대하여 호출한다. 이는 여러 가지 이유에 의해서 행해지는데, 빈 인스턴스화 된 서버 프로세스가 메모리를 별로 차지하지 않고 있거나 빈 인스턴스에 일정 기간동안 액세스가 없다거나 하는 등의 이유이다. 그러나, 세션 빈들은 트랜잭션을 의식할 수 있으므로, 컨테이너는 빈 인스턴스가 트랜잭션에 참여하고 있을 때에는 그것을 불활성화할 수 없다. ejbPassivate() 메소드에서 빈 인스턴스는 적어도 부분적으로는 메모리에 보유되어 있는 대화형 상태가 불활성화된 후에도 보존되는 것을 보장해야 하고, 따라서 예를 들어, 열었던 "JDBCTM" 연결을 닫아야 한다. 일단 빈 인스턴스가 불활성화되었으면 그것은 디스크로부터 직렬화된 형태를 판독하고, 역-직렬화하고, 그리고 나서 ejbActivate() 메소드를 호출함으로서 재활성화될 수 있다. 그 결과, ejbActivate() 메소드에서, 예를 들어, 빈 인스턴스는 불활성화되는 동안에 닫혀졌던 "JDBC" 연결을 다시 열 수 있다.
도 2는 설명된 "EJB" 프로그래밍 모델을 도시한 것이다. "EJB" 컨테이너(201)를 제공하는 "EJB" 서버 프로세스(20)가 나타난다. 구현된 각 "EJB"에 대하여 클라이언트(10)가 그 "EJB" 인스턴스(203)를 생성하는 데에 사용할 수 있는 "EJB" 홈(202)이 제공된다. "EJB 서버 프로세스"(20)는 많은 "EJB" 구현들을 위하여 홈들을 제공할 수 있다. "EJB" 홈(202)은 "EJB" 컨테이너(201)에 의하여 제공되는 환경에서 실행되고 일단 인스턴스가 생성되었으면, 클라이언트(10)는 그것에 요구를 보낼 수 있다. 임의의 시점에 같은 또는 다른 클라이언트들에 의하여 생성된 많은 인스턴스들(204, 205)이 있을 수 있다.
도 3a와 3b는 유상태 세션 빈 불활성화 및 재활성화를 도시한 것이다. 도 3a는 휘발성 메모리에 빈들의 계수기를 유지하는 "BeanCounter"라는 이름의 유상태 세션 인스턴스의 불활성화를 보여준다. 불활성화되는 동안 "BeanCounter" 인스턴스(302)는 "EJB" 서버(20)내의 휘발성 메모리로부터 제거되고 디스크 상의 "빈 저장고(bean store)"(303)에 직렬화된 형태(serialized form)(304)로 기록된다. 직렬화된 형태는 "BeanCounter" 인스턴스(302)의 대화형 상태(beans=5)를 포함한다. "BeanCounter" 인스턴스(302)는 휘발성 메모리로부터 제거되었음을 가리키기 위해 점선으로 그려지고 불활성화된 후에는 직렬화된 형태(304)로 디스크 상에만 존재한다. 도 3b는 불활성화의 역인 재활성화를 보여준다. 빈 인스턴스의 직렬화된 형태(304)는 디스크로부터 읽혀져 "BeanCounter" 인스턴스(302)로 재활성화된다. 재활성화된 후에 인스턴스는 휘발성 메모리에 존재하게 되고, 불활성화되기 전에 포 함했던 대화형 상태(beans=5)를 포함한다. 빈 인스턴스의 직렬화된 형태(304)는 이러한 프로세스 후에 디스크 상에 존재할 수도 있고 존재하지 않을 수도 있다.
"EJB" 프로그래밍 모델을 사용하는 작업량 관리 시스템에서, 작업량 관리 장치는 클라이언트가 전에 액세스했던 "EJB"들의 유형에 민감하다는 것을 볼 수 있다. 예를 들어, 클라이언트가 무상태 세션 빈 인스턴스들에만 액세스한다면, 클라이언트로부터의 임의의 요구는 선택된 할당 정책에 따라 작업량 관리 장치에 의하여 작업그룹 내의 임의의 서버 프로세스에 할당될 수 있다. 이는 이러한 빈들은 대화형 상태를 포함하지 않기 때문이다. 만일 클라이언트가 엔터티 빈 인스턴스들에 액세스한다면 그들은 서버 프로세스를 이동할 수 있으나 이는 트랜잭션들 사이에만 가능한데, 이는 엔터티 빈들은 데이터베이스에 상태를 보유하기 때문이다. 그러나, 만일 클라이언트가 유상태 세션 빈 인스턴스를 생성하고 액세스한다면, 인스턴스는 휘발성 메모리에 대화형 상태를 보유할 수 있기 때문에, 클라이언트는 그 수명 중에는 빈이 생성된 서버 프로세스와 친화성을 가질 것이고, 클라이언트로부터 빈 인스턴스로 향하는 모든 후속 요구들은 같은 서버 프로세스에 주어질 것이다. 만일 빈이 요구들 사이에서 불활성화된다면, 빈은 불활성화된 후의 제1 요구가 수신될 때 서버 프로세스 내에서 재활성화된다.
"EJB" 프로그래밍 모델을 사용하는 작업량 관리 시스템을 제공하는 제품의 한 예는 "BEA Systems, Inc."의 제품 "BEA Weblogic ServerTM 6.0"이다. 이 제품은 작업그룹을 서버 클러스터라고 부른다. 작업량 관리는 두 가지 형태로 제공된다. "EJB" 홈 객체들은 클러스터 내의 모든 서버 프로세스들 상의 모든 "EJB" 홈 객체들을 알고 있는 클러스터-인식 홈 정합을 갖고 있다. 이 정합은 클라이언트의 요구가 "EJB" 인스턴스들을 생성하고 찾는 데에 있어 작업량의 균형을 제공한다. "EJB"들은 클러스터의 서버 프로세스들 상에 상주하는 모든 "EJB"의 복사본을 알고 있는 복사-인식 "EJB" 객체 정합을 갖고 있다. "EJB" 객체 정합은 "EJB" 메소드 호출에 있어서 작업량의 균형과 장애극복 서비스들을 제공한다. 무상태 세션 빈들은 복사-인식이고 클러스터-인식 홈들을 가질 수 있어서 무상태 세션 빈 인스턴스들을 생성하고 액세스하는 모든 요구들을 작업량 관리할 수 있다. 그러나, 유상태 세션 빈들은 클러스터-인식 홈들을 가질 수 있을 뿐이므로 유상태 세션 빈 인스턴스들을 생성하는 호출들만을 작업량 관리할 수 있다. 한 유상태 세션 빈 인스턴스에 대한 모든 요구들은 대개 같은 서버 프로세스에게 주어진다. 이에 대한 한 예외는 유상태 세션 빈 인스턴스들의 메모리 내 복사를 이용하여 제공된다. 메모리 내 복사에서는 빈 인스턴스가 실행되는 주 서버 프로세스 인스턴스 및 빈의 상태를 복사하는 데에 사용되는 부 서버 프로세스 인스턴스를 유지하는 축소된 복사-인식 객체 정합이 유상태 세션 빈에게 주어진다. 지금 만일 클라이언트가 트랜잭션의 범위 내에서 빈 인스턴스의 상태를 변경하면, 트랜잭션의 수행이 종결되었을 때 빈 인스턴스의 상태는 부 서버 프로세스에서 휘발성 메모리에 복사된다. 빈 인스턴스의 주 서버 프로세스가 실패(fail)하면, 클라이언트 요구는 부 서버 프로세스로 재 경로 지정되며, 이는 주 서버 프로세스가 되고, 클러스터로부터 새로운 부 서버 프로세스가 할당된다. 이러한 환경에서는 클라이언트는 최종적으로 수행이 완료된 상태의 빈에 액세스하게 된다. 이는 작업량 관리보다는 유상태 세션 빈들에 대한 장애극복 지원을 제공하고, 서버가 빈 인스턴스의 메모리 내 복사본의 제거를 조정할 것을 요구한다. 만일 유상태 세션 "EJB" 인스턴스가 불완전한 트랜잭션에 의하여 변경되었으면, 주 서버가 실패할 때, "EJB" 인스턴스에 대한 다음 요구는 실패하지는 않을 것이지만 수행이 종결되지 않은 변화는 잃어버릴 것이다. 그 결과 클라이언트는 유상태 세션 빈 인스턴스가 수행이 종결되지 않은 갱신들을 잃어버렸는지 확인할 수 없다.
"EJB"의 작업량 관리의 또 다른 방법이 "An Infrastructure for the Dynamic Distribution of Web Applications and Services(Duvos 및 Bestavros 공저, 2000년 12월 15일, 보스턴 대학 기술 보고서 BUCS-RE-2000-027)"에 개시되어 있다. 상기 방법에서 수행 서비스(performance service)는 서버간의 빈들의 이동을 분석 및 지시하고, 빈을 이동시킬 때 상기 빈이 존재하는 서버의 (송신자) 모니터 빈이 상기 빈이 이동하는 새로운 서버의 (수신자) 모니터 빈에게 메시지를 송신하도록 명령하며, 상기 메시지는 패키징된 형태의 빈을 포함한다.
그러므로 휘발성 메모리에 상태 데이터를 보유하는 프로그램 엔터티를 위한 작업량 관리를 제공할 필요가 있다.
제1 실시예로서 본 발명은 비휘발성 메모리 저장 장치 및 서버 프로세스를 실행할 수 있는 적어도 하나의 서버를 구비하고 데이터 처리 시스템에서 프로그램 엔터티의 데이터를 처리하는 방법을 제공하고, 상기 데이터 처리 시스템은 제1 서버 프로세스의 일부로서, 프로그램 엔터티의 인스턴스를 상기 저장 장치 상의 프로그램 엔터티 저장고에 기록하고 상기 서버 프로세스로부터 그것을 제거함으로써 상기 프로그램 엔터티의 인스턴스를 불활성화하는 단계; 및 제2 서버 프로세스의 일부로서, 상기 프로그램 엔터티의 상기 인스턴스에 접속하기 위한 요구를 처리하는 단계 - 상기 처리하는 단계는 상기 프로그램 엔터티 저장고로부터 프로그램 엔터티의 인스턴스를 판독하고 그것을 상기 서버 프로세스 내에 재생성함으로써 상기 프로그램 엔터티의 상기 인스턴스를 재활성화하는 단계를 포함함 - ; 및 작업량 분배 알고리즘에 따라 상기 요구가 처리되는 서버 프로세스를 선택하는 단계를 포함한다.
제2 실시예로서 본 발명은 전술된 데이터 처리 방법을 실행하는 컴퓨터 프로그램 제품을 제공한다.
제3 실시예로서 데이터 처리 시스템을 제공하며, 상기 데이터 처리 시스템은 적어도 하나의 서버; 상기 적어도 하나의 서버에서 실행될 수 있으며, 각각 하나의 프로그램 엔터티를 지원하는 복수의 서버 프로세스들; 및 각 서버 프로세스에 액세스할 수 있는 비휘발성 메모리 저장 장치를 포함한다. 상기 각 서버 프로세스는 프로그램 엔터티의 인스턴스를 상기 저장 장치 상의 프로그램 엔터티 저장고에 기록함으로써 프로그램 엔터티의 인스턴스를 불활성화하는 수단; 및 상기 프로그램 엔터티의 상기 인스턴스에 액세스하기 위한 요구를 처리하는 수단 - 상기 처리하는 수단은 상기 프로그램 엔터티 저장고로부터 프로그램 엔터티의 인스턴스를 판독하고 그것을 프로그램 엔터티의 인스턴스를 재생성하기 위하여 사용함으로써 상기 프로그램 엔터티의 상기 인스턴스를 재활성화하는 수단을 포함함 -; 및 작업량 분배 알고리즘에 따라 상기 요구를 처리하는 서버 프로세스를 선택하는 수단을 포함한다.
따라서 본 발명은 상태 데이터를 휘발성 메모리에 보유하는 프로그램 엔터티 들의 인스턴스들이 한 서버 프로세스에서 불활성화되고 다른 서버 프로세스에서 재활성화됨으로서 서버 프로세스들을 이동할 수 있도록 해준다. 그 결과, 만일 프로그램 엔터티가 요구들 사이에서 서버 프로세스들을 이동하고, 이동할 프로세스가 작업량 관리 장치에 의하여 선택된다면, 프로그램 엔터티 인스턴스에 액세스하는 요구들의 작업량을 관리할 수 있다. 불활성화하는 단계는 프로그램 엔터티 인스턴스의 직렬화된 형태를 디스크에 쓰고 재활성화하는 단계는 프로그램 엔터티 인스턴스를 재생성할 때에 직렬화된 형태를 역-직렬화하기 때문에 프로그램 엔터티의 상태 데이터는 유지된다.
바람직하게는 작업량 관리가 제공되는 프로그램 엔터티는 엔터프라이즈 자바 빈 사양에서의 유상태 세션 빈의 인스턴스이다. 그 결과, 불활성화와 재활성화는 엔터프라이즈 자바 빈에 대하여 설명된 것처럼 ejbPassivate()와 ejbActivate() 메소드를 수반한다. 프로그램 엔터티는 예를 들어, 자바 빈이나 C++ 객체 중 하나일 수도 있다.
바람직하게는 본 발명은 프로그램 엔터티 인스턴스를 수반하는 작업단위들을 위한 작업량 관리를 추가적으로 제공한다. 작업단위는 하나 이상의 요구 등과 같은 사건들을 일 단위로 하여 범위를 정한다. 바람직하게는 작업단위는 "CORBA Object Transaction Service" 트랜잭션이다. 대신 작업단위는 예를 들어, 다른 유형의 트랜잭션, 세션, 비즈니스 메소드, "IBM" CISC 작업단위, 또는 클라이언트 요구일 수 있다. 다른 유형의 트랜잭션의 예는 "Java Transaction API" 트랜잭션이다. 이는 선택된 작업단위의 도중이 아니라, 작업단위가 완료되었을 때에 프로그램 엔터티를 불활성화함으로서 달성된다.
바람직하게는 본 발명은 트랜잭션과 같은 일 작업단위 하에서 액세스되는 프로그램 엔터티 인스턴스는 그 작업단위가 종결될 때까지는 그 작업단위의 범위 밖에서 다시 액세스될 수 없음을 클라이언트에게 보장한다. 그 결과, 만일 예를 들어, 작업단위가 실행되고 있던 서버 프로세스가 실패하여 그로 인해 작업단위가 종결되지 못하면, 프로그램 엔터티 인스턴스는 더 이상 존재하지 않는다. 이는 재활성화 중 프로그램 엔터티 저장고로부터 프로그램 엔터티 인스턴스가 제거되는 것을 보장함으로서 달성된다.
바람직하게는 프로그램 엔터티 인스턴스의 위치를 지정하는 데에 사용될 수 있는 정보를 포함하는 경로지정표가 제공된다. 프로그램 엔터티 인스턴스는 프로그램 엔터티에 대한 지원을 제공하는 복수의 서버 프로세스들 중 어느 하나에 활성화되어 있을 수도 있고, 다른 때에는 빈 저장고에 불활성되어 있을 수도 있다. 경로지정표는 프로그램 엔터티 인스턴스에 액세스하기 위한 요구를 받았을 때 그 요구를 프로그램 엔터티가 현재 활성화되어 있는 서버 프로세스에게 전송하거나 만일 프로그램 엔터티가 현재 불활성화되어 있으면 임의의 서버 프로세스에게 전송하기 위하여 사용될 수 있다. 경로지정표 내에 프로그램 엔터티와 관련된 엔트리가 없다는 것에 의하여 그 프로그램 엔터티가 프로그램 엔터티 저장고에 있다는 것이 지시될 수 있다.
바람직하게는 경로지정표에 대한 액세스가 감소된다. 만일 프로그램 엔터티 인스턴스와 연관되고 프로그램 엔터티를 요구의 목표로서 식별하기 의하여 사용되는 키(key)가, 경로지정표 내에 프로그램 엔터티 인스턴스를 위한 위치 정보가 존 재함을 지시하는 플래그를 포함한다면, 이를 달성할 수 있다. 이 플래그는 들어오는 요구를 받았을 때에 빈 인스턴스의 위치를 찾기 위하여 경로지정표를 검색할지를 결정하는 데에 사용될 수 있다. 예를 들어, 한 유상태 세션 빈 인스턴스와 연관된 키는 그 빈 인스턴스가 불완전한 빈 관리 트랜잭션에 연루되어 있다는 것을 지시하는 플래그를 포함할 수 있다. 이 경우, 경로지정표는 빈 인스턴스를 위한 위치 정보를 포함할 것이므로, 빈 인스턴스에 대한 요구를 받았을 때 빈 인스턴스 키의 빈 관리 플래그가 세트된 경우에만 경로지정표를 조사하면 된다.
본 발명의 바람직한 구현은 다음 도면들을 참조하여 설명된다.
도 1은 본 발명의 바람직한 구현이 유리하게 적용될 수 있는 데이터 처리 환경의 블록도.
도 2는 본 발명에 관련되고 본 발명이 유리하게 적용될 수 있는 엔터프라이즈 자바 빈 특징들의 도식화.
도 3a 및 3b는 각각 엔터프라이즈 자바 빈 사양에 따르는 유상태 세션 빈의 불활성화 및 재활성화의 도식화.
도 4a 및 4b는 본 발명의 바람직한 실시예의 주요 부분들간에 관련된 흐름들의 순서도.
도 5는 본 발명의 바람직한 실시예의 도식화.
도 6은 본 발명의 바람직한 실시예에 따라 유상태 세션 빈들의 작업량 관리를 가능케 하기 위하여 디스크 상에 보유되는 정보의 유형의 도시화.
도 7은 본 발명의 실시예에 따라 수신되는 요구를 서버에 할당할 때 작업량 관리 장치에 의하여 수행되는 로직의 흐름도.
도 1은 본 발명의 바람직한 실시예가 유리하게 적용될 수 있는 데이터 처리 환경을 나타낸다. 이 도면에서, 클라이언트 데이터 처리 장치들(10)은 예를 들어, 인터넷과 같은 네트워크(11)를 통하여 작업량 관리 장치(12)에 연결된다. 클라이언트들은 작업량 관리 장치(12)에게 요구들(또는 메시지들)을 전송하는데, 상기 장치는 네트워크(11)를 통해 데이터 처리 서버들 - 서버1(13) 및 서버2(14) - 에게 요구들을 분배하며, 상기 서버들의 각각은 이러한 요구들을 처리하기 위한 하나의 서버 프로세스를 포함한다. 서버1(13) 및 서버2(14)의 서버 프로세서들은 같은 양의 요구들을 처리할 수 있으며 일 작업그룹을 구성한다. 본 실시예에서 작업그룹은 서로 다른 데이터 처리 서버들로부터의 두 개의 서버 프로세스들로 구성되지만, 다른 실시예에서는 하나의 데이터 처리 서버가 하나 이상의 서버 프로세스들을 포함할 수 있고 작업그룹은 하나 이상의 데이터 처리 서버들로부터의 둘 이상의 서버 프로세스들로 구성될 수 있다.
서버1(13)은 서버의 동작을 제어하는 프로세서(131), 유상태 세션 빈의 메모리 내 인스턴스 등의 데이터를 임시로 저장하는 RAM과 같은 휘발성 메모리(132), 불활성화된 유상태 세션 빈의 직렬화된 형태 등의 데이터를 저장하는 비휘발성 메모리(133) 및 네트워크(11)와의 인터페이스에 사용되는 네트워크 접속기(134)를 갖는다. 도시되진 않았지만, 클라이언트들(10), 작업량 관리 장치(12) 및 서버2(14) 는 서버1과 같은 구성요소들(131, 132, 133, 134)로 구성되고, 적어도 하나의 서버의 비휘발성 메모리(133)는 작업그룹 내의 다른 서버들에 액세스할 수 있어야 한다. 본 바람직한 실시예에서, 작업그룹이 2개의 서버들로 구성된다 하더라도, 다른 실시예에서는 작업그룹이 2 이상의 서버들로 구성될 수 있다는 점을 주의해야 한다. 또한 본 바람직한 실시예에서 클라이언트들(10) 및 작업량 관리 장치(12)는 작업그룹을 구성하는 서버들(13 및 14)로부터 분리되어 나타나 있으나, 다른 실시예에서는 이들 중 하나 이상도 작업그룹 내의 서버들일 수 있다. 또한 본 바람직한 실시예에서, 서버1(13)은 단일의 구성요소들(131, 132, 133, 134)로 구성되나, 다른 실시예에서는 이들 중 하나 이상이 복수일 수 있고 역으로 작업그룹 내의 하나 이상의 서버들이 이들 구성요소들을 공유할 수 있다.
본 바람직한 실시예에서, 작업그룹은 엔터프라이즈 자바 빈 프로그램 모델에 대한 지원을 제공하며 그럼으로써 유상태 세션 빈들에 대한 지원도 제공한다. 또한, 제공되는 트랜잭션 서비스는 "CORBA compilant Object Transaction Service(OTS)"이다. 또한, 주어진 일 트랜잭션 하에서의 모든 요구들은 작업그룹 내에서 동일한 서버 프로세스에 의하여 처리되도록, 작업량 관리 장치는 트랜잭션 친화성에 대한 지원을 제공한다.
도 4a 및 4b는 본 발명의 바람직한 실시예에서, 클라이언트로부터 착수된 두 개의 별개의 트랜잭션의 범위 내에서 하나의 유상태 세션 빈 인스턴스를 생성하고 액세스하는 클라이언트로부터 야기될 수 있는 흐름의 순서를 나타낸다. 그러나, 나타난 흐름들은 본 바람직한 실시예와 관련하여 실제로 발생할 수 있는 흐름들 중 흥미있는 일부분일 뿐이라는 점을 주의해야 한다. 본 예에서, 주어진 유상태 세션 빈은 클라이언트의 수명 동안 빈들을 계수하기 위하여 클라이언트에 의하여 사용되는 "BeanCounter" 빈이다. 이는 약간은 단순한 유상태 세션 빈이지만, 빈의 계수는 본 설명의 목적에 적당한, 메모리에 보유되는 대화형 상태를 갖는다. 그러나, 본 발명은 실제로는 더욱 복잡한 유상태 세션 빈 인스턴스에 똑같이 적용되며 데이터베이스에 있는 데이터에 액세스할 수도 있다는 점을 주의해야 한다.
도 4a는 클라이언트의 제1 트랜잭션의 처리를 나타낸다. 클라이언트(401)는 "트랜잭션 시작" 요구(403)를 발행하고, 작업량 관리 장치(도시되지 않음)는 상기 요구를 "EJB 서버1"(402) 내의 "트랜잭션 서비스"에게 할당하고 상기 서버 프로세스와 상기 트랜잭션 사이에 친화성을 설정한다. 상기 트랜잭션이 시작된 후 클라이언트는 "BeanCounter" 홈의 위치를 확인하고 그에게로 "생성" 요구(404)를 전송한다. 작업량 관리 장치는 트랜잭션-서버 친화성을 유지하기 위하여 상기 요구를 "EJB 서버1"(402)에게로 할당하고, "BeanCounter" 홈은 "beans=0"인 초기 상태를 가진 새로운 "BeanCounter" 인스턴스(405)를 생성한다. "생성 요구"로부터 복귀하기 전에, 일 트랜잭션 하에서 "BeanCounter" 인스턴스가 생성되었음을 알고 있는 컨테이너는 컨테이너가 소유한 동기화 객체를 상기 트랜잭션 서비스와 함께 등록하기 위하여 "동기화 등록" 요구(406)를 발행한다. 이는 트랜잭션 종결 처리 중 컨테이너가 "종결후" 요구(409)에 의하여 호출될 것을 보장한다. "BeanCounter" 인스턴스에 대한 클라이언트의 다음 번 액세스는 "증가" 요구(407)를 발행시키고 상기 요구는 빈 상태를 "beans=1"로 갱신시킨다. 또한 작업량 관리 장치는 트랜잭션-서버 친화성을 유지하기 위하여 상기 요구를 "EJB 서버1"(402)에게로 할당한다. 클라이언트는 트랜잭션을 종결하려 할 때에 "트랜잭션 서비스"에게 "커밋(commit)" 요구(408)를 발행하는데, 이는 커밋 처리 과정의 일부로서, 컨테이너에 등록된 동기화 객체에 대하여 "종결후" 요구(407)를 호출한다. 그러면 상기 객체는 "BeanCounter" 인스턴스에 대하여 ejbPassivate(410)를 호출하는데 이는 본 발명하에서 하나의 트랜잭션의 범위 내에서 액세스되는 유상태 세션 빈 인스턴스들은 그 트랜잭션이 종결될 때 불활성화되기 때문이다. 본 예에서 "BeanCounter" 인스턴스는 열려있는 JDBC 연결이 없기 때문에 ejbPassivate에서 할 일이 없으며 그 상태를 직렬화하는 것이 가능하다. ejbPassivate를 호출한 후 컨테이너는 "BeanCounter" 인스턴스를 직렬화하고, 그것을 휘발성 메모리로부터 제거하고, 그것을 "빈 저장고"에 기록한다(411). 빈 저장고는 복구할 수 없고 비휘발성 메모리 - 본 바람직한 실시예에서는 하드디스크임 - 에 보유된다. 트랜잭션이 종결되면 작업량 관리 장치는 트랜잭션과 "EJB 서버1"(402)간의 친화성을 취소시킨다.
도 4a에서 만일 "커밋" 요구(408)가 복구 요구라 하더라도 처리 과정은 설명된 것과 같겠지만, 트랜잭션이 커밋되었다는 점을 주의하라. 게다가 본 바람직한 실시예는 트랜잭션이 종결되었을 때 빈 인스턴스의 불활성화를 용이하게 하기 위하여 동기화 객체 및 "종결후" 메소드를 사용했지만 다른 실시예는 이와 다른 메소드들을 수용할 수도 있을 것이다.
클라이언트의 제2 트랜잭션을 나타내는 도 4b에서 프로세싱이 계속된다. 클라이언트(401)는 "트랜잭션 시작" 요구(413)를 발행하고, 작업량 관리 장치(도시되 지 않음)는 이를 "EJB 서버2"(412) 내의 "트랜잭션 서비스"에게 할당하고 상기 서버 프로세스와 상기 트랜잭션 사이에 친화성을 설정한다. 그러면 클라이언트는 "BeanCounter" 인스턴스에게 "증가" 요구(414)를 발행한다. 상기 요구는 설정된 트랜잭션-서버 친화성에 기초하여 "EJB 서버2"(412)에게 할당된다. 컨테이너는 빈 인스턴스가 휘발성 메모리에 있지 않다는 것을 인식하고 "빈 저장고"로부터 그것을 판독 및 제거한다(415). 그 후 빈 인스턴스는 휘발성 메모리로 역-직렬화되고 ejbActivate 메소드(416)가 그에 대하여 호출된다. 본 예에서 "Bean Counter" 인스턴스는 ejbActivate에서 그 상태를 되찾기 위하여 할 일이 없다. 그 후 "증가" 요구(414)는 "Bean Counter" 인스턴스에게 전해지고 이는 상태를 "beans=2"로 갱신시킨다. 증가 메소드로부터 복귀하기 전에 컨테이너는 이것이 본 트랜잭션에서의 "Bean Counter" 인스턴스의 제1 사용이라는 것을 인식한다고 따라서 컨테이너가 소유한 동기화 객체를 상기 트랜잭션 서비스와 함께 등록하기 위하여 "동기화 등록" 요구(417)를 발행한다. 이는 트랜잭션 종결 처리 중 컨테이너가 "종결 후 요구"(419)에 의하여 호출될 것을 보장한다. 클라이언트는 트랜잭션을 종결하려 할 때에 "커밋" 요구(418)를 발행하고 이후의 처리는 도 4a에서 설명한 "커밋" 요구(408)로부터 시작되는 방법과 같은 방법으로 진행된다.
이런 방법으로 유상태 세션 빈 인스턴스는 트랜잭션들 사이에서 서버 프로세스를 이동하였고 그 결과 각 트랜잭션에 작업량 관리를 할 수 있게 되었다. 본 발명이 없다면, 유상태 세션 빈 인스턴스의 생성(404)은 클라이언트-서버 친화성을 설정할 것이고 이는 클라이언트의 트랜잭션들이 같은 서버 프로세스에서 실행되는 결과를 가져올 것이다.
상기 예는 클라이언트에 의하여 착수된 트랜잭션들에 대하여 고려하고 있으나, 본 발명은 컨테이너 또는 빈에 의하여 착수된 트랜잭션들에 대해서도 적용될 수 있다는 점을 주의해야 한다. 컨테이너나 빈에 의하여 착수된 트랜잭션들에 있어서 관련된 흐름들은 전술된 것들과 상당히 유사할 것이다. 이러한 시나리오에서, 본 바람직한 실시예의 차이점은 도 4a 및 4b에서 클라이언트(10)에 의하여 소환된 메소드들이 다른 엔터티들에 의하여 발행될 것이라는 점일 것이다. 예를 들어 다른 "EJB" 컨테이너 또는 다른 "EJB" 인스턴스가 "시작"(403, 413) 및 "커밋"(408, 418) 요구를 발행할 수도 있을 것이고, 또 다른 "EJB" 인스턴스 또는 클라이언트가 "생성"(404) 및 "증가"(407, 414) 메소드를 발행할 수도 있을 것이다.
또한, 컨테이너 관리 트랜잭션들은 단일의 클라이언트 요구 내에서 시작되고 종결된다. 그 결과, 컨테이너 관리 트랜잭션의 일부로서 액세스되는 유상태 세션 빈은 모든 클라이언트 요구가 종결될 때마다 불활성화된다. 이는 컨테이너 관리 트랜잭션들을 사용하는 모든 클라이언트 요구들의 작업량 관리를 가능케 한다. 트랜잭션이 없는 경우에도, 컨테이너는 비 트랜잭션 요구가 종결될 때 유상태 세션 빈 인스턴스들을 불활성화할 수 있고, 따라서 유상태 세션 빈 인스턴스가 액세서된다 하더라도 모든 클라이언트 요구들의 작업량 관리를 할 수 있음을 알 수 있다.
도 5는 본 발명의 바람직한 실시예에 따르는 도 4a 및 4b에 나타난 트랜잭션들의 도식화이다. 클라이언트(401)는 두 개의 트랜잭션 "T1" 및 "T2"를 실행하고 각 트랜잭션의 과정에서 "Bean Counter" 인스턴스(503)가 액세스된다. "T1-a"(501)는 클라이언트(401)가 트랜잭션 "T1"의 일부로서 생성하는 요구들을 나타낸다. 작업량 관리 장치(12)는 이러한 모든 요구들의 경로를 "EJB 서버1"(402)에게로 지정하며 이러한 요구들은 "T1-b"(502)로 나타내어진다. 트랜잭션이 종결되면 직렬화된 "Bean Counter" 인스턴스(503)가 "빈 저장고"(509)에 기록되고(504) "EJB 서버1"(402)의 메모리로부터 제거된다. "T2-a"(506)는 클라이언트(401)가 트랜잭션 "T2"의 일부로서 생성하는 요구들을 나타낸다. 작업량 관리 장치(12)는 이러한 모든 요구들의 경로를 "EJB 서버2"(412)에게로 지정하고 이러한 요구들은 "T2-b"(507)로 나타내어진다. "T2"가 "Bean Counter" 인스턴스를 처음으로 액세스할 때, "빈 저장고"(509)로부터 그것을 판독 및 제거하고 "EJB 서버2" 내의 메모리에 다시 인스턴스화함으로써 "Bean Counter" 인스턴스가 "EJB 서버2" 내에 재활성화된다. 그 결과, "T1"이 다른 서버에서 실행되었음에도 불구하고 "T2"가 "T1"에 의하여 남겨진 "Bean Counter" 인스턴스의 상태에 액세스하는 것이 가능하다. 그 후 "T2"는 빈 인스턴스의 상태를 "beans=2"로 증가시킨다.
도 6은 본 발명의 바람직한 실시예에 따라 유상태 세션 빈들의 작업량 관리를 가능케 하기 위하여 비휘발성 저장장치에 보유되는 정보의 유형의 도시화이다. 두 파일들, 즉 복구 가능한 "경로지정표" 및 복구 불가능한 "빈 저장고"의 내용들이 본 발명 하에서 얻어질 수 있는 일련의 상태들에 대하여 나타내어진다. 정보가 보유되는 방식은 여러 가지이므로, 나타난 내용들은 파일들의 실제 내용이라기 보다는 보유된 정보의 세부라는 점을 주의하라. 또한 나타난 상태들이 전부는 아니 며 개념을 도시하기 위한 역할을 할 뿐이다.
도 6에 나타난 제1 상태에서 "T1"이라는 ID를 가진 활성화된 트랜잭션 및 "B1"이라는 키(key)를 가진 불활성화된 세션 빈 인스턴스가 있다. "경로지정표"는 트랜잭션 "T1" 및 상기 트랜잭션이 시작된 서버 프로세스 "서버1"의 표시들을 포함한다(601). 이 정보는 트랜잭션 "T1"의 일부인 모든 요구들의 경로가 "서버1"에게로 지정되도록 트랜잭션-서버 친화성을 유지하기 위하여 사용된다. "빈 저장고"는 세션 빈 키 "B1" 및 그것의 대화형 상태 "beans=1"을 포함한다(602). 이러한 상태에서는 상기 빈 인스턴스에 액세스하려는 그 작업그룹 내의 임의의 서버 프로세스로부터의 시도는 성공할 것이다.
빈 인스턴스 "B1"이 트랜잭션 "T1"의 범위 내에서 재활성화된 후 제1 상태로부터 도 6의 제2 상태가 뒤따른다. "경로지정표"의 내용(603)은 변함이 없으나 빈 인스턴스의 기록이 "빈 저장고"로부터 제거되었고, 이제 "빈 저장고"에는 빈 인스턴스 "B1"의 기록이 없다(604). 이는 빈 인스턴스 "B1"이 이제는 "서버1" 내의 휘발성 메모리에 있기 때문이고 따라서 그것에 액세스하려는 "서버1"로부터의 임의의 시도는 성공할 것이나, 그 작업그룹 내의 다른 서버 프로세스로부터의 시도는 모두 실패할 것이다.
트랜잭션 "T1"이 커밋한 후 제2 상태로부터 도 6의 세 번째 상태가 뒤따른다. 트랜잭션-서버 친화성이 취소되었으므로 이제 "경로지정표"는 종결된 트랜잭션 "T1"의 기록을 갖고 있지 않다(605). "빈 저장고"는 세션 빈 키 "B1" 및 그것의 갱신된 대화형 상태 "beans=2"를 포함하며(602), 이는 트랜잭션 종결 중 빈 인 스턴스가 불활성화되었음을 지시한다.
아직 종결되지 않은 빈 관리 트랜잭션 하에서, 불활성화된 빈 인스턴스 "B1"이 "서버2"로부터 액세스된 후, 세 번째 상태로부터 도 6의 네 번째 상태가 뒤따른다. "경로지정표"는 빈 인스턴스 키 "B1" 및 빈이 현재 활성화된 서버 프로세스 "서버2"를 포함한다(607). 또한 빈 인스턴스 키 "B1"은 빈이 빈 관리 트랜잭션 하에서 액세스되고 있음을 지시하는 플래그를 포함한다. 이는 상기 빈 인스턴스에 액세스하려는 다음 시도의 경로가 "서버2"에게로 지정될 것을 보장한다. "빈 저장고"는 현재 활성화되어 있는 빈 인스턴스 "B1"의 기록을 갖고 있지 않다(608). 이러한 상태는 빈 관리 트랜잭션이 종결되어 빈이 불활성화되고 도 6의 세 번째 상태 - "경로지정표"가 더 이상 빈 키의 기록을 갖지 않고 "빈 저장고"가 세션 빈 인스턴스를 포함하는 상태 - 로 돌아가는 시점까지 유지될 것이다.
도 4에 나타난 상태들은 본 바람직한 실시예에서 가능한 상태들 중 하나를 제외한 모든 상태들을 포함한다. 그 나타나지 않은 상태란 "경로지정표"가 그 빈 인스턴스 또는 트랜잭션의 범위 내에서 빈 인스턴스가 액세스되는 빈 인스턴스의 키 또는 트랜잭션의 ID를 포함하지 않고, "빈 저장고"가 빈 인스턴스의 기록을 포함하고 있지 않은 상태이다. 이러한 상태는 존재하지 않는 빈 인스턴스에 의하여, 또는 트랜잭션의 범위 밖에 있거나 컨테이너 관리 트랜잭션의 일부인 서버 프로세스 내에서 활성화되어 있는 빈 인스턴스에 의하여 얻어질 수 있다.
따라서 본 발명의 바람직한 구현에서는 세션 빈 인스턴스는 트랜잭션의 종결시 불활성화되고, 불활성화된 빈 인스턴스의 직렬화된 형태는 재활성화될 때 "빈 저장고"로부터 제거된다. 그 결과, 재활성화된 후에 빈 인스턴스의 상태의 유일한 표시는 휘발성 메모리에 재활성화된 빈 인스턴스 내에 있다. 이는 하나의 세션 빈 인스턴스는 한 장소에만 존재할 수 있다는 점, 트랜잭션이 종결된 상태에서만 다른 서버 프로세스로부터 액세스할 수 있다는 점, 만일 트랜잭션을 종결하기 전에 실패한 서버 프로세스로부터의 트랜잭션에 의해 액세스되었다면 더 이상 액세스할 수 없게 된다는 점을 보장한다. 이는 만일 커밋되지 않은 트랜잭션 갱신이 상실되면 유상태 세션 빈이 더 이상 액세스될 수 없다는 점과, 그 결과 유상태 세션 빈에서 접속할 수 있는 상태는 언제나 모든 갱신들을 반영한다는 점을 보장한다. 만일 이런 식으로 액세스할 수 없게 된 유상태 세션 빈에 액세스하려는 시도가 있으면, 요구자는 "java.rmi.NosuchObjectException" 등과 같은 적절한 예외(excaption)를 수신하게 된다.
도 7은 본 발명의 바람직한 실시예에 따라 수신된 요구를 서버 프로세스에 할당할 때 작업량 관리 장치가 수행하는 로직을 나타낸다. 단계(701)에서 요구가 트랜잭션을 수반하는 것인가를 검사한다. 만일 요구가 트랜잭션을 수반하면 요구로부터 트랜잭션 ID가 획득되고 단계(702)에서 상기 ID를 경로지정표에 있는 트랜잭션 ID들과 비교한다. 만일 상기 ID가 발견되면, 단계(703)에서 상기 요구는 경로지정표에서 명시된 서버 프로세스로 할당된다. 만일 ID가 발견되지 않으면, 단계(704)에서 상기 요구는 그 작업그룹 내의 임의의 서버 프로세스에게 할당된다. 만일 상기 요구가 트랜잭션을 수반하지 않으면, 단계(705)에서 상기 요구의 목표가 빈 관리 트랜잭션 하에서 액세스되고 있는 빈 인스턴스인가를 결정한다. 이러한 정보는 빈 인스턴스의 키의 플래그에 의하여 얻어진다. 만일 빈 인스턴스의 키가 상기 요구로부터 얻어지는 경우라면, 단계(706)에서 경로지정표에 있는 빈 인스턴스 키들과 비교된다. 만일 키가 발견되면, 단계(707)에서 상기 요구는 경로지정표에서 명시된 서버로 할당된다. 만일 키가 발견되지 않으면, 단계(704)에서 상기 요구는 그 작업그룹 내의 임의의 서버 프로세스에게 할당된다. 만일 상기 빈 인스턴스의 키가 빈 관리 트랜잭션 하에서 액세스되고 있는 빈 인스턴스를 지시하지 않는다면 경로지정표를 조사하지 않고 단계(704)에서 상기 요구를 임의의 서버에게 할당한다.
빈 인스턴스가 빈 관리 트랜잭션 하에서 액세스되고 있음을 지시하는 빈 인스턴스 키의 플래그의 사용은 성능을 최적화함을 주의하라. 바람직한 구현에서 빈 인스턴스 키는 그것이 빈 관리 트랜잭션 하에서 액세스되고 있는 경우에만 경로지정표 내에 있을 것이다. 그 결과, 플래그의 사용은 만일 빈 인스턴스 키가 세트(set)된 플래그를 갖지 않으면 경로지정표를 조사할 필요가 없음을 의미한다. 만일 플래그가 사용되지 않으면, 빈 인스턴스를 목표로 하는 수신된 모든 요구들의 빈 인스턴스 키에 대하여 경로지정표를 검사할 필요가 있을 것이다.
본 바람직한 구현은 작업단위를 나타내는 메소드로서 "CORBA compliant OTS transaction"을 사용하고 있음을 주의해야 한다. 그러나 본 발명은 다른 유형의 작업단위, 예를 들어, 다른 유형의 트랜잭션, 세션, 비즈니스 메소드(business method), 클라이언트 요구 또는 하나 이상의 사건들을 하나의 단위로 그룹짓는 임의의 다른 메소드에도 적용될 수 있다. 이는 선택된 작업단위가 종결될 때 유상태 세션 빈 인스턴스를 불활성화함으로서 달성된다. 또한, 어떤 실시예에서는 계층화된 작업단위를 이용할 수도 있을 것이다. 예를 들어 "OTS transaction"이 선택된 작업단위인 바람직한 실시예에서, 트랜잭션이 없을 경우에는 비즈니스 프로세스 메소드가 작업단위로 사용될 수도 있을 것이다. 만일 클라이언트가 트랜잭션의 범위 밖의 비즈니스 메소드를 요구하고 상기 비즈니스 메소드가 직접 또는 간접으로 유상태 세션 빈 인스턴스를 액세스하면, 상기 유상태 세션 빈 인스턴스는 상기 비즈니스 메소드가 종결될 때 불활성될 수도 있을 것이다. 바람직하게는 이는 클라이언트에 의하여 호출된 비즈니스 메소드의 "소환후" 처리 중에 행해질 수 있다. 그러면 이는 유상태 세션 빈 인스턴스들을 수반하는, 클라이언트에 의하여 소환된 비즈니스 메소드들의 작업량 관리를 제공한다.
또한, 본 바람직한 구현에서, 유상태 세션 빈이 메모리에 대화형 상태를 보유하는 프로그램 엔터티 유형의 바람직한 실시예로서 선택되었음을 주의하라. 그러나, 본 발명은 자바 빈이나 C++ 객체 등 작업량 관리 지원을 필요로 하는 어떠한 유형의 엔터티에도 적용될 수 있을 것이다.
본 발명은 바람직하게는 컴퓨터 시스템과 함께 사용되는 컴퓨터 프로그램 제품으로서 실시된다. 이러한 실시예는 일련의 컴퓨터 판독 가능 명령어들을 포함할 수 있고, 상기 일련의 컴퓨터 판독 가능 명령어들은 유형 매체(예를 들어 디스켓, CD-ROM, ROM 또는 하드디스크 등의 컴퓨터 판독 가능 매체) 상에 고정되거나, 모뎀 또는 다른 인터페이스 장치를 통해 컴퓨터 시스템으로 전송될 수 있으며, 상기 전송은 유형 매체(광 또는 아날로그 통신선을 포함하나 이들에만 국한되지는 않음)를 통하거나 무선 기술(극초단파, 적외선 또는 다른 전송 기술들을 포함하지만 이들에 만 국한되지는 않음)을 사용하여 무형으로 이루어질 수 있다. 상기 일련의 컴퓨터 판독 가능 명령어들은 본 명세서에서 전술된 기능의 전부 또는 일부를 구현한다.
당업자는 이러한 컴퓨터 판독 가능 명령어들이 많은 컴퓨터 구조 또는 운영 시스템들과 함께 사용되기 위하여 많은 프로그래밍 언어로 기록될 수 있음을 이해할 것이다. 또한, 이러한 명령어들은 현재 또는 미래의 임의의 메모리 기술(반도체, 자기 또는 광을 포함하나 이들에만 국한되지는 않음)을 사용하여 저장되거나 현재 또는 미래의 임의의 통신 기술들(광, 적외선 또는 극초단파를 포함하나 이들에만 국한되지는 않음)을 사용하여 전송될 수 있다. 이러한 컴퓨터 프로그램 제품은 인쇄된 문서 또는 전자 문서(예를 들어, 압축 포장 소프트 웨어)를 수반하는 탈착 가능한 매체로서 배포될 수도 있고, 컴퓨터 시스템에 (예를 들어, 시스템 ROM 또는 고정된 디스크 상에) 미리 장착될 수도 있고, 서버 또는 전자 게시판으로부터 네트워크(예를 들어 인터넷이나 월드 와이드 웹)를 통하여 배포될 수도 있을 것이다.

Claims (24)

  1. 비휘발성 메모리 저장 장치 및 서버 프로세스를 실행할 수 있는 적어도 하나의 서버를 갖는 데이터 처리 시스템에서의 프로그램 엔터티(program entity)의 데이터 처리 방법에 있어서,
    제1 서버 프로세스의 일부분으로서, 상기 프로그램 엔터티의 인스턴스(instance)를 상기 저장 장치 상의 프로그램 엔터티 저장고에 기록하고 상기 인스턴스를 상기 서버 프로세스로부터 제거함으로써 상기 프로그램 엔터티의 인스턴스를 불활성화하는(passivating) 단계;
    제2 서버 프로세스의 일부분으로서, 상기 프로그램 엔터티의 상기 인스턴스에 액세스하기 위한 요구(request)를 처리하는 단계 - 상기 처리 단계는 상기 프로그램 엔터티의 상기 인스턴스를 상기 프로그램 엔터티 저장고로부터 판독하고 상기 인스턴스를 상기 서버 프로세스에서 재생성함으로써 상기 프로그램 엔터티의 상기 인스턴스를 재활성화하는(reactivating) 단계를 포함함 - ; 및
    작업량 분배 알고리즘에 따라 상기 요구가 처리되는 서버 프로세스를 선택하는 단계
    를 포함하는 데이터 처리 방법.
  2. 제1항에 있어서,
    상기 불활성화하는 서버 프로세스는 클라이언트를 대신하여 하나의 작업단위를 실행하고,
    상기 작업단위 하에서 상기 프로그램 엔터티 인스턴스가 액세스되고,
    상기 불활성화 단계는 상기 작업단위가 종결될 때 상기 프로그램 엔터티 인스턴스를 불활성화하는 데이터 처리 방법.
  3. 제2항에 있어서, 상기 작업단위는 트랜잭션(transaction) 또는 비즈니스 메소드(business method)를 포함하는 데이터 처리 방법.
  4. 삭제
  5. 제1항 내지 제3항 중 한 항에 있어서, 상기 프로그램 엔터티는 유상태 세션 빈(stateful session bean)을 포함하는 데이터 처리 방법.
  6. 제2항 내지 제3항 중 한 항에 있어서, 상기 재활성화 단계는 상기 프로그램 엔터티 저장고로부터 상기 프로그램 엔터티의 상기 인스턴스를 판독 및 제거하고, 그럼으로써 만일 상기 프로그램 엔터티 인스턴스가 상기 작업단위 하에서 재활성화되면, 상기 프로그램 엔터티 인스턴스는 상기 작업단위가 종결될 때까지는 상기 작업단위 밖에서 다시 액세스될 수 없음을 보장하는 데이터 처리 방법.
  7. 제1항 내지 제3항 중 한 항에 있어서,
    상기 저장 장치 상의 경로지정표(routing table)에 프로그램 엔터티 인스턴스 위치 정보를 보관하는 단계를 더 포함하고,
    상기 경로지정표는 복수의 프로그램 엔터티 인스턴스들의 위치를 확인하기 위하여 사용되고,
    상기 정보는 프로그램 엔터티 인스턴스가 상기 복수의 서버 프로세스들 중 하나에서 활성화된 상태로 있는지 또는 상기 프로그램 엔터티 저장고에서 불활성화된 상태로 있는지를 지시하는 데이터 처리 방법.
  8. 제7항에 있어서,
    적어도 하나의 프로그램 엔터티 인스턴스를 요구의 목표로서 식별하는 데에 사용할 목적으로 하나의 키를 상기 복수의 프로그램 엔터티 인스턴스들 중 적어도 하나와 연관시키는 단계를 더 포함하고,
    상기 키는 상기 적어도 하나의 프로그램 엔터티 인스턴스의 위치 정보가 상기 경로지정표에 존재하는 것을 지시하는 플래그를 포함하는 데이터 처리 방법.
  9. 비휘발성 메모리 저장 장치 및 서버 프로세스를 실행할 수 있는 적어도 하나의 서버를 갖는 데이터 처리 시스템에서 사용하기 위한 것이고, 명령어들을 포함하고 있으며, 상기 명령어들은 실행되었을 때에 제1항 내지 제3항 중 한 항에 기재된 방법을 실행함으로써 상기 시스템으로 하여금 프로그램 엔터티를 처리하도록 하는 컴퓨터 판독 가능 매체.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 비휘발성 메모리 저장 장치 및 서버 프로세스를 실행할 수 있는 적어도 하나의 서버를 갖는 데이터 처리 시스템에서 사용하기 위한 것이고, 명령어들을 포함하고 있으며, 상기 명령어들은 실행되었을 때에 제5항에 기재된 방법을 실행함으로써 상기 시스템으로 하여금 프로그램 엔터티를 처리하도록 하는 컴퓨터 판독 가능 매체.
  14. 비휘발성 메모리 저장 장치 및 서버 프로세스를 실행할 수 있는 적어도 하나의 서버를 갖는 데이터 처리 시스템에서 사용하기 위한 것이고, 명령어들을 포함하고 있으며, 상기 명령어들은 실행되었을 때에 제6항에 기재된 방법을 실행함으로써 상기 시스템으로 하여금 프로그램 엔터티를 처리하도록 하는 컴퓨터 판독 가능 매체.
  15. 비휘발성 메모리 저장 장치 및 서버 프로세스를 실행할 수 있는 적어도 하나의 서버를 갖는 데이터 처리 시스템에서 사용하기 위한 것이고, 명령어들을 포함하고 있으며, 상기 명령어들은 실행되었을 때에 제7항에 기재된 방법을 실행함으로써 상기 시스템으로 하여금 프로그램 엔터티를 처리하도록 하는 컴퓨터 판독 가능 매체.
  16. 비휘발성 메모리 저장 장치 및 서버 프로세스를 실행할 수 있는 적어도 하나의 서버를 갖는 데이터 처리 시스템에서 사용하기 위한 것이고, 명령어들을 포함하고 있으며, 상기 명령어들은 실행되었을 때에 제8항에 기재된 방법을 실행함으로써 상기 시스템으로 하여금 프로그램 엔터티를 처리하도록 하는 컴퓨터 판독 가능 매체.
  17. 복수의 서버 프로세스들을 실행하는 적어도 하나의 서버 - 상기 복수의 서버 프로세스들은 각각 하나의 프로그램 엔터티를 지원함 -; 및
    상기 복수의 서버 프로세스들 각각이 액세스할 수 있는 비휘발성 메모리 저장 장치
    를 포함하고,
    상기 서버에 의해 실행되는 경우, 상기 복수의 서버 프로세스들의 각각은
    상기 프로그램 엔터티의 인스턴스를 상기 저장 장치 상의 프로그램 엔터티 저장고에 기록함으로써 상기 프로그램 엔터티의 인스턴스를 불활성화하는 단계;
    상기 프로그램 엔터티의 상기 인스턴스에 액세스하기 위한 요구를 처리하는 단계 - 상기 처리 단계는 상기 프로그램 엔터티의 인스턴스를 상기 프로그램 엔터티 저장고로부터 판독하고 상기 인스턴스를 상기 프로그램 엔터티 인스턴스를 재생성하는 데에 사용함으로써 상기 프로그램 엔터티의 상기 인스턴스를 재활성화하는 단계를 포함하고, 상기 재활성화 단계는 상이한 서버 프로세스를 불성화하는 상기 단계에 의하여 불활성화된 프로그램 엔터티 인스턴스들을 재활성화하는 단계를 포함함 - ; 및
    작업량 분배 알고리즘에 따라 상기 요구가 처리되는 서버 프로세스를 선택하는 단계
    을 포함하는 절차를 수행하는 데이터 처리 시스템.
  18. 제17항에 있어서,
    상기 복수의 서버 프로세스들의 각각에 의해 수행되는 상기 절차는, 클라이언트를 대신하여 하나의 작업단위 - 상기 작업단위 하에서 상기 프로그램 엔터티의 제1 인스턴스가 액세스됨 - 를 실행하는 단계를 더 포함하고,
    상기 프로그램 엔터티의 인스턴스를 불활성화하는 상기 단계는 상기 작업단위가 종결될 때 상기 제1 프로그램 엔터티 인스턴스를 불활성화하는 단계를 포함하는 데이터 처리 시스템.
  19. 제18항에 있어서, 상기 작업단위는 트랜잭션 또는 비즈니스 메소드를 포함하는 데이터 처리 시스템.
  20. 삭제
  21. 제17항 내지 제19항 중 한 항에 있어서, 상기 프로그램 엔터티는 유상태 세션 빈을 포함하는 데이터 처리 시스템.
  22. 제18항 내지 제19항 중 한 항에 있어서, 상기 재활성화 단계는 상기 프로그램 엔터티 저장고로부터 상기 프로그램 엔터티의 상기 인스턴스를 판독 및 제거하는 단계를 포함하고,
    상기 재활성화하는 단계에 의해 상기 제1 프로그램 엔터티 인스턴스가 상기 작업단위 하에서 재활성되는 경우, 상기 프로그램 엔터티 인스턴스는 상기 작업단위가 종결될 때까지는 상기 작업단위 밖에서 다시 액세스될 수 없음을 보장하는 데이터 처리 시스템.
  23. 제17항 내지 제19항 중 한 항에 있어서,
    상기 복수의 서버 프로세스들의 각각에 의해 수행되는 상기 절차는, 상기 저장 장치 상의 경로지정표에 프로그램 엔터티 인스턴스 위치정보를 보관하는 단계를 더 포함하고,
    상기 경로지정표는 복수의 프로그램 엔터티 인스턴스들의 위치를 확인하기 위하여 사용되고,
    상기 정보는 프로그램 엔터티 인스턴스가 상기 복수의 서버 프로세스들 중 하나에서 활성화된 상태로 있는지 또는 상기 프로그램 엔터티 저장고에서 불활성화된 상태로 있는지를 지시하는 데이터 처리 시스템.
  24. 제23항에 있어서,
    상기 복수의 서버 프로세스들의 각각에 의해 수행되는 상기 절차는, 적어도 하나의 프로그램 엔터티 인스턴스를 요구의 목표로서 식별하는 데에 사용할 목적으로 하나의 키를 상기 복수의 프로그램 엔터티 인스턴스들 중 적어도 하나와 연관시키는 단계를 더 포함하고,
    상기 키는 상기 적어도 하나의 프로그램 엔터티 인스턴스의 위치 정보가 상기 경로지정표에 존재하는 것을 지시하는 플래그를 포함하는 데이터 처리 시스템.
KR1020037012000A 2001-03-29 2002-03-07 유상태 프로그램 엔터티의 작업량 관리 KR100579015B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0107967.2 2001-03-29
GBGB0107967.2A GB0107967D0 (en) 2001-03-29 2001-03-29 Workload management of stateful program entities
PCT/GB2002/001032 WO2002079973A2 (en) 2001-03-29 2002-03-07 Workload management of stateful program entities(e.g. enterprise java session beans)

Publications (2)

Publication Number Publication Date
KR20030088459A KR20030088459A (ko) 2003-11-19
KR100579015B1 true KR100579015B1 (ko) 2006-05-12

Family

ID=9911897

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037012000A KR100579015B1 (ko) 2001-03-29 2002-03-07 유상태 프로그램 엔터티의 작업량 관리

Country Status (8)

Country Link
US (1) US7349970B2 (ko)
EP (1) EP1374048A2 (ko)
JP (1) JP3851272B2 (ko)
KR (1) KR100579015B1 (ko)
CN (1) CN1291315C (ko)
AU (1) AU2002237437A1 (ko)
GB (1) GB0107967D0 (ko)
WO (1) WO2002079973A2 (ko)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7543066B2 (en) * 2001-04-30 2009-06-02 International Business Machines Corporation Method and apparatus for maintaining session affinity across multiple server groups
WO2004068367A2 (en) 2002-12-02 2004-08-12 Sap Aktiengesellschaft Session-return enabling stateful web applications
US20040122950A1 (en) * 2002-12-20 2004-06-24 Morgan Stephen Paul Method for managing workloads in an autonomic computer system for improved performance
WO2004077259A2 (en) * 2003-02-24 2004-09-10 Bea Systems Inc. System and method for server load balancing and server affinity
US8032890B2 (en) * 2003-07-22 2011-10-04 Sap Ag Resources managing in isolated plurality of applications context using data slots to access application global data and specification of resources lifetime to access resources
US7246359B2 (en) * 2003-07-31 2007-07-17 International Business Machines Corporation Methods, systems and computer program products for maintaining association integrity of enterprise JavaBeans (EJB) during EJB passivation and reactivation
US7200608B2 (en) * 2003-10-23 2007-04-03 Microsoft Corporation Application programming interface for centralized storage of principal data
US7631060B2 (en) * 2003-10-23 2009-12-08 Microsoft Corporation Identity system for use in a computing environment
US7386864B2 (en) * 2003-11-12 2008-06-10 Microsoft Corporation Automatic serialization for event driven multi-threaded programs in an object structured system
US7870352B2 (en) 2003-11-13 2011-01-11 Stalker Altan J State-based memory unloading
US7162647B2 (en) * 2004-03-11 2007-01-09 Hitachi, Ltd. Method and apparatus for cryptographic conversion in a data storage system
US8204931B2 (en) * 2004-12-28 2012-06-19 Sap Ag Session management within a multi-tiered enterprise network
US7769784B2 (en) 2005-01-27 2010-08-03 International Business Machines Corporation System for autonomically improving performance of Enterprise Java Beans through dynamic workload management
US8589562B2 (en) 2005-04-29 2013-11-19 Sap Ag Flexible failover configuration
US8762547B2 (en) * 2005-04-29 2014-06-24 Sap Ag Shared memory implementations for session data within a multi-tiered enterprise network
JP2007004595A (ja) * 2005-06-24 2007-01-11 Hitachi Ltd コンピュータ制御方法、コンピュータ、情報処理システム、及びプログラム
US8850056B2 (en) * 2005-08-22 2014-09-30 Oracle America, Inc. Method and system for managing client-server affinity
CN100342342C (zh) * 2005-12-14 2007-10-10 浙江大学 支持多进程的Java虚拟机实现方法
US7941332B2 (en) 2006-01-30 2011-05-10 International Business Machines Corporation Apparatus, system, and method for modeling, projecting, and optimizing an enterprise application system
US7675854B2 (en) 2006-02-21 2010-03-09 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US7685131B2 (en) * 2006-02-28 2010-03-23 International Business Machines Corporation Web services database cluster architecture
US7810076B2 (en) * 2006-09-22 2010-10-05 International Business Machines Corporation Method and system for scaling standalone applications to be executed as internet applications
US8584199B1 (en) 2006-10-17 2013-11-12 A10 Networks, Inc. System and method to apply a packet routing policy to an application session
US8312507B2 (en) 2006-10-17 2012-11-13 A10 Networks, Inc. System and method to apply network traffic policy to an application session
US8112262B1 (en) * 2008-09-30 2012-02-07 Interactive TKO, Inc. Service modeling and virtualization
JP4888742B2 (ja) 2009-02-25 2012-02-29 ソニー株式会社 情報処理装置および方法、並びにプログラム
US8429606B2 (en) * 2009-05-29 2013-04-23 Red Hat, Inc. Transactional object container
US9960967B2 (en) 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
CN102217247B (zh) * 2009-12-24 2013-09-11 华为技术有限公司 实现多Web应用请求调度的方法、装置及系统
US9215275B2 (en) 2010-09-30 2015-12-15 A10 Networks, Inc. System and method to balance servers based on server load status
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US9509504B2 (en) * 2011-08-17 2016-11-29 Red Hat, Inc. Cryptographic key manager for application servers
US8897154B2 (en) * 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9386088B2 (en) 2011-11-29 2016-07-05 A10 Networks, Inc. Accelerating service processing using fast path TCP
US9094364B2 (en) 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US8782221B2 (en) 2012-07-05 2014-07-15 A10 Networks, Inc. Method to allocate buffer for TCP proxy session based on dynamic network conditions
US9705800B2 (en) 2012-09-25 2017-07-11 A10 Networks, Inc. Load distribution in data networks
US10021174B2 (en) 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US10002141B2 (en) 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US9338225B2 (en) 2012-12-06 2016-05-10 A10 Networks, Inc. Forwarding policies on a virtual service network
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
US9558105B2 (en) 2013-03-15 2017-01-31 Ca, Inc. Transactional boundaries for virtual model generation
WO2014144837A1 (en) 2013-03-15 2014-09-18 A10 Networks, Inc. Processing data packets using a policy based network path
US10038693B2 (en) 2013-05-03 2018-07-31 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US10027761B2 (en) 2013-05-03 2018-07-17 A10 Networks, Inc. Facilitating a secure 3 party network session by a network device
US10007537B2 (en) 2013-11-26 2018-06-26 Parallels Method for targeted resource virtualization in containers
EA201301283A1 (ru) * 2013-11-26 2015-05-29 Общество С Ограниченной Ответственностью "Параллелз" Способ целевой виртуализации ресурсов в контейнере
US10025839B2 (en) 2013-11-29 2018-07-17 Ca, Inc. Database virtualization
US10230770B2 (en) 2013-12-02 2019-03-12 A10 Networks, Inc. Network proxy layer for policy-based application proxies
US9727314B2 (en) 2014-03-21 2017-08-08 Ca, Inc. Composite virtual services
US9531609B2 (en) 2014-03-23 2016-12-27 Ca, Inc. Virtual service automation
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
US10133996B2 (en) * 2014-04-22 2018-11-20 International Business Machines Corporation Object lifecycle analysis tool
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US10489213B2 (en) 2014-10-01 2019-11-26 Red Hat, Inc. Execution of a method at a cluster of nodes
US9477454B2 (en) 2015-02-12 2016-10-25 Ca, Inc. Automated software deployment
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US10296445B2 (en) 2015-09-13 2019-05-21 Ca, Inc. Automated system documentation generation
US10628420B2 (en) 2015-12-18 2020-04-21 Ca, Inc. Dynamic virtual service
US10154098B2 (en) 2016-01-07 2018-12-11 Ca, Inc. Transactional boundaries for software system profiling
US9886365B2 (en) 2016-01-07 2018-02-06 Ca, Inc. Transactional boundaries for software system debugging
US9983856B2 (en) 2016-01-08 2018-05-29 Ca, Inc. Transaction flow visualization
US10341214B2 (en) 2016-03-30 2019-07-02 Ca, Inc. Scenario coverage in test generation
US9946639B2 (en) 2016-03-30 2018-04-17 Ca, Inc. Transactional boundaries for virtualization within a software system
US10114736B2 (en) 2016-03-30 2018-10-30 Ca, Inc. Virtual service data set generation
US9898390B2 (en) 2016-03-30 2018-02-20 Ca, Inc. Virtual service localization
US10394583B2 (en) 2016-03-31 2019-08-27 Ca, Inc. Automated model generation for a software system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862327A (en) * 1996-06-10 1999-01-19 Tactica Corporation Activity based long-lived transaction system
US6199066B1 (en) * 1998-07-20 2001-03-06 Telefonaktiebolaget L M Ericsson Meta-service activating interface between a customer administrative system and database network elements of a communications network
US6571274B1 (en) * 1998-11-05 2003-05-27 Beas Systems, Inc. Clustered enterprise Java™ in a secure distributed processing system
US6581088B1 (en) * 1998-11-05 2003-06-17 Beas Systems, Inc. Smart stub or enterprise javaTM bean in a distributed processing system
US6236999B1 (en) * 1998-11-05 2001-05-22 Bea Systems, Inc. Duplicated naming service in a distributed processing system
US6457065B1 (en) * 1999-01-05 2002-09-24 International Business Machines Corporation Transaction-scoped replication for distributed object systems
US6944680B1 (en) * 1999-10-12 2005-09-13 Bea Systems, Inc. Smart handle
EP1264263A2 (en) * 2000-02-25 2002-12-11 Saba Software, Inc. Method for enterprise workforce planning
US20020004856A1 (en) * 2000-03-29 2002-01-10 Krishna Sudarshan System and method of generating and using proxy beans
US20030115376A1 (en) * 2001-12-19 2003-06-19 Sun Microsystems, Inc. Method and system for the development of commerce software applications

Also Published As

Publication number Publication date
WO2002079973A2 (en) 2002-10-10
JP2004531807A (ja) 2004-10-14
CN1516831A (zh) 2004-07-28
EP1374048A2 (en) 2004-01-02
GB0107967D0 (en) 2001-05-23
KR20030088459A (ko) 2003-11-19
US20040078782A1 (en) 2004-04-22
WO2002079973A3 (en) 2003-09-18
CN1291315C (zh) 2006-12-20
AU2002237437A1 (en) 2002-10-15
JP3851272B2 (ja) 2006-11-29
US7349970B2 (en) 2008-03-25

Similar Documents

Publication Publication Date Title
KR100579015B1 (ko) 유상태 프로그램 엔터티의 작업량 관리
US7814065B2 (en) Affinity-based recovery/failover in a cluster environment
EP2288997B1 (en) Distributed cache arrangement
US5687372A (en) Customer information control system and method in a loosely coupled parallel processing environment
EP1015983B1 (en) Data sharing method and computer architecture
US6026428A (en) Object oriented thread context manager, method and computer program product for object oriented thread context management
US6272491B1 (en) Method and system for mastering locks in a multiple server database system
CA2522096C (en) Concurrent access of shared resources
US6192514B1 (en) Multicomputer system
US8176256B2 (en) Cache regions
US6598094B1 (en) Method and apparatus for determining status of remote objects in a distributed system
US7246167B2 (en) Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections
US5442785A (en) Method and apparatus for passing messages between application programs on host processors coupled to a record lock processor
US7434087B1 (en) Graceful failover using augmented stubs
WO2003014956A1 (en) Grouping services in a distributed computing application
US20030225928A1 (en) Method, system, and program for managing access to a device by device specific components and operating system specific components
US5226176A (en) System for selectively aborting operation or waiting to load required data based upon user response to non-availability of network load device
KR20020013401A (ko) 클러스터링된 컴퓨터 시스템을 위한 통합 프로토콜
US5682507A (en) Plurality of servers having identical customer information control procedure functions using temporary storage file of a predetermined server for centrally storing temporary data records
US5790868A (en) Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment
US20090100436A1 (en) Partitioning system including a generic partitioning manager for partitioning resources
US5630133A (en) Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment
KR20050029202A (ko) 스토리지 영역 네트워크에서의 비동기 메시징 처리를 위한시스템 및 방법
US6959440B1 (en) Dynamic removal of a driver stack when a parent driver uses a child driver
JP2002505465A (ja) 分散処理システムにおいて記憶領域をリースするための方法及びシステム

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

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140423

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150424

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee