[8.5.5.4 이상]

스레드 컨텍스트 서비스 인스턴스 구성

관리 스레드 컨텍스트를 캡처하여 스레드에서 지정된 인터페이스 메소드의 호출에 적용하도록 ContextService 인스턴스를 구성할 수 있습니다.

이 태스크 정보

Java™ EE 애플리케이션에 대한 우수 사례는 자체 스레드를 직접 관리하지 못하게 하는 것이므로 ContextService는 이전에 캡처된 스레드 컨텍스트를 비관리 스레드와 관리 스레드에서 설정하여 제 위치에 있는 스레드 컨텍스트를 오버레이하는 방법을 제공합니다.

프로시저

server.xml 파일에서 스레드 컨텍스트 서비스를 사용으로 설정하십시오. 스레드 컨텍스트 서비스는 <concurrent-1.0> 기능 아래에서 사용할 수 있습니다.
<featureManager>
		<feature>concurrent-1.0</feature>
</featureManager>

결과

기본 스레드 컨텍스트 서비스 인스턴스(DefaultContextService)가 서버에 의해 작성되어 최소한 classloaderContext, jeeMetadataContextsecurityContext를 캡처하고 전파하도록 구성됩니다. 다음과 같은 유형의 스레드 컨텍스트를 포함하도록 스레드 컨텍스트 전파를 구성할 수 있습니다.

classloaderContext
태스크 제출자의 스레드 컨텍스트 클래스 로더가 태스크에 사용 가능하도록 만듭니다. Liberty Repository[8.5.5.4 이상]컨텍스트 클래스 로더가 직렬화되는 경우 이 클래스 로더는 애플리케이션의 스레드 컨텍스트 클래스 로더여야 합니다. 웹 애플리케이션 번들에 대한 클래스 로더 직렬화는 현재 지원되지 않습니다.
jeeMetadataContext
태스크를 제출한 애플리케이션 컴포넌트의 네임스페이스를 태스크에 사용 가능하도록 만듭니다.
securityContext
[8.5.5.4 이상] 이 유형의 스레드 컨텍스트를 사용하려면 server.xml 파일에서 appSecurity-2.0 기능을 사용으로 설정해야 합니다. 이 유형의 스레드 컨텍스트는 태스크 제출자의 호출 주제 및 호출자 주제를 태스크에 사용할 수 있게 하며 이는 JAAS 로그인을 사용하여 제출자의 WSPrincipal로 로그인하여 달성됩니다. 제출자의 주제에 있는 정보 중 보안 컨텍스트에 없는 정보에 대한 세부사항은 concurrent-1.0 기능 제한사항을 참조하십시오.
중요사항: 스택 제품의 기능에 의해 추가적인 스레드 컨텍스트 제공자를 사용할 수 있게 됩니다. 선택사항인 baseContextRef 속성을 사용하면 컨텍스트 서비스 인스턴스가 다른 컨텍스트 서비스 인스턴스의 컨텍스트 구성에서 상속할 수 있습니다.

@Resource를 사용하여 스레드 컨텍스트 서비스 인스턴스를 애플리케이션 컴포넌트에 삽입하거나 자원 환경 참조(resource-env-ref)를 사용하여 검색하십시오.

  • server.xml 파일의 구성 예제:
    • jeeMetadataContext만 캡처하여 전파하는 concurrent/threadContextSvc1이라는 이름으로 JNDI에서 등록되는 스레드 컨텍스트 서비스:
      <contextService id="threadContextSvc1" jndiName="concurrent/${id}">
      	<jeeMetadataContext/>
      </contextService>
    • classloaderContextsecurityContext가 포함된 스레드 컨텍스트 서비스:
      <contextService jndiName="concurrent/threadContextSvc2">
      	<classloaderContext/>
      	<securityContext/>
      </securityContext/>
    • threadContextSvc1에서 jeeMetadataContext를 상속하고 securityContext를 추가하는 스레드 컨텍스트 서비스:
      <contextService jndiName="concurrent/threadContextSvc3" 
      baseContextRef="threadContextSvc1">
      	<securityContext>
      </contextService>
  • @Resource를 사용하는 예제:
    @Resource(lookup="concurrent/threadContextSvc1")
    ContextService threadContextSvc1;
    
    ...
    
    Callable<Integer>  processSalesOrderCompletion = new Callable<Integer>() { 
    		public Integer call() throws Exception { 
    	   		DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/ds1");
    		 ...update various database tables 
    		 return isSuccessful; 
    	} 
    };  
    // capture thread context of current application component
    execProps = Collections.singletonMap(ManagedTask.TRANSACTION, 
    ManagedTask.USE_TRANSACTION_OF_EXECUTION_THREAD);
    processSalesOrderCompletion = (Callable<Boolean>)
     threadContextSvc1.createContextualProxy(processSaleCompletion, execProps, 
    Callable.class);
    
    //later from a different application component
    tran.begin();
    ...
    successful = processSalesOrderCompletion.call();
    if (successful)
      tran.commit();else
      tran.rollback();
  • web.xml 파일에서 resource-env-ref를 사용하는 예제:
    <resource-env-ref>
    	<resource-env-ref-name>concurrent/threadContextSvc3</resource-env-ref-name>
    	<resource-env-ref-type>javax.enterprise.concurrent.ContextService</resource-
    	env-ref-type>
    </resource-env-ref>
  • 자원 환경 참조를 사용하는 예제 검색:
    ContextService threadContextSvc3 = 
    (ContextService) new InitialContext().lookup("java:comp/env/concurrent/threadContextSvc3");
    Runnable updateAndGetNextFromDatabase = threadContextSvc3.createContextualProxy
    (new Runnable() {
    		public void run() {
    		 		DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/ds1");
        ... update the database and get next item to process
      }
    }, Runnable.class);
    barrier = new CyclicBarrier(3, updateAndGetNextFromDatabase);
    ...

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

Information Center 이용 약관 | 피드백


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