WebSphere Extended Deployment, Version 6.0.x     운영 체제: AIX, HP-UX, Linux, Solaris, Windows, z/OS

연산 집약적 프로그래밍 모델

연산 집약적 응용프로그램은 기존 J2EE(Java 2 Platform Enterprise Edition) 요청/응답 방식에 적합하지 않은 연산 집약적 작업을 수행하는 응용프로그램을 가리킵니다.

이와 같은 응용프로그램이 일반적인 J2EE 프로그래밍 모델에 적합하지 않게 만들 수 있는 몇 가지의 특성이 있습니다.
WebSphere Extended Deployment에서 제공되는 연산 집약적 프로그래밍 모델은 이와 같은 요구를 처리하는 환경을 제공합니다. 연산 집약적 프로그래밍 모델은 두 가지의 기본 개념에 집중되어 있습니다.
  1. 비동기식으로 작업을 제출하고 관리하기 위해 작업 사용.
  2. 연장 기간 동안 실행되는 작업을 지원하기 위한 비동기 Bean 프로그래밍 모델에 대한 부수적인 확장.

작업 개념은 모든 장기간 실행 응용프로그램에서 공유하며 다른 곳에서 설명합니다. 다음 섹션은 비동기 Bean 프로그래밍 모델 확장에 관한 추가 정보를 제공합니다.

연산 집약적 작업 단계

모든 장기간 실행 작업과 같이, 연산 집약적 작업은 여러 작업 단계로 분할됩니다. 연산 집약적 작업의 경우, 각 작업 단계는 com.ibm.websphere.ci.CIWork 인터페이스를 구현하는 클래스의 인스턴스로 표시됩니다. CIWork 인터페이스는 WebSphere 비동기 Bean 프로그래밍 모델 및 JSR 237에서 commonj.Work 작업 인터페이스를 확장합니다. 이 확장은 작업에 지정된 작업 단계 특정 특성을 CIWork 오브젝트에 전달하는 방식을 제공하는 두 가지의 메소드로 구성됩니다.

세부사항은 API 문서를 참조하십시오.

비동기 Bean에 대해 학습하려면 WebSphere Application Server InfoCenter의 비동기 Bean 사용 섹션을 참조하십시오.

제어기 Bean

제어기 Bean은 연산 집약적 응용프로그램의 전개 설명자에 정의된 Stateless 세션 Bean으로, 실행 환경에서 응용프로그램에 대해 작업을 제어할 수 있도록 합니다. 이 Stateless 세션 Bean의 구현은 WebSphere에서 제공됩니다. 응용프로그램의 유일한 책임은 다음 정의에 표시된 Stateless 세션 Bean을 해당되는 엔터프라이즈 Bean 모듈 중 하나의 전개 설명자에 포함시키는 것입니다. 연산 집약적 응용프로그램마다 정확히 하나의 제어기 Bean을 정의해야 합니다. 제어기 Bean의 구현은 WebSphere 런타임에서 제공되므로, 응용프로그램 전개자는 연산 집약적 응용프로그램 전개 시 엔터프라이즈 Bean의 전개를 요청할 수 없습니다.
<session id="supply a suitable name here">
   <ejb-name>CIController</ejb-name>
   <home>com.ibm.ws.ci.CIControllerHome</home>
   <remote>com.ibm.ws.ci.CIController</remote>
   <ejb-class>com.ibm.ws.ci.CIControllerBean</ejb-class>
   <session-type>Stateless</session-type>
   <transaction-type>Bean</transaction-type>
   <resource-ref id="WorkManager_ResourceRef">
      <description>
         WorkManager that will be used to execute jobs.
      
      <res-ref-name>wm/CIWorkManager</res-ref-name>
      <res-type>commonj.work.WorkManager</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
   

연산 집약적 응용프로그램 패키징

연산 집약적 응용프로그램의 논리(일부 CIWork 오브젝트들과 CIWork 오브젝트를 지원하기 위해 필요한 클래스)는 엔터프라이즈 Bean 모듈에서 J2EE 응용프로그램 EAR(Enterprise Archive) 파일로 패키징됩니다. 엔터프라이즈 Bean 모듈의 전개 설명자는 위에 표시된 Stateless 세션 Bean의 정의를 포함해야 합니다. 응용프로그램 자체가 다른 엔터프라이즈 Bean 또는 자원을 사용할 경우, 해당되는 Bean 및 자원에 대한 정의도 전개 설명자에 표시될 수 있습니다. IBM Rational Application Developer와 같은 J2EE 개발 도구를 사용하여 엔터프라이즈 Bean 모듈 및 비동기 Bean을 포함하는 J2EE 응용프로그램을 구성하기 위해 사용할 경우와 같은 형태로 연산 집약적 응용프로그램을 개발하고 패키징할 수 있습니다.

연산 집약적 응용프로그램의 라이프 사이클

연산 집약적 응용프로그램은 다른 J2EE 응용프로그램과 정확히 같은 방식으로 Application Server에서 시작됩니다. 응용프로그램이 시작 Bean을 정의할 경우, Application Server가 시작될 때 시작 Bean이 실행됩니다. 응용프로그램에 대해 작업이 도착하면 연산 집약적 실행 환경(LREE.ear)은 응용프로그램의 EJB 모듈 전개 설명자에 정의된 CIControllerBean Stateless 세션 Bean을 호출합니다. 이 Stateless 세션 Bean의 JNDI 이름은 작업의 xJCL에 지정됩니다. 작업 단계마다 CIControllerBean은 다음을 수행합니다.
  1. CIWork 클래스의 인수 없는 구성자를 사용하여 작업 단계에 대해 xJCL에서 classname 요소로 지정한 응용프로그램의 CIWork 오브젝트를 인스턴스화합니다.
  2. CIWork 오브젝트의 setProperties() 메소드를 호출하여 작업 단계에 대해 xJCL에 정의된 특성을 전달합니다.
  3. 엔터프라이즈 Bean 모듈의 전개 설명자를 정의한 작업 관리자를 찾고 이 작업 관리자를 사용하여 CIWork 오브젝트의 run() 메소드를 비동기식으로 호출합니다.

run() 메소드가 리턴되기 전에 작업이 취소될 경우, CIControllerBean은 별도의 스레드에서 CIWork 오브젝트의 release() 메소드를 호출합니다. run() 메소드가 즉시 리턴하도록 release() 메소드에서 논리를 배열하는 것은 장기간 실행 응용프로그램 개발자의 몫입니다. 작업은 run() 메소드가 리턴할 때까지 취소 보류 상태로 남게 됩니다.

예외 발생 없이 작업이 취소되지 않고 run() 메소드가 리턴되면, 작업은 성공적으로 완료된 것입니다. run() 메소드에서 예외가 발생하면 작업은 실행 실패로 표시됩니다. run() 메소드가 리턴하면(정상적으로 또는 예외를 발생하여) CIWork 오브젝트를 더 호출하지 않으며 이 오브젝트에 대한 모든 참조가 제거됩니다.




Related concepts
장기간 실행 응용프로그램 개발

개념 주제    

이용 약관 | 피드백 마지막 갱신 날짜: Mar 21, 2006 11:34:03 AM EST
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r0/index.jsp?topic=?topic=/com.ibm.websphere.xd.doc/info/scheduler/cschintensve.html

© Copyright IBM 2005, 2006. All Rights Reserved.
이 Information Center는 Eclipse 테크놀러지로 강화되었습니다. (http://www.eclipse.org)