세션 Bean 호출 태스크 개발

스케줄러 API 및 WASScheduler MBean API는 TaskInfo 인터페이스의 서로 다른 구현을 지원합니다. 각 구현은 특정 작업 유형을 스케줄하는 데 사용할 수 있습니다.

이 태스크 정보

TaskHandler 세션 Bean에서 메소드를 호출하는 태스크를 작성하려면 다음 단계를 따르십시오.

프로시저

  1. EJB(Enterprise JavaBeans) 모듈에서 새 엔터프라이즈 애플리케이션을 작성하십시오. 이 애플리케이션은 TaskHandler EJB 모듈을 호스팅합니다.
  2. com.ibm.websphere.scheduler.TaskHandler 원격 인터페이스에서 process() 메소드를 구현하는 EJB 모듈에서 stateless 세션 Bean을 작성하십시오. 작성하려는 비즈니스 로직을 process() 프로세스에 배치하십시오. process() 메소드는 태스크 실행 시 호출됩니다. 홈 및 원격 인터페이스는 다음과 같이 배치 디스크립터 Bean에 설정되어야 합니다.
    • com.ibm.websphere.scheduler.TaskHandlerHome
    • com.ibm.websphere.scheduler.TaskHandler
  3. 다음 팩토리 메소드 예제를 사용하여 BeanTaskInfo 인터페이스의 인스턴스를 작성하십시오. JSP(JavaServer Pages) 파일, 서블릿 또는 EJB 컴포넌트를 사용하여 다음 코드 예제에 표시된 대로, 인스턴스를 작성하십시오. 이 코드는 이전에 작성한 TaskHandler EJB 모듈과 동일한 애플리케이션에 공존해야 합니다.
    // Assume that a scheduler has already been looked-up in JNDI.
    BeanTaskInfo taskInfo = (BeanTaskInfo) scheduler.createTaskInfo(BeanTaskInfo.class)

    wsadmin 도구를 사용하여 다음 JACL 스크립팅 예제에서 표시된 대로, 인스턴스를 작성할 수도 있습니다.

    set taskHandlerHomeJNDIName ejb/MyTaskHandler
    
    # Map the JNDI name to the mbean name.  The mbean name is formed by replacing the / in the jndi name
    # with . and prepending Scheduler_
    regsub -all {/} $jndiName "." jndiNameset mbeanName Scheduler_$jndiName
    
    puts "Looking-up Scheduler MBean $mbeanName"
    set sched [$AdminControl queryNames WebSphere:*,type=WASScheduler,name=$mbeanName]
    puts $sched
    
    # Get the ObjectName format of the Scheduler MBean
    set schedO [$AdminControl makeObjectName $sched]
    
    # Create a BeanTaskInfo object using invoke_jmx
    puts "Creating BeanTaskInfo"
    set params [java::new {java.lang.Object[]} 1]
    $params set 0 [java::field com.ibm.websphere.scheduler.BeanTaskInfo class]
    
    set sigs [java::new {java.lang.String[]} 1]
    $sigs set 0 java.lang.Class
    
    set ti [$AdminControl invoke_jmx $schedO createTaskInfo $params $sigs]
    set bti [java::cast com.ibm.websphere.scheduler.BeanTaskInfo  $ti]
    puts "Created the BeanTaskInfo object: $bti"
    중요사항: BeanTaskInfo 오브젝트를 작성해도 태스크가 지속적인 저장소에 추가되지는 않습니다. 오히려, 필요한 데이터를 위한 플레이스홀더를 작성합니다. 스케줄러 주제의 태스크 제출에서 설명한 대로, 스케줄러에서 create() 메소드를 호출할 때까지 태스크는 지속적 저장소에 추가되지 않습니다.
  4. BeanTaskInfo 오브젝트에서 매개변수를 설정하십시오. 이 매개변수는 어떤 세션 Bean을 호출할지를 정의합니다. TaskInfo 인터페이스에는 태스크의 실행 시기 및 태스크 실행 시 수행하는 작업을 포함하여 태스크 실행을 제어하기 위해 사용할 수 있는 여러 set() 메소드가 들어 있습니다.

    BeanTaskInfo 인터페이스를 사용하려면 setTaskHandler 메소드를 사용하여 TaskHandler JNDI(Java™ Naming and Directory Interface) 이름 또는 TaskHandlerHome을 설정해야 합니다. 태스크 핸들러를 설정하기 위해 WASScheduler MBean API를 사용하면 JNDI 이름은 완전한 글로벌 JNDI 이름이어야 합니다.

    TaskInfo 인터페이스는 API 문서에 설명된 대로 추가 제어점을 지정합니다. 다음 코드 예제에 표시된 것처럼 TaskInfo 인터페이스 API 메소드를 사용하여 매개변수를 설정하십시오.

    //create a date object which represents 30 seconds from now
    java.util.Date startDate = new java.util.Date(System.currentTimeMillis()+30000);
    
    //find the session bean to be called when the task starts
    Object o = new InitialContext().lookup("java:comp/env/ejb/MyTaskHandlerHome");
    TaskHandlerHome home = (TaskHandlerHome)javax.rmi.PortableRemoteObject.narrow(o,TaskHandlerHome.class);
    
    //now set the start time and task handler to be called in the task info
    taskInfo.setTaskHandler(home);
    taskInfo.setStartTime(startDate);

    다음 JACL 스크립팅 예제를 사용하여 매개변수를 설정할 수 있습니다.

    # Setup the task 
    puts "Setting up the task..."
    # Set the startTime if you want the task to run at a specific time, for example:
    $bti setStartTime [java::new {java.util.Date long} [java::call System currentTimeMillis]]
    
    # Set the StartTimeInterval so the task runs in 30 seconds from now
    $bti setStartTimeInterval 30seconds
    
    # Set JNDI name of the EJB which will get called when the task runs.  Since there is no
    # application J2EE Context when the task is created by the MBean, this must be a 
    # global JNDI name. 
    $bti setTaskHandler $taskHandlerHomeJNDIName
    
    # Do not purge the task when it's complete
    $bti setAutoPurge false
    
    # Set the name of the task.  이는 문자열 값일 수 있습니다. $bti setName Created_by_MBean
    
    # If the task needs to run with specific authorization you can set the tasks Authentication Alias
    # Authentication aliases are created using the Admin Console.
    # $bti setAuthenticationAlias {myRealm/myAlias}
    
    puts "Task setup completed."

결과

BeanTaskInfo 오브젝트는 EJB 메소드를 호출하기 위해 모든 관련된 데이터를 포함하여 작성되었습니다.

다음에 수행할 작업

작성을 위해 스케줄러에 태스크를 제출합니다.

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



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_schedulebtask
파일 이름:tsch_schedulebtask.html