nimbus (1.2.4) | 2018-01-25 20:02 |
nimbus-sample (1.2.4) | 2018-01-26 17:06 |
jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorServiceは、メソッドの呼び出しを非同期にするInterceptor実装サービスです。
このサービスは、複合的なサービスで、以下のサービスを下位サービスとして使用します。
下位サービスインタフェース | 用途 |
jp.ossc.nimbus.service.queue.Queue | 応答待ちをするためのキューサービス。 |
このインターセプタの非同期呼び出しには、3種類の非同期呼び出しがある。
1つめは、戻り値を必要としない非同期呼び出し。この場合は、戻り値は必ずnullを返す。
以下に、その場合の非同期呼び出しインターセプタのサービス定義例を示す。
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE server PUBLIC
- "-//Nimbus//DTD Nimbus 1.0//JA"
- "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
- <server>
- <manager>
- <!-- 非同期呼び出しを行うInterceptorサービス -->
- <service name="MethodAsynchronousInterceptor"
- code="jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorService/">
- </manager>
- </server>
2つめは、任意の時間だけ非同期呼び出しの応答を待つ非同期呼び出し。
時間内に応答が返ってくれば戻り値または例外を返し、時間内に応答が返ってこなければnullを返す。但し、setFailToWaitResponseTimeout(true)に設定すると、AsynchronousTimeoutExceptionをthrowする。
以下に、その場合の非同期呼び出しインターセプタのサービス定義例を示す。
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE server PUBLIC
- "-//Nimbus//DTD Nimbus 1.0//JA"
- "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
- <server>
- <manager>
- <!-- 非同期呼び出しを行うInterceptorサービス -->
- <service name="MethodAsynchronousInterceptor"
- code="jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorService">
- <!-- 応答のタイムアウト[ms]を設定する -->
- <attribute name="ResponseTimeout">1000</attribute>
- </service>
- </manager>
- </server>
3つめは、メソッドの戻り値やthrowされた例外を任意のタイミングで取得する非同期呼び出し。
この場合は、レスポンスを格納するQueueサービスをこのサービスの属性に設定し、そのQueueサービスから戻り値やthrowされた例外を格納したAsynchronousResponseを取得できる。
以下に、その場合の非同期呼び出しインターセプタのサービス定義例を示す。
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE server PUBLIC
- "-//Nimbus//DTD Nimbus 1.0//JA"
- "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
- <server>
- <manager>
- <!-- 非同期呼び出しを行うInterceptorサービス -->
- <service name="MethodAsynchronousInterceptor"
- code="jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorService">
- <!-- 応答用のQueueサービスのサービス名を設定する -->
- <attribute name="ResponseQueueServiceName">#ResponseQueue</attribute>
- <depends>ResponseQueue</depends>
- </service>
- <!-- 応答用のQueueサービス -->
- <service name="ResponseQueue"
- code="jp.ossc.nimbus.service.queue.DefaultQueueService"/>
- </manager>
- </server>