비동기 호출 API를 사용하는 애플리케이션 개발

관련 애플리케이션 세션 ID를 바탕으로 클러스터의 모든 서버에 대한 SIP(Session Initiation Protocol) 애플리케이션 세션의 컨텍스트에서의 처리가 필요한 이벤트를 전송하기 위해 비동기 호출 API를 사용할 수 있습니다. 비동기 호출 API는 이벤트 태스크를 올바른 서버로 전송합니다.

시작하기 전에

다음 비동기 작업 클래스에 대한 정보는 API 문서를 읽으십시오.
  • com.ibm.websphere.sip.AsynchronousWork
  • com.ibm.websphere.sip.AsynchronousWorkListener

API 클래스에 대한 자세한 정보는 Information Center의 참조 섹션을 참조하고 제품 API 스펙의 목록을 보려면 API(Application Programming Interfaces)를 클릭하십시오.

이 태스크 정보

SIP 스레드 밖에서 코드를 실행할 때, 애플리케이션 개발자는 비동기 호출 API를 사용하여 오브젝트를 작성하고 동일한 컨테이너에 있는 다른 스레드에서 또는 다른 서버(세션이 존재하는 곳인 경우)에서 해당 오브젝트를 실행하도록 서버를 구성할 수 있습니다.

다음 예는 AsynchronousWork 클래스에 대한 클래스 구조를 보여주는데, 이것은 API를 사용할 때 확장되는 추상 기본 클래스입니다.
	public abstract class AsynchronousWork implements Serializable
	{
	private String sessionId;
	public AsynchronousWork(String sessionId)
	{
	this.sessionId = sessionId;
	....
	}
	public void dispatch (AsynchronousWorkListener listener)
	{
	....
	}
	public abstract Serializable doAsyncTask();
	}

프로시저

  1. SIP 관련 코드로 추상 클래스 AsynchronousWork를 확장하십시오. doAsyncTask() 메소드의 확장된 구현이 SipApplicationSession을 포함하고 그의 ID가 AsynchronousWork 클래스를 구현하는 생성자에서 설정된 대상 서버에서 호출됩니다. 구현 클래스는 생성자에서 super를 호출하여 세션 ID를 기본 클래스로 전달해야 합니다.
    public class MyClass extends AsynchronousWork
    {
    String _sessionId;
    
    public MyClass(String sessionId) {
    super(sessionId);
    _sessionId = sessionId;
    }
    
    // This code is invoked on the target machine or thread
    public Serializable doAsyncTask() {
    // Application code goes here; for instance:
    appSession = sessionUtils.getApplicationSession(_sessionId);
    appSession.createRequest().....
    
    Serializable myResponse = new MyResponse();
    myResponse.setStatus(200);
    return (myResponse);
    }
    }
  2. 태스크 완료에 관한 정보를 수신하려면 다음 예에서와 같이 AsynchronousWorkListener 클래스를 구현하십시오. 이들 메소드의 코드는 소스 서버에서 호출됩니다.
    public class MyListener implements AsynchronousWorkListener
    {
    public void workCompleted(Serializeable myResponse)
    {
    ....
    }
    public void workFailed(int reasonCode, String reason)
    {
    }
    }
  3. 비동기 호출을 호출하려면, 예를 들어 독점 메시지를 수신할 때 다음 샘플 코드를 예로 사용하십시오.
    public void onMyMessage()
    {
    // Obtain the session ID from the message or
    // somewhere else
    String sessionId = obtainIdFromMessage();
    
    // Create the runnable
    MyClass myClass = new MyClass(sessionId);
    
    // Create the listener
    MyListener myListener = new MyListener();
    
    // Dispatch it
    myClass.dispatch(myListener);
    }

결과

SIP 컨테이너는 태스크가 올바른 서버 및 올바른 스레드에서 호출되어 애플리케이션이 세션 레벨에서의 동기화를 피할 수 있도록 보장합니다.

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



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