[8.5.5.4 이상]

관리 스케줄 실행기 구성

태스크가 스케줄되는 스레드의 스레드 컨텍스트로 실행하는 비동기 태스크를 스케줄하도록 ManagedScheduledExecutorService 인스턴스를 구성할 수 있습니다. Java™ EE 애플리케이션을 위한 우수 사례는 자체 스레드를 직접 관리하지 못하게 하는 것이므로 ManagedScheduledExecutorServiceJSE ExecutorService를 확장하여 애플리케이션 서버 환경에서 비동기 태스크를 스케줄하는 방법을 제공합니다. 또한 Java EE 애플리케이션과 관련된 스레드 컨텍스트를 캡처하여 스케줄된 태스크의 스레드에 전파하도록 ManagedScheduledExecutorService를 구성할 수 있습니다.

이 태스크 정보

중요사항: Liberty 프로파일에서 관리 스케줄 실행기는 자체 스레드 풀을 가지고 있지 않습니다. 관리 스케줄 실행기 인스턴스에 제출된 태스크는 공통 Liberty 실행기 스레드 풀에서 실행됩니다.
다음과 같이 관리 스케줄 실행기 <concurrent-1.0> 기능이 server.xml 파일에서 사용으로 설정됩니다.
<featureManager>
		<feature>concurrent-1.0</feature>
</featureManager>

스레드 컨텍스트 캡처 및 전파는 컨텍스트 서비스에 의해 관리됩니다. 컨텍스트 서비스의 기본 인스턴스(DefaultContextService)는 서버에 의해 작성되고 최소한 classloaderContext, jeeMetadataContextsecurityContext를 전파하도록 구성됩니다. 특정 컨텍스트 서비스 인스턴스를 참조하지 않거나 컨텍스트 서비스 인스턴스를 직접 내부에서 구성하지 않고 ManagedScheduledExecutorService가 작성되는 경우 이 기본 컨텍스트 서비스 인스턴스가 사용됩니다. 컨텍스트 서비스 인스턴스에 대한 자세한 정보는 스레드 컨텍스트 서비스 인스턴스 구성 주제를 참조하십시오.

기본 관리 스케줄 실행기 인스턴스(DefaultManagedScheduledExecutorService)는 java:comp/DefaultManagedScheduledExecutorService로 사용할 수 있으며 스레드 컨텍스트 캡처 및 전파를 위해 기본 컨텍스트 서비스 인스턴스를 사용합니다.

프로시저

server.xml 파일의 구성 예제:

@Resource를 사용하여 관리 스케줄 실행기를 애플리케이션 컴포넌트에 삽입하거나 자원 환경 참조(resource-env-ref)를 사용하여 검색하십시오. 인스턴스를 얻는 방법에 관계없이 인스턴스를 javax.enterprise.concurrent.ManagedScheduledExecutorService 또는 수퍼클래스 java.util.concurrent.ScheduledExecutorSerivce, java.util.concurrent.ExecutorService, javax.enterprise.concurrent.ManagedExecutorService로 교환하여 사용할 수 있습니다.

  • @Resource를 사용하여 java.util.concurrent.ScheduledExecutorService로 삽입하는 예제:
    @Resource(lookup="concurrent/scheduledExecutor2")
    ScheduledExecutorService executor;
    ...
    
    // schedule a task to run every half hour from now 
    Runnable updateSalesReport = new Runnable() {
    public void run() throws Exception {
    	  // java:comp lookup is possible because <jeeMetadataContext> is configured 
    		DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/ds1");
    ... query and update various database tables
    }
    };
    ScheduledFuture<?> future = executor.scheduleAtFixedRate(updateSalesReport, 0, 30, TimeUnit.MINUTES);
  • @Resource를 사용하여 javax.enterprise.concurrent.ManagedScheduledExecutorService로 삽입하는 예제:
    @Resource(lookup="concurrent/scheduledExecutor2")
    ManagedScheduledExecutorService executor;
    
    ... usage is same as previous example
  • web.xml 파일의 java.util.concurrent.ScheduledExecutorService에 대한 예제 <resource-env-ref>:
    <resource-env-ref>
    	<resource-env-ref-name>concurrent/scheduledExecutor1</resource-env-ref-name>
    	<resource-env-ref-type>java.util.concurrent.ScheduledExecutorService</resource-env-ref-type>
    </resource-env-ref>
  • web.xml 파일의 javax.enterprise.concurrent.ManagedScheduledExecutorService에 대한 예제 <resource-env-ref>:
    <resource-env-ref>
    	<resource-env-ref-name>concurrent/scheduledExecutor2</resource-env-ref-name>
    	<resource-env-ref-type>javax.enterprise.concurrent.ManagedScheduledExecutorService</resource-env-ref-type>
    </resource-env-ref>
  • 자원 환경 참조를 사용하는 예제 검색입니다.
    ManagedScheduledExecutorService executor = 
    		 (ManagedScheduledExecutorService) new InitialContext().lookup("java:comp/env/concurrent/scheduledExecutor2");
    executor.schedule(payrollTask, fridaysAtMidnightTrigger);

주제의 유형을 표시하는 아이콘 태스크 주제

Information Center 이용 약관 | 피드백


시간소인 아이콘 마지막 업데이트 날짜: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_config_scheduledexecutor
파일 이름: twlp_config_scheduledexecutor.html