KR20140010960A - 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법 및 시스템 - Google Patents

다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법 및 시스템 Download PDF

Info

Publication number
KR20140010960A
KR20140010960A KR1020137024736A KR20137024736A KR20140010960A KR 20140010960 A KR20140010960 A KR 20140010960A KR 1020137024736 A KR1020137024736 A KR 1020137024736A KR 20137024736 A KR20137024736 A KR 20137024736A KR 20140010960 A KR20140010960 A KR 20140010960A
Authority
KR
South Korea
Prior art keywords
application server
user
application
session
transaction
Prior art date
Application number
KR1020137024736A
Other languages
English (en)
Other versions
KR101636601B1 (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 KR20140010960A publication Critical patent/KR20140010960A/ko
Application granted granted Critical
Publication of KR101636601B1 publication Critical patent/KR101636601B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0603Catalogue ordering
    • 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
    • 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
    • G06Q50/14Travel agencies
    • 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

분산 환경에서 사용자 세션의 일관된 뷰를 사용자에게 제공하는 컴퓨터 실행 방법에 관한 발명이다. 본 발명의 방법은, 해당 사용자 세션에 대한 사용자 컨텍스트의 부분을 저장하는 데이터 저장 수단을 갖는 애플리케이션 서버(A1, A2, ...)를 구비하여, 각 사용자 세션에 대해, 사용자 세션과 연관성을 갖는 각 애플리케이션 서버(A3, B8, C4)들로 이루어진 그룹을 정의한다. 각 애플리케이션 서버는 해당 사용자 세션 필요한 소프트웨어 애플리케이션을 처리하도록 구성된다. 라우팅 수단(10, 11, 12)에서는 적어도 하나의 데이터 프로세서가, 사용자로부터 요청을 수신하고 이 요청을 수행하기 위해, 사용자 세션의 트랜잭션을, 사용자 세션과 연관성을 갖는 애플리케이션 서버(A1, A2, ...)로 라우팅하는 단계, 특정 소프트웨어 애플리케이션에 대해서 사용자 세션과 연관성을 갖는 애플리케이션 서버를 가리키는 연관성 키를 포함하도록 구성된 상관관계 레코드(DCX)를 사용자 세션에 할당하는 단계, 라우팅 수단(10, 11, 12)이, 사용자 세션의 사용자 컨텍스트와 연계되고 트랜잭션을 처리하는 데 적합한 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버(A3, B8, C4)를 대상으로 정하도록 상관관계 레코드를 각 트랜잭션과 함께 전파하는 단계를 포함하는 점을 특징으로 한다.

Description

다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법 및 시스템 {METHOD AND SYSTEM FOR PROVIDING A SESSION INVOLVING A PLURALITY OF SOFTWARE APPLICATIONS}
본 발명은 분산 컴퓨팅 환경에서 소프트웨어 애플리케이션의 사용자에게, 개설된 각 세션의 일관된 뷰(view)를 제공하는 시스템에 관한 것이다. 보다 구체적으로, 본 발명은 매우 많은 수의 사용자 세션이 동시에 개설될 수 있고, 각 사용자 세션은 이를 완수하기 위해 다양한 소프트웨어 애플리케이션의 협력이 필요한 방법 및 시스템에 관한 것이다.
일상 생활에서 전자 서비스(e-service)를 사용하는 사람들의 수가 매일 증가함에 따라, 이러한 전자 서비스를 제공하는 시스템은 항상 늘어나고 있는 사용자 세션을 처리해야 한다. 또한 사용자는 이제, 제공받는 정보와 서비스가 점점 더 효율적이고 정교하게 될 것을 기대하고 있다. 이 목표를 달성하기 위해, 각 사용자 세션에 대한 트랜잭션은 종종, 별개의 소프트웨어 애플리케이션들에 의해 처리될 필요가 있다.
예를 들어, 여행 및 관광 산업에서, 예약 시스템은 동시에 개설된 수만 건의 사용자 세션과 이용가능한 항공편을 확인하려는 요청을 처리해야 한다. 상기 사용자 세션에 사용자가 제공하는 정보에는 일반적으로 출발일, 출발지, 및 항공편 목적지가 포함된다. 이들은 또한, 해당 세션에 대한 사용자 컨텍스트의 부분을 구성하는데, 여기에는 또한, 이용가능성에 관한 정보, 가격, 항공편 참조수단 등과 같이, 세션에 의해 처리되는 각종 트랜잭션을 통해 수집된 데이터가 포함된다.
충분한 처리량을 유지하기 위해, 하나의 매우 강력한 처리 장치를 갖는 중앙 집중식 컴퓨팅 시스템을 기반으로 하는 몇 가지 방안이 있다. 그러나 이러한 중앙 집중식 시스템은, 새로운 추가 애플리케이션의 분배 측면 및 처리 용량의 증가 측면 모두에서 거의 확장이 어렵다. 또한 중앙 처리 장치의 오류에 의해 전반적인 가동중단이 일어날 수 있기 때문에, 이러한 시스템은 신뢰할 수 없다.
다른 방안으로는 분산 시스템을 이용하는 것이다. 여기서, 전체 처리 용량은 분산된 다수의 장치에 걸쳐서 분산된다. 그러나, 이러한 기존의 분산 시스템에서는 특정 사용자 세션에만 전담된 모든 트랜잭션이 여전히 단일 시스템에 의해 관리되고 있다.
확장성(Scalability)은 단순히 컴퓨터의 수를 늘림으로써 달성되는데, 이로써, 처리 요구량을 충족하는 데에 시스템의 전체 처리 용량을 간단히 이용할 수 있다.
그러나 이러한 분산 시스템에서는, 이미 로딩된 소프트웨어 애플리케이션과의 상호 작용을 하도록 의도된 새로운 소프트웨어 애플리케이션을 기반으로 할 경우에는, 사용자 측에서 일관성을 항시 유지하면서도 새로운 서비스의 통합을 관리하기에 어려운 점이 남게 된다.
따라서, 사용자측에서 일관되고 통일된 뷰를 유지할 수 있도록, 새로운 소프트웨어 애플리케이션을 모든 단일 시스템에 대해서 로딩해야 한다. 그러나 이는, 시간이 걸리는 작업인 것일 뿐만 아니라, 로딩 단계가 전체 분산 시스템에 걸쳐서 완료될 때까지는 모든 사용자 간에 일관성을 현실적으로 이룰 수 없다
따라서, 본 발명의 목적은, 처리 용량의 확장성을 허용하면서 그리고 새로운 서비스의 통합을 용이하게 하면서도, 사용자에게 세션의 통일된 뷰를 제공할 수 있는 방법과 시스템을 제공하는 것이다.
본 발명의 실시예에 따라, 상기 및 기타 목적은 적어도 부분적으로 성취되며, 그 밖의 이득도 실현된다.
본 발명은, 컴퓨터화된 사용자 세션(user session)을 사용자에게 통일된 뷰(view)로 제공하는 방법에 관한 것으로서, 여기서, 사용자 세션은 시스템에서 처리되는 다수의 소프트웨어 애플리케이션의 연산을 필요로 하며, 시스템은 사용자에 의해 클라이언트/서버 모드로 운용되고, 다수의 각 소프트웨어 애플리케이션은 사용자 세션에 연관된 사용자 컨텍스트(user context)의 최소한 일부분에 연계된다. 또한 방법은 적어도 하나의 프로세서에서 수행되는 이하의 단계를 포함하는 것을 특징으로 한다.
- 사용자 컨텍스트의 최소한 일부에 연계되어 있는 각 소프트웨어 애플리케이션을, 해당 소프트웨어 애플리케이션을 각각 독립적으로 처리하는 애플리케이션 서버 그룹 중의 전담 애플리케이션 서버가 각 사용자 세션에 대해 처리함으로써, 각 세션에 대해, 사용자 세션과의 연관성(affinity)을 각각 갖는 애플리케이션 서버들의 집합을 정의하는 단계,
- 사용자 세션과의 연관성을 각각 갖는 애플리케이션 서버에, 상기 각 애플리케이션 서버에 의해 처리되는 애플리케이션 소프트웨어에 연계된 사용자 컨텍스트 부분(part of user context)을 저장하도록 구성된 데이터 저장 수단과 함께 사용자 세션을 제공하는 단계,
- 하나 이상의 라우팅 수단(routing means)에서 -- 이들 하나 이상의 라우팅 수단 중에서 하나는 사용자 세션을 담당하는 메인 라우팅 수단임 -- 최소한의 사용자 요청을 수신하고, 이 요청을 수행하기 위해 사용자 세션의 트랜잭션을, 최소한, 사용자 세션과 연관성을 갖는 애플리케이션 서버로 라우팅하는 단계. 이 트랜잭션 라우팅 단계는 이하의 단계를 포함한다.
o 특정 소프트웨어 애플리케이션에 대해서 사용자 세션과 연관성을 갖는 애플리케이션 서버를 가리키는 연관성 키(Affinity Key)를 포함하도록 구성된 상관관계 레코드(correlation record) DCX를 사용자 세션에 할당하는 단계,
o 라우팅 수단이, 사용자 세션과 연관성를 갖고 트랜잭션을 처리하는 데 적합한 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버를 대상으로 정하도록(targeting) 상관관계 레코드를 각 트랜잭션과 함께 전파하는 단계.
본 발명의 다른 측면은 사용자 세션을 사용자에게 제공하는 방법에 관한 것으로서, 여기서, 사용자 세션은, 사용자에 의해 클라이언트/서버 모드로 운용되는 시스템에서 처리되는 다수의 소프트웨어 애플리케이션의 연산을 필요로 하며, 소프트웨어 애플리케이션드 중의 적어도 하나는 사용자 세션에 연관된 사용자 컨텍스트의 최소한 일부분에 연계된다. 이 방법은, 사용자 세션에 대해서, 상기 각 소프트웨어 애플리케이션을 각각 독립적으로 처리하는 애플리케이션 서버 그룹 중 하나의 애플리케이션 서버에 의해 각 소프트웨어 애플리케이션이 처리되는 것, 사용자 컨텍스트의 부분에 연계된 소프트웨어 애플리케이션을 처리하는 각 애플리케이션 서버가 사용자 컨텍스트에 연계되는 것, 즉, 세션과의 연관성을 가지며 사용자 컨텍스트의 부분을 저장하도록 구성된 데이터 저장 수단이 구비되는 것을 특징으로 한다. 본 방법은 적어도 하나의 프로세서에서 수행되는, 특정 소프트웨어 애플리케이션에 대해서 그리고 상기 사용자 세션에 대해서 대상으로 정해야 할 애플리케이션 서버를 가리키는 연관성 키를 포함하도록 구성된 상관관계 레코드(DCX)를 사용자 세션에 할당하는 단계를 포함한다. 본 방법은 또한 프로세서를 이용하여 하나 이상의 라우팅 수단들(이 중에서 하나는 사용자 세션을 담당하는 메인 라우팅 수단이 됨) 중의 하나에서 수행되는, 트랜잭션을 수신하는 단계, 트랜잭션에 의해 호출되는 소프트웨어 애플리케이션을 결정하는 단계, 트랜잭션을 사용자 컨텍스트에 연계된 애플리케이션 서버로 라우팅해야 할지를 결정하는 단계, 트랜잭션에 의해 호출되는 소프트웨어 애플리케이션을 결정하되,
o 트랜잭션이 사용자 컨텍스트에 연계된 애플리케이션 서버로 라우팅되어야 할 경우에,
- 호출된 소프트웨어 애플리케이션에 대한 연관성 키가 상관관계 레코드에 있는 경우에는, 그 연관성 키에 따라 트랜잭션을 라우팅하고.
- 호출된 소프트웨어 애플리케이션에 대한 연관성 키가 상관관계 레코드에 없는 경우에는, 라우팅 수단들 중 하나는 애플리케이션 서버 그룹 중에서, 호출된 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버를 선택하고, 선택한 애플리케이션 서버를 가리키는 연관성 키로써 상관관계 레코드를 보강(enrich)하고, 선택한 애플리케이션 서버로 트랜잭션을 라우팅하며 메인 라우팅 수단은 이 상상관관계 레코드을 저장하는 단계를 포함한다.
선택사항으로서, 트랜잭션을 사용자 컨텍스트에 연계된 애플리케이션 서버로 라우팅할 필요가 없는 경우에는, 라우팅 수단은 애플리케이션 서버 그룹 중에서, 호출된 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버를 선택하고, 이 애플리케이션 서버로 트랜잭션을 라우팅하는 것이 바람직하다.
선택사항으로서, 트랜잭션을 수신하는 단계는, 사용자로부터 트랜잭션을 수신하는 것이 바람직하다. 선택사항으로서, 트랜잭션을 수신하는 단계는, 소프트웨어 애플리케이션으로부터 트랜잭션을 수신하는 것이 바람직하다.
본 발명의 또 다른 측면은 이상의 방법의 실행을 포함하는 연산을 수행하는 하나 이상의 데이터 프로세서에 의하여 실행되는 소프트웨어 프로그램 명령어가 기록된, 컴퓨터 판독가능한 비일시적 기록 매체에 관한 것이다.
또 다른 측면에 따르면, 본 발명은 이상의 기능과 단계들 중 하나의 방법을 실행하도록 구성된 수단을 포함하는 시스템에 관한 것이다.
본 발명의 또 다른 측면은, 사용자에게 사용자 세션을 제공하는 시스템에 있어서, 이 사용자 세션을 제공하는 데 필요한 연산을 하는 다수의 소프트웨어 애플리케이션이 포함되고, 이 소프트웨어 애플리케이션 중의 적어도 하나는, 사용자 세션에 관련된 사용자 컨텍스트의 최소한 일부에 연계되며, 이 시스템은 아래의 요소들, 즉,
- 각자, 프로세서를 최소한 포함하는 다수의 기계,
- 기계 상에서 각자 실행되는 다수의 애플리케이션 서버 -- 각 애플리케이션 서버는, 애플리케이션 서버들의 그룹 중, 해당 소프트웨어 애플리케이션을 전담하는 하나의 애플리케이션 서버에 의해 각 사용자 세션에 대해 처리함으로써 각 세션에 대해, 사용자 세션과의 연관성을 각각 갖는 애플리케이션 서버들의 집합을 정의하도록 구성됨,
- 사용자 컨텍스트 부분에 연계된 소프트웨어 애플리케이션을 처리하는 각 애플리케이션 서버에 연계된 데이터 저장 수단 -- 각 데이터 저장 수단은 이 데이터 저장 수단에 연계된 애플리케이션 서버에 의해 처리되는 소프트웨어 애플리케이션에 연계된 사용자 컨텍스트 부분을 저장하도록 구성됨,
- 하나 이상의 라우팅 수단 -- 이들 중에서 메인 라우팅 수단은 사용자 세션을 담당하도록 구성되고, 이들 하나 이상의 라우팅 수단은 최소한 사용자 요청을 수신하고, 이 요청을 수행하기 위해 사용자 세션의 트랜잭션을 사용자 세션과 연관성을 갖는 애플리케이션 서버로 라우팅하도록 구성되고,
이 라우팅 수단의 트랜잭션 단계는,
o 특정 소프트웨어 애플리케이션에 대해서 사용자 세션과 연관성을 갖는 애플리케이션 서버를 가리키는 연관성 키를 포함하도록 구성된 상관관계 레코드(DCX)를 사용자 세션에 할당하는 단계,
o 라우팅 수단이, 사용자 세션과 연관성을 갖고 트랜잭션을 처리하는 데 적합한 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버(A3, B8, C4)를 대상으로 정하도록 상관관계 레코드를 각 트랜잭션과 함께 전파하는 단계를 포함하여 구성되는 점을 특징으로 한다.
본 발명의 실시예의 상술한 측면 및 다른 측면들은 첨부 도면과 함께 이하의 상세한 설명을 통해서 더욱 분명해질 것이다.
도 1은 본 발명의 실시예에 따른 시스템의 예를 나타낸다.
도 2는 본 발명의 또 다른 실시예에 따른 시스템의 예를 나타낸다. 예시적인 사용 사례가 도시되어 있다.
도 3은 도 2의 시스템 및 다른 예시적 사용 사례를 나타내는데, 사용자 컨텍스트의 부분의 수명기간을 사용자 세션의 수명기간에 연계시키는 단계를 나타내고 있다.
도 4는 연관성 초기화 단계를 나타내는 시스템의 일부 구성요소의 높은 단계의 개략 블록도이다.
도 5는 예시적 사용 사례를 나타내는 시스템의 일부 구성요소의 높은 단계의 개략 블록도이다.
몇 가지 유리한 기능 및 단계에 대해서 아래에서 설명한다. 몇 가지 예시적 실시예 및 사용 사례에 대해서 도면을 참조하여 더 상세하게 설명할 것이다.
앞에서 나타낸 것과 같이 본 발명은, 컴퓨팅 사용자 세션을 사용자에게 통일된 뷰로서 제공하는 방법에 관한 것으로서, 이 사용자 세션은 시스템에서 처리되는 다수의 소프트웨어 애플리케이션의 연산을 필요로 하며, 이 시스템은 사용자에 의해 클라이언트/서버 모드로 운용되고, 다수의 각 소프트웨어 애플리케이션은 사용자 세션에 연관된 사용자 컨텍스트의 최소한 일부분에 연계된다. 이 방법은 적어도 하나의 프로세서에서 수행되는 이하의 단계를 포함한다.
- 사용자 컨텍스트의 최소한 일부에 연계되어 있는 각 소프트웨어 애플리케이션을, 해당 소프트웨어 애플리케이션을 각각 독립적으로 처리하는 애플리케이션 서버 그룹 중의 전담 애플리케이션 서버가 각 사용자 세션에 대해 처리함으로써, 각 세션에 대해, 사용자 세션과의 연관성(affinity)을 각각 갖는 애플리케이션 서버들의 집합을 정의하는 단계,
- 사용자 세션과의 연관성을 각각 갖는 애플리케이션 서버에, 상기 각 애플리케이션 서버에 의해 처리되는 애플리케이션 소프트웨어에 연계된 사용자 컨텍스트 부분을 저장하도록 구성된 데이터 저장 수단과 함께 사용자 세션을 제공하는 단계,
- 하나 이상의 라우팅 수단에서 -- 이들 하나 이상의 라우팅 수단 중에서 하나는 사용자 세션을 담당하는 메인 라우팅 수단임 -- 최소한 사용자 요청을 수신하고, 이 요청을 수행하기 위해 사용자 세션의 트랜잭션을 사용자 세션과 연관성을 갖는, 최소한 애플리케이션 서버로 라우팅하는 단계로, 상기 트랜잭션 라우팅 단계는 이하의 단계를 포함한다.
o 특정 소프트웨어 애플리케이션에 대해서 사용자 세션과 연관성을 갖는 애플리케이션 서버를 가리키는 연관성 키를 포함하도록 구성된 상관관계 레코드 DCX를 사용자 세션에 할당하는 단계,
o 라우팅 수단이, 사용자 세션과 연관성을 갖고 트랜잭션을 처리하는 데 적합한 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버를 대상으로 정하도록 상관관계 레코드를 각 트랜잭션과 함께 전파하는 단계.
따라서, 각 서비스 그룹은 독립적인 애플리케이션 서버 집합에서 처리되는데, 각 애플리케이션 서버는 독립적인 기계에 의해 실행될 가능성이 크고, 서비스 그룹과 관련된, 사용자 컨텍스트의 각 부분은 해당 서비스 그룹을 담당하는 애플리케이션 서버들 중 하나에 로컬로 저장되고, 각 사용자는 이 시스템이 마치 오직 하나의 애플리케이션 서버였던 것처럼 시스템과 상호 작용한다. 아마 많은 수일 가능성이 큰 서버들을 통해 분산되어 있는 사용자 컨텍스트의 각 부분들에 상관 관계를 주기 위하여, 시스템에 들어오는 각 트랜잭션에 DCX가 추가된다. 연관성 키는, 어느 애플리케이션 서버(기계)가 특정 서비스 집합에 대한 사용자 컨텍스트 부분을 보유하고 있는지를 식별하기 위한 고유 정보이다. 따라서 연관성 키는 ESB가 사용하여, 사용자의 컨텍스트를 관리하는 특정 애플리케이션 서버로 트랜잭션을 라우팅하기 위한 것이다.
따라서 본 발명은 처리 용량을 편리하게 증가시키기 위한 시스템의 모듈화 및 새로운 서비스/상품을 쉽게 통합할 수 있으면서, 사용자 컨텍스트의 일관되고 통일된 뷰를 제공하는 방안을 개시한다.
본 발명은 또한, 여러가지 소프트웨어 애플리케이션을 포함하는 일반적인 상품의 각 하위 구성요소에 할당된 자원들을 용이하게 제어할 수 있기 때문에, 그 운용에 있어서 큰 이점을 준다. 또한 특정 기계 또는 기계들의 집합의 고장이 다른 시스템에 큰 영향을 주지 않기 때문에, 전체적인 고장 발생의 위험을 최소화 할 수 있다.
모든 애플리케이션 서버는 서로 독립적이며 서로를 알지 못한다. 라우팅 수단이 읽은 상관관계 레코드만이, 다른 소프트웨어 애플리케이션을 처리하는 두 애플리케이션 서버 사이의 대화를 개설할 수 있다. 따라서, 연관성 키가, 상관관계 레코드에 부가된 참조수단이 되며, 라우팅 수단으로 하여금 사용자 컨텍스트의 사용자 세션에 연계된 부분을 보유하고 트랜잭션의 처리에 적합한 애플리케이션 서버를 대상으로 정할 수 있도록 한다.
선택사항으로서 본 발명은 이하의 비한정적인 기능과 단계들 중 적어도 하나를 포함할 수 있다.
상기 하나 이상의 라우팅 수단은 모든 단일 애플리케이션 서버에 도달하는 방법을 알도록 구성된다.
따라서 하나 이상의 라우팅 수단은 각 애플리케이션 서버의 존재와 각 애플리케이션 서버가 어디에 위치하는지를 알고 있다. 하나 이상의 라우팅 수단은 또한, 어느 애플리케이션 서버에 대해서 특정 소프트웨어 애플리케이션이 처리되는지를 알고 있다.
바람직하게는, 상관관계 레코드는 메인 라우팅 수단에 연계된 데이터 저장 수단에 저장된다.
메인 라우팅 수단은 사용자 요청을 수신하는 라우팅 수단이다. 연관성 키는 라우팅 수단에 의해 설정된다.
라우팅 수단은 엔터프라이즈 서비스 버스(ESB)이다.
라우팅 수단은 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버로부터, 사용자 세션에 할당된 상관관계 레코드와 트랜잭션을 수신하고, 다른 소프트웨어 애플리케이션을 전담 처리하는 다른 애플리케이션 서버로 이 트랜잭션을 라우팅한다. 이 트랜잭션 라우팅 단계에는 라우팅 수단이 상관관계 레코드를 읽는 단계가 포함된다.
상기 라우팅 수단에서 상관관계 레코드를 수신한 때에, 이 상관관계 레코드에, 트랜잭션이 라우팅되어야 할 상기 다른 애플리케이션 서버를 가리키는 연관성 키가 포함되지 않은 경우에, 상기 라우팅 수단이 다른 애플리케이션 서버에 트랜잭션을 라우팅하는 단계에는, 라우팅 수단이 상기 다른 소프트웨어 애플리케이션에 연계된 사용자 세션 부분의 수명기간을 사용자 세션의 수명기간에 연계해야 할지를 결정하는 단계가 추가로 포함된다.
상기 라우팅 수단에서 상관관계 레코드를 수신한 때에, 이 상관관계 레코드에, 트랜잭션을 라우팅해야 할 상기 다른 애플리케이션 서버를 가리키는 연관성 키가 포함되어 있지 않으며 상기 다른 소프트웨어 애플리케이션에 연계된 사용자 세션 부분의 수명기간을 사용자 세션의 수명기간에 연계해야 할 경우에는, 상기 라우팅 수단이 다른 애플리케이션 서버에 트랜잭션을 라우팅하는 단계에는,
- 상기 라우팅 수단이 메인 라우팅 수단으로 연관성 초기화 요청을 전송하는 단계,
- 메인 라우팅 수단이,
o 애플리케이션 서버 그룹 중에서 상기 다른 소프트웨어 애플리케이션을 처리하는 상기 다른 애플리케이션 서버를 선택하고,
o 상기 다른 애플리케이션 서버로 연관성 초기화 메시지를 전송하고,
o 상기 다른 애플리케이션으로부터 연관성 초기화의 확인을 수신하고,
o 상기 다른 애플리케이션 서버를 가리키는 연관성 키로써 상관관계 레코드를 보강하고,
o 보강된 상관관계 레코드를 상기 라우팅 수단으로 전송하는 단계,
- 보강된 상관관계 레코드의 연관성 키에 따라 상기 라우팅 수단이 상기 다른 애플리케이션 서버로 트랜잭션을 라우팅하는 단계가 추가로 포함된다.
상기 라우팅 수단에서 상관관계 레코드를 수신한 때에, 이 상관관계 레코드에, 트랜잭션이 라우팅되어야 할 상기 다른 애플리케이션 서버를 가리키는 연관성 키가 포함되어 있지 않으며 상기 다른 소프트웨어 애플리케이션에 연계된 사용자 세션 부분의 수명기간을 사용자 세션의 수명기간에 연계할 필요가 없는 경우에, 상기 라우팅 수단이 상기 다른 애플리케이션 서버에 트랜잭션을 라우팅하는 단계에는, 상기 라우팅 수단이, 애플리케이션 서버 그룹 중에서, 처리해야 할 상기 다른 소프트웨어 애플리케이션을 처리하는 상기 다른 애플리케이션 서버를 선택하고 상기 다른 애플리케이션 서버에 트랜잭션을 라우팅하는 단계가 포함된다.
바람직하게는, 상관관계 레코드는 상기 다른 애플리케이션 서버를 가리키는 연관성 키로써 보강된다.
상관관계 레코드는 상기 라우팅 수단에 의해 보강되며, 이 상관관계 레코드는 응답 경로를 통해서 메인 라우팅 수단으로 반환되어 이 메인 라우팅 수단에 연계된 데이터 저장 수단에 저장된다. 상관관계 레코드를 보강하는 라우팅 수단과 메인 라우팅 수단은 서로 다른 것이다. 다른 방식의 실시예에 따르면, 상관관계 레코드를 보강하는 라우팅 수단과 메인 라우팅 수단은 동일하다.
상기 라우팅 수단에서 상관관계 레코드를 수신한 때에, 이 상관관계 레코드에, 트랜잭션이 라우팅되어야 할 상기 다른 애플리케이션 서버를 가리키는 연관성 키가 이미 포함된 경우에는, 상기 라우팅 수단은 연관성 키에 따라 상기 애플리케이션 서버로 트랜잭션을 라우팅한다.
애플리케이션 서버는 라우팅 수단으로부터 트랜잭션을 수신하고, 트랜잭션의 처리를 통해서 사용자 컨텍스트의 부분을 생성하고, 상기 애플리케이션 서버에 구비된 데이터 저장 수단에 이 사용자 컨텍스트 부분을 저장한다.
애플리케이션 서버는 상기 애플리케이션 서버로부터 상기 사용자 컨텍스트 부분을 검색할 수 있도록 하는 적용 컨텍스트 키로써 상관관계 레코드를 보강한다.
따라서 적용 컨텍스트 키는 소프트웨어 애플리케이션에 연계된 상기 사용자 컨텍스트 부분이 상기 애플리케이션 서버에 위치하는 곳을 가리키는 참조수단이 된다.
적용 컨텍스트 키로써 보강된 상관관계 레코드는 응답 경로를 통해서 메인 라우팅 수단으로 전송되어 이 메인 라우팅 수단에 연계된 데이터 저장소에 저장된다.
상기 사용자 세션에 관련된 또다른 트랜잭션을 상기 애플리케이션 서버에서 수신하면, 상기 애플리케이션 서버는 적용 컨텍스트 키를 기반으로 하여 상기 데이터 저장 수단에서 상기 사용자 컨텍스트 부분의 위치를 찾는다. 그리고 상기 사용자 컨텍스트 부분을 추가로 검색하여 처리한다. 이로써, 사용자 컨텍스트의 모든 부분을, 이들이 위치하는 곳이라면 어디든 용이하게 검색할 수 있다.
상관관계 레코드는 각 트랜잭션에 의해 전파된다. 상관관계 레코드는, 라우팅 수단으로 하여금, 사용자 세션의 컨텍스트 부분을 보유하고 있는 애플리케이션 서버를 대상으로 정할 수 있도록 연관성 키를 사용하여 라우팅 수단이 보강한다. 상관관계 레코드는 또한, 각 애플리케이션 서버로 하여금, 자신의 저장 수단에 저장된 사용자 컨텍스트 부분을 검색할 수 있도록 적용 컨텍스트 키를 사용하여 애플리케이션 서버가 보강한다. 상관관계 레코드를 새로운 연관성 키 또는 새로운 적용 컨텍스트 키로 보강할 때마다, 상관관계 레코드는 메인 라우팅 수단으로 반환된다.
소프트웨어 애플리케이션에 연계된 사용자 컨텍스트 부분의 수명기간을 사용자 세션의 수명기간에 연계해야 할 경우에, 메인 라우팅 수단과, 상기 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버 사이에, 사용자 세션이 활성상태인 때에 한해서 상태기반 대화가 개설된다. 이 상태기반 대화는 사용자 세션 종료시에 자동으로 폐쇄된다.
사용자 세션이 활성상태인 한, 메인 라우팅 수단은 정기적으로, 사용자 컨텍스트의 상기 부분을 저장상태로 유지해야 한다는 것을 상기 애플리케이션 서버에 알려주는 것이 유리하다.
메인 라우팅 수단은, 상기 다른 소프트웨어 애플리케이션에 연계된 사용자 컨텍스트의 상기 부분을 삭제할 수 있다는 것을 상기 애플리케이션 서버에 알려준다.
소프트웨어 애플리케이션에 연계된 사용자 컨텍스트 부분은 사용자에 의해서 그리고/또는 상기 사용자 컨텍스트 부분을 저장하는 데이터 저장 수단을 포함하는 애플리케이션 서버에 연계된 소프트웨어 애플리케이션에 의해서 생성될 수 있다. 소프트웨어 애플리케이션에 연계된 사용자 컨텍스트 부분도 또한, 소프트웨어 애플리케이션에 의해 필요로 하거나 생성될 수 있다.
특정 애플리케이션 서버의 각 데이터 저장 수단은, 다른 애플리케이션 서버의 데이터 저장 수단과 다른 것이다.
애플리케이션 서버는, 프로세서와 데이터 저장 수단을 포함하는 기계에서 실행된다. 일 실시예에 따르면, 최소한, 다수의 애플리케이션 서버가 동일한 기계에서 실행된다. 다른 실시예에 따르면, 각 기계마다 하나의 애플리케이션 서버가 실행된다.
일반적으로, 세션을 통해서 여행 상품의 가용성 확인, 여행 상품의 예약, 또는 여행 상품에 대한 결제 중 적어도 하나를 행할 수 있다. 예를 들어, 사용자 컨텍스트의 부분은 여행 상품의 가용성에 관련된 것일 수 있다. 일반적으로 여행 상품은 항공, 철도, 또는 선박 수송용 티켓이다. 사용자 컨텍스트의 부분은 또한, 여행 승객명 레코드(PNR)에 관련될 수도 있다.
본 발명의 상황에서, 사용자 세션이란, 처리되어야 할 하나 이상의 소프트웨어 애플리케이션을 필요로 하는 서비스를 사용자에게 제공하는 세션으로 간주할 수 있다.
예를 들어, 사용자 세션 동안에 사용자는, 열차 티켓의 가용성 정보에 관련된 서비스 및 항공 티켓의 가용성 정보에 관련된 서비스에 액세스한다. 이들 각 서비스는 소프트웨어 애플리케이션의 연산을 필요로 하는데, 이들 소프트웨어 애플리케이션의 예를 들면, 출발일 및/또는 출발지 및/또는 목적지에 관하여 사용자로부터 입력을 받는 소프트웨어 애플리케이션, 사용자 요청의 프로토콜을 다른 프로토콜로 변환하는 소프트웨어 애플리케이션, 철도 상품 데이터베이스에서 열차에 대한 가용성 데이터를 검색하는 소프트웨어 애플리케이션, 항공 상품 데이터베이스에서 이용가능한 상품을 검색하는 소프트웨어 애플리케이션을 들 수 있다.
도 1에 나타낸 바와 같이, 본 발명의 시스템은 최소한, 사용자로부터 요청을 수신하는 라우팅(routing) 수단을 포함한다. 바람직하게는, 이 라우팅 수단은 엔터프라이즈 서비스 버스(enterprise service bus, ESB)이다. 또는, 이 라우팅 수단은 적절한 애플리케이션 서버에 트랜잭션을 라우팅할 수 있는 라우터 또는 그 밖의 수단이 될 수 있다. 이하에서는 라우팅 수단을, 엔터프라이즈 서비스 버스나 라우터 등 그 성질이 무엇이든 간에, ESB로 부르기로 한다.
각 사용자 세션에 대해서 하나의 ESB가 세션을 담당하고 있다. 이 ESB는 메인 ESB라고 부른다. 바람직하게는, 메인 ESB는 사용자로부터 요청을 수신하는 ESB이다.
바람직하게는, 이 시스템은 다수의 기계를 포함한다. 각 기계는, 최소한 애플리케이션 서버를 구동하는 처리 수단을 최소한으로 포함하는 하드웨어 장치이다. 또한 기계들 중 최소한 일부는 데이터 저장 수단을 포함한다. 최소한 애플리케이션 서버는 기계에서 실행된다. 애플리케이션 서버는 처리 수단을 사용한다. 또한 애플리케이션 서버들 중 최소한 일부는 데이터 저장 수단을 사용한다. 따라서 애플리케이션 서버는 처리 수단에 연계되어서 결국 데이터 저장 수단에 연계된다.
특정 실시예에 따르면, 다수의 애플리케이션 서버는 하나의 기계에서 실행된다. 각 애플리케이션 서버는 각자의 프로세서 수단을 사용할 수 있고, 이에 결국은 각자의 최종 데이터 저장 수단을 사용하는 것이 된다. 아니면, 다수의 애플리케이션 서버는 동일한 프로세서를 공유할 수 있고, 이에 결국은 동일한 데이터 저장 수단을 사용하는 것이 된다.
다른 실시예에 따르면, 특정 기계에서 하나의 애플리케이션 서버만이 실행된다. 따라서 이 실시예에 따르면, 기계에 트랜잭션을 라우팅한다는 것은 또한, 아래에서 설명하는 것과 같이 애플리케이션 서버에 트랜잭션을 라우팅한다는 것을 의미한다.
각 애플리케이션 서버는 소프트웨어 애플리케이션을 처리한다.
동일한 소프트웨어 애플리케이션은, 동일한 기계 또는 다른 기계에서 실행되는 다수의 애플리케이션 서버에 의해 독립적으로 처리되는 것이 유리하다.
본 시스템은 또한 플랫폼이라고 부를 수도 있다.
애플리케이션 서버는 그룹 20, 30, 40, 50으로 조직화된다.
동일한 애플리케이션 서버 그룹 내의 모든 애플리케이션 서버는 동일한 소프트웨어 애플리케이션을 처리한다. 예를 들어, 그룹 20의 각 애플리케이션 서버 A1, A2, ..., A12는 소프트웨어 애플리케이션 A를 처리한다. 그룹 30의 각 애플리케이션 서버 B1, B2, ..., B8은 소프트웨어 애플리케이션 B를 처리한다. 그룹 40의 각 애플리케이션 서버 C1, C2, C3은 소프트웨어 애플리케이션 C를 처리한다.
주어진 세션에 대해서, 소프트웨어 애플리케이션당 1대의 애플리케이션 서버가 운용된다. 따라서, 동일한 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버들의 그룹 중에서 하나의 애플리케이션 서버가 해당 주어진 세션을 전담한다.
위에서 나타낸 것과 같이, 데이터 저장이 필요한 각 애플리케이션 서버에는 데이터 저장 수단이 제공된다. 한 세션을 전담하는 애플리케이션 서버는, 이 전담 애플리케이션 서버에 의해 처리되는 소프트웨어 애플리케이션에 관련된 사용자 컨텍스트(user context)의 부분을 자신의 저장 수단에 저장한다.
본 발명에서, 사용자 컨텍스트(또는, '컨텍스트'라고도 부름)는 사용자에 관련된 컨텍스트 및 세션을 처리하는 데 적합한 컨텍스트이다. 이것은, 특정 사용자에 대해서 요청 기능(예컨대, 여행 예약 시스템에서, 활성상태의 종결 세션에 연계된 예약(쇼핑) 세션)을 수행하기 위해 시스템이 사용하는 모든 기능적 기술적 정보를 나타낸다. 사용자 컨텍스트의 부분은 사용자가 제공한 데이터(가령, 사용자의 개인 참조수단, 출발일, 출발지, 또는 목적지)일 수 있다. 사용자 컨텍스트의 이 부분은 저장 수단에 연계된 소프트웨어 애플리케이션에서 필요로 할 수 있다. 사용자 컨텍스트의 부분은 또한, 소프트웨어 애플리케이션에 의해 생성된 데이터일 수 있다. 예를 들어, 사용자 컨텍스트의 부분은, 소프트웨어 애플리케이션에 의해 검색된 항공편 이용가능성에 관련될 수도 있고 소프트웨어 애플리케이션에 의해 계산되거나 검색된 가격에 관련될 수도 있다. 사용자 컨텍스트의 부분은 또한, 승객명 레코드(PNR) 또는 PNR의 부분에 관련될 수 있다.
따라서, 사용자의 컨텍스트는 매우 많을 가능성이 큰 애플리케이션 서버에 걸쳐서 분산되고, 사용자 컨텍스트의 각 부분은 로컬에 저장된다. 도 1에 도시된 사용자 Ua의 컨텍스트는 부분 a0, a1, a2, a3를 포함하고, 애플리케이션 서버 A2, B3, C2로 배분된다. 사용자 Ub의 컨텍스트는 부분 b0, b1, b2, b3을 포함하고 애플리케이션 서버 A5, B5, C4로 배분된다. 더 정확하게 말하면, 사용자 Ua의 컨텍스트의 a1 부분은 애플리케이션 서버 A2의 데이터 저장 수단에 저장되고, 사용자 Ua의 컨텍스트의 a2 부분은 애플리케이션 서버 B3의 데이터 저장 수단에 저장된다. 사용자 Uc의 컨텍스트의 c3 부분은 애플리케이션 서버 C3의 데이터 저장 수단에 저장된다.
따라서 특정 사용자 세션을 전담하고 있는 모든 애플리케이션 서버는 해당 세션에 각각 연관성(affinity)을 갖는 애플리케이션 서버의 집합을 구성한다.
세션을 처리하고 세션의 통일된 뷰를 사용자에게 제공하기 위하여, 시스템은 해당 세션과 연관성을 갖는 모든 애플리케이션 서버를 대상으로 정해야 한다.
세션의 통일된 뷰를 사용자에게 제공한다는 것의 의미는, 사용자가 다양한 소프트웨어 애플리케이션이 독립된 다양한 애플리케이션 서버에 의해 처리되는 것을 알지 못한다는 것이다. 따라서, 세션에 관여한 소프트웨어 애플리케이션과 애플리케이션 서버의 수가 사용자에게 투명하다. 사용자는 하나의 유일한 애플리케이션 서버 및 기계인 것처럼 시스템과 상호 작용한다.
해당 애플리케이션 서버를 대상으로 정하기 위한 방안은 도 2~5를 참조하여 아래에서 자세히 설명한다.
도 1은 명확하게, 추가 애플리케이션 서버를 시스템에 추가함으로써 전체 시스템의 처리 용량을 높이는 것을 설명하고 있다. 예를 들어, 애플리케이션 서버 A9, A10, A11, A12를, 그룹 20(애플리케이션 서버 A1, A2, ..., A8이 포함)에 추가한다. 따라서, 더 많은 트랜잭션을 그룹(20)에 의해 처리할 수 있으며 처리 시간을 감소하지 않고 더 많은 수의 세션을 동시에 처리할 수 있다. 또한, 추가 애플리케이션 서버의 통합은 용이하며, 사용자에게 완전히 투명하다.
본 발명은 또한, 시스템에 새로운 서비스 또는 새로운 소프트웨어 애플리케이션을 통합할 수 있는 이점이 있다. 애플리케이션 서버 D1, D2, D3, D4의 그룹 50은, 전에 통합되어 있는 애플리케이션 서버를 처리하는 것이 아닌 새로운 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버를 통합하는 것을 설명한다. 따라서, 이미 통합되어 있는 각 개별 애플리케이션 서버에 새로운 소프트웨어 애플리케이션을 로딩하지 않고도 모든 사용자에게 추가 서비스를 제공할 수 있다. 또한, 시스템에 새로운 소프트웨어 애플리케이션을 통합하는 것은 매우 단순해서, 오직 ESB(들)만이 이 새로운 소프트웨어 애플리케이션 및 애플리케이션 서버의 존재를 알기만 하면 된다. 더 정확하게 말해서, 각각의 새로운 애플리케이션 서버를 통합 할 때에, 애플리케이션 서버 및 여기서 실행되는 소프트웨어 애플리케이션을 ESB(들)에 신고한다. 다수의 ESB가 있는 경우에는 모든 ESB가 시스템의 토폴로지를 알고 있다. 즉, 각 ESB는 각 애플리케이션 서버가 어디에 위치하는지 그리고 각 애플리케이션 서버에서 처리되는 소프트웨어 애플리케이션이 무엇인지를 알고 있다.
특정 실시예에서, 둘 이상의 애플리케이션 서버가 하나의 하드웨어 기계에서 실행된다. 하지만, ESB는 각 소프트웨어 애플리케이션을 전담하는 모든 애플리케이션 서버를 알고 있다.
이미 시스템에 있는 애플리케이션 서버의 그룹들은, 추가 애플리케이션 서버 또는 추가 소프트웨어 애플리케이션이 통합되는 것을 알 필요가 없다. 따라서, 추가 처리 용량 또는 추가 서비스를 통합하더라도 시스템의 나머지 부분에는 영향을 미치지 않고 따라서 사용자에게 투명하다.
본 발명에 의해서, 모든 사용자가 동시에 사용할 수 있는 새로운 소프트웨어 애플리케이션을 갖는 것도 또한 용이하며, 시간이 소모되지 않는다.
도시한 사용 사례의 경우, 모든 애플리케이션 서버가 사용자 컨텍스트의 부분을 보유하고 있다. 일부 실시예에서, 애플리케이션 서버는 사용자 컨텍스트의 부분을 저장하고 있지 않다. 예를 들어, 이러한 애플리케이션 서버는, 외부 공급자에게 판매(sell) 트랜잭션을 전파하는 역할을 담당하는 HTML 리소스와 같은 몇 가지 정적 데이터(static data)를 검색하는 일을 담당하고 있다.
연관성 키(Affinity Key)
사용자 세션의 통일된 뷰를 사용자에게 제공하기 위한 방안에 대해서 더 상세히 설명한다.
세션 동안에, 사용자는 동일한 ESB를 통해서 시스템에 진입한다. 바람직하게는, 진입점을 구성하는 ESB가 메인 ESB이 되며 해당 세션이 끝날 때까지 세션을 담당한다.
시스템으로 들어오는 각 트랜잭션에 대해서 메인 ESB는 레코드를 생성한다. 이 레코드는 DCX(Distributed Context Correlator, 분산 컨텍스트 상관자)라고 부른다.
DCX는 하나의 사용자 세션을 전담한다. 이는 메인 ESB에 저장된다. DCX는 참조수단을 포함한다. 참조수단은 특정의 소프트웨어 애플리케이션 또는 소프트웨어 애플리케이션 집합에 대해서 사용자 컨텍스트를 보유하는 애플리케이션 서버가 무엇인지를 식별하기 위한 것이다. 이 참조수단을 연관성 키(affinity key)라고 한다. 각 ESB가 시스템의 토폴로지를 알고 있기 때문에, ESB는 DCX의 연관성 키를 읽음으로써 세션에 연관성을 갖는 애플리케이션 서버, 즉, 사용자 컨텍스트의 부분을 저장하고 있는 데이터 저장 수단을 사용하는 애플리케이션 서버를 대상으로 정할 수 있게 된다. 따라서 사용자의 전체 컨텍스트가 많은 수의 독립된 기계들에 분산되어 있더라도, 이에 액세스가능하다.
DCX는 각 트랜잭션에 부가된다. 이는 두 애플리케이션 서버 간의 모든 트랜잭션에 종속연결(cascade)된다. 애플리케이션 서버가 다른 애플리케이션 서버를 호출할 때에, DCX는 그 해당 애플리케이션 서버로 전송된다. 이러한 트랜잭션, 즉, 애플리케이션 서버가 다른 애플리케이션 서버를 호출하는 트랜잭션을 부차 호출(collateral call) 또는 부수적 트랜잭션이라고 부른다.
바람직하게는, DCX를 받는 각 애플리케이션 서버는 이 애플리케이션 서버가 그 저장 수단에 저장되어 있는 사용자 컨텍스트의 부분을 검색할 수 있도록 추가 정보를 써서 DCX를 보강(enrich)할 수 있다. 따라서 다음 번에 이 애플리케이션 서버는 해당 세션에 대한 트랜잭션을 받게 되며, DCX의 해당 정보를 간단하게 읽음으로써 해당 세션에 대한 사용자 컨텍스트의 부분을 쉽게 검색할 수 있게 되고, 다른 애플리케이션 서버의 어디서든 그로부터 트랜잭션이 오게 된다. 본 발명에서, DCX에 저장된 이러한 1품의 정보를 적용 컨텍스트 키(applicative context key)라고 하자.
따라서, DCX는, DCX가 소속되는 세션의 참조수단을 갖는, 즉, 해당 세션 및 적용 컨텍스트 키와 연관성을 갖는 애플리케이션 서버를 대상으로 정하는 연관성 키를 포함하여, 각 애플리케이션 서버가 사용자 컨텍스트의 해당 부분을 검색하도록 한다.
적용 컨텍스트 키(Applicative Context Key)
DCX는 또한 고유 식별자를 포함한다. 특정 실시예에 따르면, 이 고유 식별자는 하위 적용 컨텍스트(sub applicative context)를 참조하는 데, 특정 참조수단 대신에 사용할 수 있다. 따라서 이 고유 식별자는, 애플리케이션 서버가 자신 소유의 적용 컨텍스트 키를 생성하고 저장하는 대신에, 묵시적 적용 컨텍스트 키로서 애플리케이션 서버가 사용할 수 있다. 이러한 경우, 애플리케이션 컨텍스트는 저장 수단 내의 고유 식별자로 색인된다. 따라서 DCX는 보다 적은 정보를 포함하면서도, 여전히 애플리케이션 서버가 사용자 컨텍스트의 자신에 해당되는 부분을 검색할 수 있도록 한다.
바람직하게는, DCX는 트랜잭션에 사용되는 통신 프로토콜과 독립적으로, 임의의 모든 트랜잭션에 사용할 수 있다.
따라서 소프트웨어 애플리케이션이 언제 호출되든지, 트랜잭션을 받은 ESB는 해당 트랜잭션을 해당 세션에 연관성을 갖는 애플리케이션 서버로 라우팅할 필요가 있는지를 결정한다.
연관성이 필요한 경우, 즉, 트랜잭션을 해당 소프트웨어 애플리케이션에 연계된 사용자 컨텍스트의 부분을 보유하는 애플리케이션 서버로 라우팅할 필요가 있는 경우에, ESB는 해당 애플리케이션 서버를 대상으로 정해야 한다. 이를 위해 ESB는 DCX의 연관성 키를 읽어서 적합한 애플리케이션 서버를 찾아낸다.
그런 다음, 상기 적합한 애플리케이션 서버는 트랜잭션과 DCX를 받게 된다. 그런 다음 트랜잭션을 처리하는 데 필요한 사용자 컨텍스트의 부분을 검색하기 위하여 애플리케이션 컨텍스트 키를 읽을 수 있다.
ESB에 도달하는 트랜잭션이 연관성을 필요로 하지 않는 경우, 이 트랜잭션은 애플리케이션 서버 그룹 중, 호출된 소프트웨어 애플리케이션을 처리하는 특정 애플리케이션 서버로 라우팅될 필요가 없다.
예를 들어, 이는 소프트웨어 애플리케이션에 대해서 일어나는데, 소프트웨어 애플리케이션이 사용자 컨텍스트의 자신의 부분을 생성하고, 이 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버가 해당 세션에 관련된 트랜잭션을 최초로 수신할 때에 일어난다. 이 최초 트랜잭션 전에는, 사용자 컨텍스트의 어떠한 부분도 상기 애플리케이션 서버에 의해 생성되지 않았다. 전형적인 예를, 애플리케이션 서버가, 주어진 파라미터, 즉, 날짜/출발지/목적지에 대해 이용가능한 항공편 검색을 목표로 하는 경우의 사용 사례에서 볼 수 있다. 이들 파라미터를 수신하기 전에는, 애플리케이션 서버는 해당 세션에 대한 컨텍스트를 전혀 보유하고 있지 않다. 그러나 최초 처리 후에, 상기 애플리케이션 서버는 검색된 항공편을 자신의 전용 저장 수단에 저장하여, 사용자 컨텍스트의 부분을 만든다.
그 다음에 연관성이 해당 애플리케이션 서버와 세션 사이에 만들어진다. 애플리케이션 서버는, 모든 ESB를 대상으로 정하도록 할 연관성 키를 써서 DCX를 보강한다. 바람직하게는, 애플리케이션 서버는 또한, 해당 세션에 대한 트랜잭션을 받은 다음에 이용가능한 항공편을 검색할 수 있도록 할 적용 컨텍스트 키를 써서 DCX를 보강한다.
DCX가 보강되면, 응답 경로를 통해 메인 ESB로 되돌려 보내어(반환) 여기에 저장되도록 한다.
연관성이 필요하지 않은 다른 예로서, 세션에 관련된 데이터를 전혀 저장할 필요가 없는 소프트웨어 애플리케이션을 든다. 예를 들어 이러한 소프트웨어 애플리케이션은 다른 프로토콜에 맞게 메시지의 형식을 변경할 수 있다. 메시지가 일단 변환되면, 메시지는 전파되지만, 포맷 변환을 수행했던 애플리케이션 서버에 저장 될 필요는 없다. 따라서 DCX는 이러한 소프트웨어 애플리케이션에 대해서는 연관성 키로 보강되지 않는다.
ESB가 트랜잭션을 수신하고 이 트랜잭션에서는 연관성이 필요치 않은 것으로 결정하면, ESB는 트랜잭션을 라우팅할 애플리케이션 서버를 정한다. 일반적으로, ESB는 부하 균형(load balancing) 또는 근접성 파라미터(proximity parameter)를 고려한다.
이하에서 본 발명을 예시적 사용 사례가 도시된 도 2를 참조하여 설명한다.
명확성을 위해, 사용자 Ua만을 도 2에 표시하였다. 세션의 시작 부분에는 사용자 컨텍스트가 없다. 본 실시예에서, 시스템은 다수의 ESB(10, 11, 12)를 포함한다. 이들 ESB는 애플리케이션 서버에서 각각의 처리가 끝난 후에 트랜잭션이 ESB에 도달하도록 구성되어 있다.
사용자 Ua가 세션을 시작하여 ESB(10)를 통해 시스템에 진입한다. 따라서 이 ESB가 해당 세션에 대한 메인 ESB가 된다. 사용자(Ua)는 사용자 컨텍스트의 부분 a0를 구성하는 정보를 메인 ESB(10)에 제공한다. 메인 ESB(10)는 사용자 컨텍스트의 부분 a0를 유지하게 된다. 일반적으로, a0는 DCX를 포함하거나, 메인 ESB에 저장된 DCX이다. ESB(10)는 소프트웨어 애플리케이션 A가 호출됨을 판단한다. ESB(10)는 연관성이 요청됨을 판단한다. 이 단계에서는 연관성이 요청되고 DCX가 소프트웨어 애플리케이션에 대한 연관성 키를 포함하고 있지 않기 때문에, ESB는 애플리케이션 서버 그룹의 애플리케이션 서버들 중 소프트웨어 애플리케이션 A를 처리하는 하나를 선택한다. 이 예에서는 애플리케이션 서버 A3가 선택된다. 메인 ESB(10)는 애플리케이션 서버 A3에 트랜잭션(트랜잭션 1)을 보낸다(단계 201). 애플리케이션 서버 A3는 트랜잭션을 처리하고, 사용자 컨텍스트의 a1 부분을 생성하고, A3가 실행되는 기계의 데이터 저장 수단에 a1을 저장한다. 메인 ESB는 또한, 소프트웨어 애플리케이션 A가 해당 세션에 대해 호출될 때에 ESB가 애플리케이션 서버 A3를 추가로 대상으로 정할 수 있도록 할 연관성 키를 써서 DCX를 보강한다. 연관성의 요청은 ESB 구성형태의 일부가 된다. ESB에 도달하는 트랜잭션의 시작지, 도달지, 및 소프트웨어 애플리케이션과 같은 트랜잭션 파라미터를 기반으로 하여, 이 ESB는 그 구성형태에 의해서, 트랜잭션을 연관성을 고려해 처리해야 할지 여부를 결정하는 것이 가능하다. 따라서, 연관성이 요청되는지 여부를 결정하기 위해 정적 정보(ESB의 구성형태)를 고려한다. DCX의 내용은 동적 정보이다.
바람직하게는, 애플리케이션 서버 A3는 DCX에, 다음 번에 해당 세션에 대한 트랜잭션을 받게 될 컨텍스트의 a1 부분을 애플리케이션 서버 A3가 쉽게 검색할 수 있도록 추가로 허용할 적용 컨텍스트 키(Application Context Key)를 DCX에 부가한다.
DCX는 다음에, 메인 ESB(10)로 돌아가고 여기에 저장된다. ESB(11)는 애플리케이션 서버 A3로부터 트랜잭션을 수신하고 소프트웨어 애플리케이션 B를 소프트웨어 애플리케이션 A가 호출하는지를 결정한다(단계 202). 이러한 호출은 부차 호출 또는 부수적 트랜잭션이다. 연관성이 소프트웨어 애플리케이션 B에 대해서 요청되지만 애플리케이션 B에 대한 DCX에는 연관성이 저장되어 있지 않으면, ESB11은 애플리케이션 서버 그룹의 애플리케이션 서버들 중 소프트웨어 애플리케이션 B를 실행하는 하나를 선택할 수 있다. ESB(11)는 애플리케이션 서버 B8을 선택하고, B8에 해당하는 연관성 키를 써서 DCX를 보강하며, 트랜잭션 1을 처리하는 데 필요한 부수적 트랜잭션은 애플리케이션 서버 B8에 도달한다. 애플리케이션 서버 B8은 이 트랜잭션을 처리하여 사용자 Ua의 컨텍스트의 부분 a2를 생성한다. 부차 호출을 통해 생성된 사용자 컨텍스트의 부분을 또한, 하위 컨텍스트(sub-context)라고도 부른다.
DCX는 애플리케이션 서버 B8에 관련된 적용 컨텍스트 키로써 보강된다.
소프트웨어 애플리케이션 A와 소프트웨어 애플리케이션 B가 수신한 호출(201, 202)과 마찬가지로, 소프트웨어 애플리케이션 C는 연관성 요청없이 호출된다(단계 203). 소프트웨어 애플리케이션 C를 처리하는 애플리케이션 서버 C4가 트랜잭션 1을 처리하기 위해 선택된다. 애플리케이션 서버 C4는 사용자 컨텍스트의 부분 a3를 생성하고 이를 자신의 데이터 저장 수단에 저장한다. DCX는 사용자 컨텍스트의 부분 a3를 검색하기 위하여 애플리케이션 서버 C4를 대상으로 정할 수 있는 연관성 키로써 보강된다. DCX는 응답과 함께 메인 ESB(10)로 되돌아간다.
메인 ESB(10)는 사용자 Ua로부터 새 트랜잭션(트랜잭션 2)을 받는다. 메인 ESB(10)는 새 트랜잭션을 처리하기 위해 소프트웨어 애플리케이션 B를 호출할 것, 그리고 연관성을 요청할 것을 결정한다. 따라서, 해당 서비스에 연계된 사용자 컨텍스트의 부분을 보유하는 서비스 B 그룹의 애플리케이션 서버를 대상으로 정해야 한다. DCX를 읽어서, 메인 ESB(10)는 해당 세션에 대한 서비스 B 그룹의 관련 애플리케이션 서버의 참조수단을 읽고 이에 따라 애플리케이션 서버 B8를 대상으로 정한다.
다음, 메인 ESB(10)는 애플리케이션 서버 B8로 새 트랜잭션을 라우팅한다(단계 204).
그런 다음 애플리케이션 서버 B8은 새로운 트랜잭션을 받아서 사용자 컨텍스트의 해당 부분 a3를 검색하고 새로운 트랜잭션을 처리하게 될 것이다.
따라서, 다양한 서버와 ESB를 상호 작용하도록 함으로써, 본 발명은 그 컨텍스트를 로컬에서 배분 및 저장하면서도 세션의 통일된 뷰를 제공하는 효율적인 방안을 제공한다.
사용자 컨텍스트 부분의 컨텍스트 수명기간
이하 본 발명의 비한정적이지만 특히 유리한 특징에 대해서 설명한다. 이들 특징은, 결국 해당 세션 중에 트랜잭션을 처리해야 할 필요가 있는 사용자 컨텍스트의 몇몇 부분들을 모든 세션 중에 사용가능상태로 유지할 수 있다. 세션이 종료 될 때, 컨텍스트의 이들 부분들은 삭제된다.
사실, 사용자 컨텍스트는 세션의 수명기간 동안에만 유효한 것이 바람직하다. 따라서, 세션의 컨텍스트는 지속되지 않으며, 세션 종료시에 컨텍스트는 더 이상 저장되지 않고 삭제된다.
예를 들어, 예약 관리를 위한 사용자 세션의 사용자 컨텍스트에 사용되는 사용자 컨텍스트의 모든 부분은 사용자 세션이 종료될 때까지만 유지된다.
분산 컨텍스트 상관자(DCX)는 사용자 세션의 전체 수명기간 동안 사용할 수 있다. 사용자 컨텍스트의 부분을 보유하는 모든 애플리케이션 서버는 자신의 컨텍스트의 수명기간을 사용자 세션의 수명기간에 연계(link)할 것을 요청할 수 있다.
사용자 컨텍스트와 사용자 세션은, DCX를 보유하는 ESB와 사용자 컨텍스트를 보유하는 애플리케이션 서버 사이의 상태기반 대화(stateful conversation)를 개설함으로써 수명기간이 서로 연계된다.
상태기반 대화를 개설하기 위한 요청은 호출된 서비스의 일부로서 ESB 구성 내에 정적으로 정의된다. 더 정확하게 말해서, ESB가 트랜잭션을 받을 때, 트랜잭션의 파라미터(가령, 시작지, 도달지, 및 호출된 소프트웨어 애플리케이션)를 분석한다. 다음, ESB는 그 구성에 의해서, 상태기반 대화를 개설해야 하는지 여부를 결정할 수 있게 된다. 동일한 메커니즘이, 트랜잭션에 연관성을 고려할지 여부를 결정하기 위해 적용된다.
한 애플리케이션 서버가, 사용자 컨텍스트의 수명기간을 DCX의 수명기간에 에 연계시키길 요하는 다른 애플리케이션 서버에서 처리되는 서비스 또는 소프트웨어 애플리케이션을 호출하는 경우, 부수적 트랜잭션의 라우팅을 담당하는 ESB는 메인 ESB를 호출하여 상기 다른 애플리케이션 서버와의 상태기반 대화를 개설할 것을 요청한다. 그 다음, 메인 ESB는 상기 다른 애플리케이션 서버와의 상태기반 대화를 개설한다. 이에, 부수적 트랜잭션의 라우팅을 담당하는 ESB는, 메인 ESB와의 사이에 상태기반 대화가 개설된 상기 다른 애플리케이션 서버로 트랜잭션을 라우팅한다.
메인 ESB와 특정 애플리케이션 서버 간의 상태기반 대화는 상기 특정 애플리케이션 서버로 트랜잭션이 진행되기 전에 개설되어야 한다. 그 이유는, 상태기반 대화가 개설되기 전에 트랜잭션이 부수적 트래픽에 의해서 특정 애플리케이션 서버로 라우팅되어야 할 경우, 부수적 트랜잭션을 라우팅하는 ESB는, 트랜잭션을 애플리케이션 서버에 라우팅하기 전에 상태기반 대화를 개설할 것을 메인 ESB에게 요청할 것이기 때문이다. 이러한 기능을 '대화의 자동 개시'라고 한다.
일단 이러한 상태기반 대화가 개설되면, DCX의 수명기간은, 메인 ESB와 상태기반 대화를 하는 애플리케이션 서버가 실행되는 기계에 저장된 사용자 컨텍스트의 수명기간에 연계된다. 상기 사용자 컨텍스트는 DCX가 없어질 때에만 삭제될 것이다.
이러한 방식에 의해서, 본 발명은 세션 동안에는 사용가능해야 할 컨텍스트의 모든 부분을 유지할 수 있고, 반면에 세션 종료시에는 데이터가 저장되는 것을 제한할 수 있다. 또한 이 방식은 애플리케이션 서버들 간의 트래픽 및 전송 데이터 양을 제한한다.
바람직한 실시예에 따르면, 상태기반 대화가 개설될 때, ESB는 그 상태기반 대화를 공유하고 있는 애플리케이션 서버로 정기적으로 메시지를 보내는데, 이 메시지는 사용자 컨텍스트를 유지해야 한다는 것을 나타낸다. 이 메시지를 "계속 유지(keep alive)" 메시지라 지칭한다. 따라서 "계속 유지" 메시지는 메인 ESB로부터, 이 메인 ESB와 상태기반 대화를 하는 모든 애플리케이션 서버로 전송된다. 세션이 종료되면, DCX가 삭제되고 메인 ESB는 상태기반 대화를 하는 모든 애플리케이션 서버로, 사용자 컨텍스트가 삭제될 수 있음을 나타내는 메시지를 전송할 수 있다. 이 메시지를 "종결(terminate)" 메시지라 지칭한다.
애플리케이션 서버 또는 기계와 사용자 컨텍스트 당, DCX를 갖는 메인 ESB로부터의 상태기반 대화는 오직 하나만이 있다. 전반적인 트랜잭션이 상태기반이라 하더라도, 모든 부수적 트랜잭션은 무상태 대화(stateless conversation)를 사용하고 있다.
도 3은 상태기반 대화를 개설해야 하는 트랜잭션의 첫 번째 예를 나타낸다.
사용자 Ua는 메인 EBS(10)에 불구하고 시스템에 요청을 보낸다. 단계 301 및 302는 도 2의 단계 201, 202와 유사하다. 애플리케이션 서버 B8이 트랜잭션을 처리 할 때에, ESB(12)는 트랜잭션을 받아서(단계 303) 라우팅을 담당하게 된다. ESB(12)는 소프트웨어 애플리케이션 B에 의해 호출된 소프트웨어 애플리케이션 C가 그 사용자 컨텍스트 부분의 수명기간을 세션의 수명기간에 연계시킬 필요가 있을지를 결정한다.
사용자 Ua에 대해서 사용자 컨텍스트의 어떠한 부분도 서비스 그룹 C의 모든 애플리케이션 서버에 존재하지 않는 경우에는, 서비스 그룹 C로의 트랜잭션 라우팅을 담당하는 ESB(12)는 DCX를 보유하는 메인 ESB(10)를 호출하여 서비스 그룹 C의 한 애플리케이션 서버와 상태기반 대화를 개설할 것을 요청한다(단계 304). 그 다음, 메인 ESB(10)는 서비스 그룹 C의 애플리케이션 서버들 중 하나의 애플리케이션 서버와의 상태기반 대화를 개설한다(단계 305). 그 다음, DCX는 선택된 애플리케이션 서버 C4의 참조수단로 보강된다. 그 다음, DCX는 부수적 트랜잭션의 라우팅을 담당하는 ESB(12)로 되돌려진다(반환). 그 다음, ESB(12)는 DCX를 읽어서 애플리케이션 서버 C4를 대상으로 정하고 메인 ESB와 상태기반 대화를 하는 애플리케이션 서버 C4로 트랜잭션을 라우팅한다(단계 306).
도 4는 상태기반 대화를 개설해야 하는 트랜잭션의 다른 예를 나타낸다.
그래픽 사용자 인터페이스(GUI)를 통해서 메인 ESB는 사용자의 요청을 받는다(단계 401). 예를 들어, 이 요청은 승객 파일을 생성하라는 것이다. 그 프로토콜은 HTML이다. 시스템에 의한 처리를 위해, 이 요청은 다른 프로토콜, 가령, EDIFACT 프로토콜로 변환해야 한다. 메인 ESB는, 요청을 변환하기 위하여, 애플리케이션 서버 그룹의 소프트웨어 애플리케이션 A를 처리하는 애플리케이션 서버를 대상으로 정할 것을 결정한다. 이 변환에는 연관성이 필요하지 않다. 다음에, 메인 ESB는 서비스 그룹 A의 애플리케이션 서버를 선택하고 이 애플리케이션 서버에 트랜잭션을 라우팅한다(단계 402). 이 애플리케이션 서버를 A1이라고 지칭하였다.
A1은 프로토콜을 변환하여 트랜잭션을 처리한다. A1에 저장해야 할 데이터는 없다. 따라서 사용자 컨텍스트의 아무 부분도 A1에서 만들어지지 않는다. 메인 ESB와 A1 사이의 대화는 무상태 대화이다.
그런 다음, 부수적 ESB가(ESB Col로 명명함) 트랜잭션을 받는다(단계 403). 부수적 ESB는 트랜잭션을, 소프트웨어 애플리케이션 B를 처리하는 애플리케이션 서버로 라우팅해야 한다고 결정한다. 부수적 ESB는 또한, 연관성의 요청을 결정하고, 후속 처리를 담당하는 애플리케이션 서버에 연계된 컨텍스트 부분의 수명기간을 세션의 수명기간에 연계될 것을 결정한다. 부수적 ESB는 DXC를 읽고 소프트웨어 애플리케이션 B에 대한 DCX에 아무 연관성도 설정하지 않음을 결정한다(단계 404). 그런 다음, 부수적 ESB는 메인 ESB를 호출하여, 소프트웨어 애플리케이션 B를 처리하는 애플리케이션 서버와의 상태기반 대화를 개설한다(단계 405). 메인 ESB는 소프트웨어 애플리케이션 B를 전담하는 애플리케이션 서버(B2로 지칭)를 선택한다. 메인 ESB는 B2에 해당하는 연관성 키로써 DCX를 보강하고(단계 406), 상기 애플리케이션 서버에 연관성 초기화(affinity initialization) 요청을 전달한다(단계 407). 따라서, B2는 자신의 사용자 컨텍스트 부분의 수명기간이 세션의 수명기간에 연계되어야 한다는 통보를 받게 된다(단계 405). B2는 자신의 데이터 저장 수단의 부분을 사용자 컨텍스트의 부분에 할당한다(단계 408). B2는 적용 컨텍스트 키로써 DCX를 보강하고 메인 ESB로 이 DCX를 되돌려 보낸다(단계 409). DCX는 메인 ESB에 저장되며, 부수적 ESB로 되돌려 전송된다(단계 410).
부수적 ESB는 원래 메시지를 검색하고, 새로운 DCX로 이를 업데이트하고, DCX의 연관성 키에 따라 애플리케이션 서버 B2를 대상으로 정한다(단계 411). 이렇게 하여 트랜잭션은 B2로 라우팅된다(단계 411). 이에, B2는 EDIFACT 프로토콜의 요청을 수신하고 이를 처리한다. 예를 들어, 이 요청에는 승객 파일을 생성하는 것이 포함될 수 있다.
B2의 사용자 컨텍스트 부분의 수명기간이 세션의 수명기간에 연계됨에 따라, 승객 파일은, 세션의 전체 수명 동안 B2에서 사용가능하며, 그 후에 삭제된다.
도 5는 본 발명의 또 다른 사용 사례를 나타낸다. 이 예시 사용 사례에서, ESB(10)는 다수의 멀티플렉서(MUX1, MUX2, MUX3)를 포함하고, 최소한, 멀티플렉서 MUX3과 연결된 서버(SRV2)를 포함한다.
단계 501에서, 사용자는 서버 SRV2로 요청을 보낸다. 서버 SRV2는 해당 세션에 대한 DCX 레코드를 만든다.
세션이 막 시작되면, 아직 사용가능한 컨텍스트는 없으며 소프트웨어 애플리케이션 A를 처리하는 애플리케이션 서버 A1이 호출되고 DCX와 함께 트랜잭션을 받는다. DCX는 해당 애플리케이션 서버 A1에 대한 연관성 키로써 보강된다. 다음, 연관성은 소프트웨어 애플리케이션 A에 대해 설정된다(단계 502). A1은 트랜잭션을 처리하고, 자신의 사용자 컨텍스트 부분을 저장하고, 적용 컨텍스트 키로 DCX를 보강한다. 예를 들어, 사용자 컨텍스트는 항공편 이용가능 여부에 관한 것이고, A1은 이용가능 항공편의 참조수단을 검색하는 것을 담당한다. 다음, DCX는 메인 ESB(10)로 되돌려 보내지고(단계 503) 저장된다(단계 504). 단계 505에서, 사용자에게는 A1의 처리 결과(이용가능 항공편의 참조수단)가 제공된다. 이로써 본 세션의 첫 번째 트랜잭션이 종료된다.
그 다음, 사용자는 다른 트랜잭션을 시작한다. 예를 들어 사용자가 트랜잭션 1을 통해 검색된 항공편의 한 좌석을 구매하려고 한다.
SRV2는 구매 요청을 수신하고(단계 506) 소프트웨어 애플리케이션 B를 호출할 것을 결정한다. 다음, 서비스 그룹 B의 애플리케이션 서버 B1로 연관성을 생성한다. DCX는 해당 애플리케이션 서버 B1으로 전송된다(단계 507). 적용 컨텍스트 키도 또한 B1에 대해서 생성된다(508). 다음, DCX는 소프트웨어 애플리케이션 B를 처리하는 애플리케이션 서버에서 오는 모든 트랜잭션의 처리를 담당하는 멀티플렉서 MUX1을 통해 종속 연결된다(단계 509). MUX1은 연관성의 요청으로써 소프트웨어 애플리케이션 A를 호출할 것을 결정한다. DCX는 MUX1으로 하여금 A1을 대상으로 정하도록 한다(단계 510). 그 적용 컨텍스트 키에 의해서, A1은 이전 트랜잭션(이용가능 항공편의 참조수단) 동안에 저장된 컨텍스트의 해당 부분을 검색한다. 다음, A1은 DCX와 함께 트랜잭션을 MUX1으로 되돌려 보낸다(단계 511). ESB는 A1으로부터의 응답을 B1으로 되돌려 보낸다(단계 512). B1은 A1에서 검색된 데이터에 의해서 트랜잭션을 처리한다. 예를 들어, 사용가능한 좌석의 가격이 책정된다. DCX는 종속 연결되고(단계 513), 메인 ESB의 처리 결과와 함께 전송된다(단계 514). DCX가 저장된다. 처리 결과가 사용자에게 제공된다(단계 515).
위의 상세한 설명과 같이, 본 발명은 처리 용량을 용이하게 증가시키기 위한 시스템의 모듈화 및 새로운 서비스/상품을 쉽게 통합할 수 있으면서, 사용자 컨텍스트의 일관되고 통일된 뷰를 제공하는 방안을 제시한다.
본 발명은 또한, 여러가지 소프트웨어 애플리케이션을 포함하는 일반 상품의 각 하위 구성요소에 할당된 자원을 용이하게 제어할 수 있기 때문에, 그 운용성에 있어서 큰 이점을 준다. 또한 특정 기계(또는 기계들의 집합) 상의 고장이 다른 시스템에 큰 영향을 주지 않기 때문에, 전체적인 고장 발생의 위험을 최소화 할 수 있다.
이상에서, 본 발명의 예시적 실시예를 구현하기 위한 다양한 방법, 장치, 및 컴퓨터 프로그램 소프트웨어에 대한 완전한 정보성 있는 내용을 예시적이며 제한적이지 않은 예를 통해서 설명하였다. 그러나 첨부 도면과 특허청구범위를 통해서, 당업자에게는 이상의 설명에 대한 많은 변형과 응용이 자명하게 된다. 하지만 몇 가지 예를 제외하고, 당업자는 다른 유사 또는 동일한 데이터 구조와 논리 흐름을 사용할 것을 시도할 수 있다. 그러나, 이 경우에도, 본 발명의 사상에 대한 이러한 변형 또는 유사 변형은 모두 본 발명의 범위에 속하는 것이다.
또한, 본 발명의 예시적 실시예의 일부 기능을 사용하여 다른 기능들의 상응한 사용을 하지 않고도 이익을 얻을 수 있다. 따라서, 이상의 설명은 단지, 본 발명의 원리, 사항, 및 구현예를 단순히 예시하는 것이지 한정하는 것이 아님을 숙고해야 한다.

Claims (20)

  1. 클라이언트/서버 모드에서 사용자에 의해 운용되는 시스템(100)에 의해 처리되는 다수의 소프트웨어 애플리케이션의 연산을 필요로 하는 사용자 세션을 사용자(1, 2, 3)에게 제공하는 방법에 있어서, 상기 다수의 소프트웨어 애플리케이션은 사용자 세션에 관련된 사용자 컨텍스트의 최소한 일부에 연계되며,
    상기 방법은 적어도 하나의 데이터 프로세서로 수행되는,
    - 사용자 컨텍스트의 최소한 일부에 연계되어 있는 각 소프트웨어 애플리케이션을, 해당 소프트웨어 애플리케이션을 각각 독립적으로 처리하는 애플리케이션 서버(A1, A2, ...)들의 그룹(20, 30, 40, 50) 중의 전담 애플리케이션 서버(A1, A2, ...)가 각 사용자 세션에 대해 처리함으로써, 각 세션에 대해, 사용자 세션과의 연관성을 각각 갖는 애플리케이션 서버(A3, B8, C4)들의 집합을 정의하는 단계;
    - 사용자 세션과의 연관성을 각각 갖는 애플리케이션 서버에, 상기 각 애플리케이션 서버에 의해 처리되는 애플리케이션 소프트웨어에 연계된 사용자 컨텍스트 부분을 저장하도록 구성된 데이터 저장 수단과 함께 사용자 세션을 제공하는 단계;
    - 하나 이상의 라우팅 수단(10, 11, 12)에서 -- 이들 하나 이상의 라우팅 수단 중에서 하나는 사용자 세션을 담당하는 메인 라우팅 수단(10)임 -- 최소한 사용자 요청을 수신하고, 이 요청을 수행하기 위해 사용자 세션의 트랜잭션을 사용자 세션과 연관성을 갖는 최소한 애플리케이션 서버(A3, B8, C4)로 라우팅하는 단계;를 포함하며,
    상기 트랜잭션 라우팅 단계는,
    o 특정 소프트웨어 애플리케이션에 대해서 사용자 세션과 연관성을 갖는 애플리케이션 서버를 가리키는 연관성 키를 포함하도록 구성된 상관관계 레코드(correlation record)(DCX)를 사용자 세션에 할당하는 단계,
    o 라우팅 수단(10, 11, 12)이, 사용자 세션과 연관성을 갖고 트랜잭션을 처리하는 데 적합한 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버(A3, B8, C4)를 대상으로 정하도록 상관관계 레코드를 각 트랜잭션과 함께 전파하는 단계
    를 포함하는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  2. 제1항에 있어서,
    하나 이상의 라우팅 수단(10, 11, 12)은 모든 단일 애플리케이션 서버(A3, B8, C4)에 도달하는 방법을 인식하도록 구성되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  3. 제1항 또는 제2항에 있어서,
    상관관계 레코드는 메인 라우팅 수단(10)에 연계된 데이터 저장 수단에 저장되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    메인 라우팅 수단(10)은 사용자로부터 요청을 수신하는 라우팅 수단(10, 11, 12)인 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    연관성 키는 라우팅 수단(10, 11, 12)에 의해 설정되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    라우팅 수단(10, 11, 12)은 엔터프라이즈 서비스 버스(ESB)인 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    라우팅 수단(10, 11, 12)은 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버로부터, 사용자 세션에 할당된 상관관계 레코드와 함께 트랜잭션을 수신하고, 다른 소프트웨어 애플리케이션을 처리하는 다른 애플리케이션 서버로 이 트랜잭션을 라우팅하는데, 상기 트랜잭션 라우팅 단계에는 상관관계 레코드를 읽는 단계가 포함되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  8. 제7항에 있어서,
    상기 라우팅 수단(10, 11, 12)에서 상관관계 레코드를 수신한 때에, 이 상관관계 레코드에 상기 다른 애플리케이션 서버를 가리키는 연관성 키가 포함되어 있지 않은 경우에, 상기 라우팅 수단(10, 11, 12)이 다른 애플리케이션 서버에 트랜잭션을 라우팅하는 단계에는, 라우팅 수단(10, 11, 12)이 상기 다른 소프트웨어 애플리케이션에 연계된 사용자 세션 부분의 수명기간을 사용자 세션의 수명기간에 연계해야 할지를 결정하는 단계가 포함되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  9. 제7항 또는 제8항에 있어서,
    상기 라우팅 수단(10, 11, 12)에서 상관관계 레코드를 수신한 때에, 이 상관관계 레코드에 상기 다른 애플리케이션 서버를 가리키는 연관성 키가 포함되어 있지 않으며 상기 다른 소프트웨어 애플리케이션에 연계된 사용자 세션 부분의 수명기간을 사용자 세션의 수명기간에 연계해야 할 경우에는, 상기 라우팅 수단(10, 11, 12)이 다른 애플리케이션 서버에 트랜잭션을 라우팅하는 단계에는,
    - 상기 라우팅 수단(10, 11, 12)이 메인 라우팅 수단(10)으로 연관성 초기화 요청을 전송하는 단계;
    - 메인 라우팅 수단(10)이,
    o 애플리케이션 서버 그룹(B1, B2, ...) 중에서 상기 다른 소프트웨어 애플리케이션을 처리하는 상기 다른 애플리케이션 서버를 선택하고,
    o 상기 다른 애플리케이션 서버를 가리키는 연관성 키로써 상관관계 레코드을 보강하고,
    o 상기 다른 애플리케이션 서버로 연관성 초기화 메시지를 전송하고,
    o 상기 다른 애플리케이션으로부터 연관성 초기화의 확인을 수신하고,
    o 보강된 상관관계 레코드를 상기 라우팅 수단(10, 11, 12)으로 전송하는 단계;
    - 보강된 상관관계 레코드의 연관성 키에 따라 상기 라우팅 수단(10, 11, 12)이 상기 다른 애플리케이션 서버로 트랜잭션을 라우팅하는 단계;
    가 더 포함되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  10. 제8항에 있어서,
    상기 라우팅 수단(10, 11, 12)에서 상관관계 레코드를 수신한 때에, 이 상관관계 레코드에 상기 다른 애플리케이션 서버를 가리키는 연관성 키가 포함되어 있지 않고 상기 다른 소프트웨어 애플리케이션에 연계된 사용자 세션 부분의 수명기간을 사용자 세션의 수명기간에 연계할 필요가 없는 경우에는,
    상기 라우팅 수단(10, 11, 12)이 상기 다른 애플리케이션 서버에 트랜잭션을 라우팅하는 단계는,
    상기 라우팅 수단(10, 11, 12)이 애플리케이션 서버 그룹(B1, B2, ...) 중에서 상기 다른 소프트웨어 애플리케이션을 처리하는 상기 다른 애플리케이션 서버를 선택하고 상기 다른 애플리케이션 서버에 트랜잭션을 라우팅하는 단계가 더 포함되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  11. 제10항에 있어서,
    상관관계 레코드는 상기 다른 애플리케이션 서버를 가리키는 연관성 키로써 보강되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  12. 제11항에 있어서,
    상관관계 레코드는 상기 라우팅 수단(10, 11, 12)에 의해 보강되며, 이 상관관계 레코드는 메인 라우팅 수단(10)으로 반환되어 이 메인 라우팅 수단(10)에 연계된 데이터 저장 수단에 저장되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  13. 제7항에 있어서,
    상기 라우팅 수단(10, 11, 12)에서 상관관계 레코드를 수신한 때에, 이 상관관계 레코드에 상기 다른 애플리케이션 서버를 가리키는 연관성 키가 이미 포함된 경우에는, 상기 라우팅 수단(10, 11, 12)은 연관성 키에 따라 트랜잭션을 라우팅하는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  14. 제1항 내지 제13항 중 어느 한 항에 있어서,
    애플리케이션 서버는 라우팅 수단(10, 11, 12)으로부터 트랜잭션을 수신하고, 트랜잭션의 처리를 통해서 사용자 컨텍스트의 부분을 생성하고, 상기 애플리케이션 서버에 구비된 데이터 저장 수단에 상기 사용자 컨텍스트의 부분을 저장하는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  15. 제14항에 있어서,
    애플리케이션 서버는 상기 애플리케이션 서버로부터 상기 사용자 컨텍스트의 부분을 검색할 수 있도록 하는 적용 컨텍스트 키로써 상관관계 레코드를 보강하는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  16. 제15항에 있어서,
    적용 컨텍스트 키로써 보강된 상관관계 레코드는 메인 라우팅 수단(10)으로 전송되어 상기 메인 라우팅 수단(10)에 연계된 데이터 저장소에 저장되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  17. 제15항 또는 제16항에 있어서,
    상기 애플리케이션 서버에서 상기 사용자 세션에 관련된 또다른 트랜잭션을 수신하면, 상기 애플리케이션 서버는 적용 컨텍스트 키를 기반으로 하여 상기 데이터 저장 수단에서 상기 사용자 컨텍스트 부분의 위치를 찾는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  18. 제1항 내지 제9항 중 어느 한 항에 있어서,
    소프트웨어 애플리케이션에 연계된 사용자 컨텍스트 부분의 수명기간을 사용자 세션의 수명기간에 연계해야 할 경우에, 메인 라우팅 수단(10)과, 상기 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버 사이에, 사용자 세션이 활성상태인 때에 한해서 상태기반 대화를 개설하되, 이 상태기반 대화는 사용자 세션 종료시에 자동으로 폐쇄되는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법.
  19. 제1항 내지 제18항 중 어느 한 항에 따른 방법의 실행을 포함하는 연산을 수행하는 하나 이상의 데이터 프로세서에 의하여 실행되는 소프트웨어 프로그램 명령어가 기록된 컴퓨터 판독가능한 비일시적 기록 매체.
  20. 사용자(1, 2, 3)에게 사용자 세션을 제공하는 시스템(100)에 있어서, 상기 사용자 세션을 제공하는 데 필요한 연산을 하는 다수의 소프트웨어 애플리케이션이 포함되고, 이 소프트웨어 애플리케이션 중의 적어도 하나는, 사용자 세션에 관련된 사용자 컨텍스트의 최소한 일부에 연계되며,
    상기 시스템은,
    - 각자, 최소한 프로세서를 포함하는 다수의 기계;
    - 애플리케이션 서버(A1, A2, ...)들의 그룹(20, 30, 40, 50) 중, 해당 소프트웨어 애플리케이션을 전담하는 하나의 애플리케이션 서버에 의해 각 사용자 세션에 대해 처리함으로써 각 세션에 대해, 사용자 세션과의 연관성을 각각 갖는 애플리케이션 서버(A3, B8, C4)들의 집합을 정의하도록 구성되는, 기계 상에서 각자 실행되는 다수의 애플리케이션 서버(A1, A2, ...);
    - 데이터 저장 수단에 연계된 애플리케이션 서버에 의해 처리되는 소프트웨어 애플리케이션에 연계된 사용자 컨텍스트 부분을 저장하도록 구성되어, 사용자 컨텍스트 부분에 연계된 소프트웨어 애플리케이션을 처리하는 각 애플리케이션 서버에 연계된 데이터 저장 수단;
    - 하나 이상의 라우팅 수단(10, 11, 12);을 포함하여 구성되고, 메인 라우팅 수단(10)은 사용자 세션을 담당하도록 구성되고, 하나 이상의 라우팅 수단(10, 11, 12)은 최소한 사용자 요청을 수신하고, 상기 요청을 수행하기 위해 사용자 세션의 트랜잭션을 사용자 세션과 연관성을 갖는 애플리케이션 서버(A3, B8, C4)로 라우팅하며,
    상기 라우팅 수단(10, 11, 12)의 트랜잭션 단계는,
    o 특정 소프트웨어 애플리케이션에 대해서 사용자 세션과 연관성을 갖는 애플리케이션 서버를 가리키는 연관성 키를 포함하도록 구성된 상관관계 레코드(DCX)를 사용자 세션에 할당하는 단계;
    o 라우팅 수단(10, 11, 12)이, 사용자 세션과 연관성을 갖고 트랜잭션을 처리하는 데 적합한 소프트웨어 애플리케이션을 처리하는 애플리케이션 서버(A3, B8, C4)를 대상으로 정하도록 상관관계 레코드를 각 트랜잭션과 함께 전파하는 단계;
    를 포함하는 것을 특징으로 하는 다수의 소프트웨어 애플리케이션이 연관된 세션을 제공하는 시스템.
KR1020137024736A 2011-03-15 2012-03-15 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법 및 시스템 KR101636601B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP11305281A EP2500856A1 (en) 2011-03-15 2011-03-15 Method and system for providing a session involving a plurality of software applications
EP11305281.5 2011-03-15
US13/065,312 2011-03-18
US13/065,312 US8433809B2 (en) 2011-03-15 2011-03-18 Method and system for providing a session involving a plurality of software applications
PCT/EP2012/054563 WO2012123544A1 (en) 2011-03-15 2012-03-15 Method and system for providing a session involving a plurality of software applications

Publications (2)

Publication Number Publication Date
KR20140010960A true KR20140010960A (ko) 2014-01-27
KR101636601B1 KR101636601B1 (ko) 2016-07-20

Family

ID=44314913

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137024736A KR101636601B1 (ko) 2011-03-15 2012-03-15 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법 및 시스템

Country Status (11)

Country Link
US (1) US8433809B2 (ko)
EP (1) EP2500856A1 (ko)
JP (1) JP6087847B2 (ko)
KR (1) KR101636601B1 (ko)
CN (1) CN103403749A (ko)
AU (1) AU2012228218B2 (ko)
BR (1) BR112013019278A2 (ko)
CA (1) CA2824393C (ko)
SG (1) SG192161A1 (ko)
WO (1) WO2012123544A1 (ko)
ZA (1) ZA201305950B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10853507B2 (en) 2016-08-05 2020-12-01 Sensoriant, Inc. Software-based switch for providing products and/or services to users without compromising their privacy
US10860735B2 (en) 2016-08-05 2020-12-08 Sensoriant, Inc. Database system for protecting and securing stored data using a privacy switch

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9209983B2 (en) * 2007-11-19 2015-12-08 Cisco Technology, Inc. Generating a single advice of charge request for multiple sessions in a network environment
US9202237B2 (en) * 2007-11-27 2015-12-01 Cisco Technology, Inc. Generating a single billing record for multiple sessions in a network environment
US9235620B2 (en) 2012-08-14 2016-01-12 Amadeus S.A.S. Updating cached database query results
US9569224B2 (en) 2014-05-06 2017-02-14 Oracle International Corporation System and method for adaptively integrating a database state notification service with a distributed transactional middleware machine
US9524186B2 (en) 2014-04-28 2016-12-20 Oracle International Corporation System and method for supporting common transaction identifier (XID) optimization based on resource manager (RM) instance awareness in a transactional environment
US20160285957A1 (en) * 2015-03-26 2016-09-29 Avaya Inc. Server cluster profile definition in a distributed processing network
US10607019B2 (en) * 2016-08-05 2020-03-31 Sensoriant, Inc. System and methods for maintaining user privacy in applications providing products and/or services
EP3510492A4 (en) * 2016-09-09 2020-04-08 Sensoriant, Inc. SOFTWARE-BASED SWITCH FOR PROVIDING PRODUCTS AND / OR SERVICES TO USERS WITHOUT INTERFERENCE TO YOUR PRIVACY
US10891440B1 (en) 2019-10-30 2021-01-12 Globant España, S.A. Natural language driven transaction system
US11695849B2 (en) * 2021-01-19 2023-07-04 International Business Machines Corporation Transaction tracking for high availability architecture using a tracking token and middleware instance information

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060155857A1 (en) * 2005-01-06 2006-07-13 Oracle International Corporation Deterministic session state management within a global cache array
US20070192492A1 (en) * 2006-02-14 2007-08-16 Fujitsu Limited Load-balancing device and computer-readable recording medium in which load-balancing program is recorded

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5495606A (en) 1993-11-04 1996-02-27 International Business Machines Corporation System for parallel processing of complex read-only database queries using master and slave central processor complexes
US5819255A (en) 1996-08-23 1998-10-06 Tandem Computers, Inc. System and method for database query optimization
US5822747A (en) 1996-08-23 1998-10-13 Tandem Computers, Inc. System and method for optimizing database queries
US6158044A (en) 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
US7328166B1 (en) 1999-01-20 2008-02-05 Sabre, Inc. Global reservations transaction management system and method
US6392997B1 (en) 1999-03-16 2002-05-21 Cisco Technology, Inc. Technique for group-based routing update with limited per neighbor/adjacency customization
GB2348985A (en) * 1999-04-15 2000-10-18 Ibm Centralized affinity maintenance in a workload managed client/server system
WO2000063808A1 (en) 1999-04-16 2000-10-26 Cg & G Software Plus Tee time reservation system
WO2001033472A2 (en) 1999-11-01 2001-05-10 Ita Software, Inc. Method and apparatus for providing availability of airline seats
US20030004760A1 (en) 1999-12-03 2003-01-02 Schiff Martin R. Systems and methods of on-line booking of cruises
US7437408B2 (en) 2000-02-14 2008-10-14 Lockheed Martin Corporation Information aggregation, processing and distribution system
JP2004531780A (ja) 2000-06-22 2004-10-14 マイクロソフト コーポレーション 分散型コンピューティングサービスプラットフォーム
NO312697B1 (no) 2000-09-01 2002-06-17 Ericsson Telefon Ab L M Fremgangsmåte for å tilveiebringe effektive operasjoner i et serversystem
US6640222B1 (en) 2000-09-29 2003-10-28 Motorola, Inc. Method for selecting an information unit among conflicting information units based on context fields by a user device
US20020078150A1 (en) 2000-12-18 2002-06-20 Nortel Networks Limited And Bell Canada Method of team member profile selection within a virtual team environment
US7003565B2 (en) * 2001-04-03 2006-02-21 International Business Machines Corporation Clickstream data collection technique
US7165105B2 (en) 2001-07-16 2007-01-16 Netgenesis Corporation System and method for logical view analysis and visualization of user behavior in a distributed computer network
US7512652B1 (en) 2001-09-28 2009-03-31 Aol Llc, A Delaware Limited Liability Company Passive personalization of buddy lists
US7289619B2 (en) 2002-01-09 2007-10-30 Agilquest Corporation System and method for managing workplace real estate and other resources
CA2381737A1 (en) 2002-04-15 2003-10-15 Ibm Canada Limited-Ibm Canada Limitee Framework for managing data that provides correlation information in a distributed computing system
US7089228B2 (en) 2002-04-18 2006-08-08 International Business Machines Corporation Computer apparatus and method for caching results of a database query
US20030233473A1 (en) 2002-05-07 2003-12-18 International Business Machines Corporation Method for configuring logical connections to a router in a data communication system
US7337226B2 (en) * 2002-05-10 2008-02-26 Oracle International Corporation Method and mechanism for implementing dynamic sizing of session pools
US7987491B2 (en) * 2002-05-10 2011-07-26 Richard Reisman Method and apparatus for browsing using alternative linkbases
US7146400B2 (en) 2002-05-29 2006-12-05 International Business Machines Corporation Web and lotus notes adapter layers
US8020196B2 (en) * 2002-10-25 2011-09-13 Randle William M Secure transmission and exchange of standardized data
US8602774B2 (en) * 2002-12-04 2013-12-10 Bryan Wasylucha Process of tooth whitening and apparatus therefor
US7454761B1 (en) 2002-12-20 2008-11-18 Cisco Technology, Inc. Method and apparatus for correlating output of distributed processes
US20040128542A1 (en) 2002-12-31 2004-07-01 International Business Machines Corporation Method and system for native authentication protocols in a heterogeneous federated environment
JP3882917B2 (ja) * 2003-04-03 2007-02-21 日本アイ・ビー・エム株式会社 情報処理システム、情報処理装置及びプログラム
CA2527668A1 (en) 2003-06-02 2004-12-16 Liquid Machines, Inc. Managing data objects in dynamic, distributed and collaborative contexts
KR100541758B1 (ko) 2003-07-08 2006-01-10 주식회사 팬택앤큐리텔 무선가입자망의 가입자접속장치에서 패킷 형태의 과금갱신 정보 전송 방법
US7395279B2 (en) 2003-11-17 2008-07-01 International Business Machines Corporation System and method for achieving different levels of data consistency
US20050108069A1 (en) 2003-11-18 2005-05-19 Tomer Shiran System and a method for prefetching travel information
JP4452533B2 (ja) 2004-03-19 2010-04-21 株式会社日立製作所 システムおよび記憶装置システム
US7778962B2 (en) 2004-04-30 2010-08-17 Microsoft Corporation Client store synchronization through intermediary store change packets
US20050262100A1 (en) 2004-05-19 2005-11-24 Bea Systems, Inc. System and method for context propagation in application servers and transaction-based systems
CN100481013C (zh) * 2004-08-03 2009-04-22 索芙特瑞斯提股份有限公司 用于经由上下文策略控制来控制应用程序间关联的系统和方法
US7543069B2 (en) * 2004-10-18 2009-06-02 International Business Machines Corporation Dynamically updating session state affinity
US20060212583A1 (en) 2005-03-17 2006-09-21 Beadle Bruce A Distributing messaging session logs to users entering an already ongoing messaging session
JP4042760B2 (ja) * 2005-05-30 2008-02-06 株式会社日立製作所 通信管理方法及びシステム
US7412224B2 (en) 2005-11-14 2008-08-12 Nokia Corporation Portable local server with context sensing
ATE547907T1 (de) 2005-12-12 2012-03-15 Ericsson Telefon Ab L M Verfahren und anordnung zum herstellen einer kommunikationssitzung für multimedia
US7925624B2 (en) 2006-03-31 2011-04-12 Amazon Technologies, Inc. System and method for providing high availability data
CN101083620B (zh) * 2006-05-31 2010-09-29 华为技术有限公司 消息业务路由装置和方法
US7774463B2 (en) 2006-07-25 2010-08-10 Sap Ag Unified meta-model for a service oriented architecture
US8112550B2 (en) 2006-09-19 2012-02-07 Tacoda Llc System and method for preserving consumer choice
CN101197806B (zh) * 2006-12-08 2012-04-18 华为技术有限公司 一种路由会话的方法、网络及设备
US20080167906A1 (en) 2007-01-05 2008-07-10 De Marcken Carl Support for flexible travel planning
EP2118842A2 (en) 2007-01-05 2009-11-18 ITA Software, Inc. Providing travel information using cached query answers
US20080262878A1 (en) 2007-04-17 2008-10-23 Travelocity.Com Lp Systems, methods, and computer program products for generating and updating a cache of price and availability information for travel packages and components
US7870267B2 (en) 2007-05-16 2011-01-11 International Business Machines Corporation Creating global sessions across converged protocol applications
US8108528B2 (en) 2007-07-11 2012-01-31 International Business Machines Corporation System and method for verifying the identity of a chat partner during an instant messaging session
CN101187946A (zh) 2007-12-14 2008-05-28 无敌科技(西安)有限公司 利用实时信息更新数据系统及其方法
WO2009144862A1 (ja) 2008-05-28 2009-12-03 パナソニック株式会社 通信端末装置及び通信制御方法並びに通信制御プログラム
US20100312586A1 (en) 2009-06-03 2010-12-09 Drefs Martin J Generation of Travel-Related Offerings
EP2282287A1 (en) 2009-07-28 2011-02-09 Amadeus S.A.S. Method to keep coherent a travel shopping basket
US9515849B2 (en) 2009-12-22 2016-12-06 At&T Intellectual Property I, L.P. Method and apparatus for managing communication faults
US9880014B2 (en) 2010-11-24 2018-01-30 Telenav, Inc. Navigation system with session transfer mechanism and method of operation thereof
ES2689112T3 (es) 2011-03-15 2018-11-08 Amadeus S.A.S. Método y sistema para mecanismo de sincronización en sistema de reservas de múltiples servidores
EP2500848A1 (en) 2011-03-15 2012-09-19 Amadeus S.A.S. Method and system for centralized reservation context management on multi-server reservation system
ES2454548T3 (es) 2011-03-15 2014-04-10 Amadeus S.A.S. Procedimiento y sistema para proporcionar una sesión en un entorno heterogéneo
EP2521074A1 (en) 2011-05-02 2012-11-07 Amadeus S.A.S. Method and system for an improved reservation system optimizing repeated search requests

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060155857A1 (en) * 2005-01-06 2006-07-13 Oracle International Corporation Deterministic session state management within a global cache array
US20070192492A1 (en) * 2006-02-14 2007-08-16 Fujitsu Limited Load-balancing device and computer-readable recording medium in which load-balancing program is recorded

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WebSpare Application Server V6 Scalability and Performance Handbook pp.1-370, 2005.05 *
WebSphere Edge Server for Multiplatforms Getting Started Version 2.0 pp.1-119, 2001.12.01. *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10853507B2 (en) 2016-08-05 2020-12-01 Sensoriant, Inc. Software-based switch for providing products and/or services to users without compromising their privacy
US10860735B2 (en) 2016-08-05 2020-12-08 Sensoriant, Inc. Database system for protecting and securing stored data using a privacy switch

Also Published As

Publication number Publication date
EP2500856A1 (en) 2012-09-19
JP2014512035A (ja) 2014-05-19
CA2824393A1 (en) 2012-09-20
KR101636601B1 (ko) 2016-07-20
ZA201305950B (en) 2015-03-25
BR112013019278A2 (pt) 2017-02-21
US8433809B2 (en) 2013-04-30
SG192161A1 (en) 2013-08-30
CN103403749A (zh) 2013-11-20
JP6087847B2 (ja) 2017-03-01
AU2012228218A1 (en) 2013-05-02
WO2012123544A1 (en) 2012-09-20
US20120239728A1 (en) 2012-09-20
AU2012228218B2 (en) 2015-03-19
CA2824393C (en) 2018-05-01

Similar Documents

Publication Publication Date Title
KR101636601B1 (ko) 다수의 소프트웨어 애플리케이션이 연계된 세션을 제공하는 방법 및 시스템
JP5898240B2 (ja) ヘテロジニアスな環境においてセッションを提供するための方法およびシステム
US8185897B2 (en) Task management system
CN103324487B (zh) 一种流程引擎应用服务化的实现方法
CN104780221B (zh) 中小企业知识产权综合服务平台系统
WO2011131262A1 (en) Controlling message delivery in publish/subscribe messaging
CN109240830A (zh) 基于服务器健康以及客户端信息的应用智能请求管理
US20030144860A1 (en) Dynamic conversation logic selection method and system
US8966047B2 (en) Managing service specifications and the discovery of associated services
CN109618003A (zh) 一种服务器规划方法、服务器及存储介质
JP4641506B2 (ja) セッション管理プログラム、セッション管理方法およびセッション管理装置
US7917467B2 (en) Processing of data sets in a computer network
US20090076864A1 (en) System and method for rules-based serialized service transaction processing
US20230245023A1 (en) User data lifecycle management
US9026657B2 (en) Method and system for provisioning telecommunication services and equipment using sequential or parallel processing
JP2005292986A (ja) 業務処理用ejbコンポーネントシステム
EP1607889A1 (en) Processing of data sets in a computer network

Legal Events

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