Interceptor実装サービス jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorService

jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorServiceは、メソッドの呼び出しを非同期にするInterceptor実装サービスです。

このサービスは、複合的なサービスで、以下のサービスを下位サービスとして使用します。

下位サービスインタフェース用途
jp.ossc.nimbus.service.queue.Queue応答待ちをするためのキューサービス。

このインターセプタの非同期呼び出しには、3種類の非同期呼び出しがある。

1つめは、戻り値を必要としない非同期呼び出し。この場合は、戻り値は必ずnullを返す。
以下に、その場合の非同期呼び出しインターセプタのサービス定義例を示す。

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE server PUBLIC
  3. "-//Nimbus//DTD Nimbus 1.0//JA"
  4. "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
  5. <server>
  6. <manager>
  7. <!-- 非同期呼び出しを行うInterceptorサービス -->
  8. <service name="MethodAsynchronousInterceptor"
  9. code="jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorService/">
  10. </manager>
  11. </server>

2つめは、任意の時間だけ非同期呼び出しの応答を待つ非同期呼び出し。
時間内に応答が返ってくれば戻り値または例外を返し、時間内に応答が返ってこなければnullを返す。但し、setFailToWaitResponseTimeout(true)に設定すると、AsynchronousTimeoutExceptionをthrowする。
以下に、その場合の非同期呼び出しインターセプタのサービス定義例を示す。

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE server PUBLIC
  3. "-//Nimbus//DTD Nimbus 1.0//JA"
  4. "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
  5. <server>
  6. <manager>
  7. <!-- 非同期呼び出しを行うInterceptorサービス -->
  8. <service name="MethodAsynchronousInterceptor"
  9. code="jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorService">
  10. <!-- 応答のタイムアウト[ms]を設定する -->
  11. <attribute name="ResponseTimeout">1000</attribute>
  12. </service>
  13. </manager>
  14. </server>

3つめは、メソッドの戻り値やthrowされた例外を任意のタイミングで取得する非同期呼び出し。
この場合は、レスポンスを格納するQueueサービスをこのサービスの属性に設定し、そのQueueサービスから戻り値やthrowされた例外を格納したAsynchronousResponseを取得できる。
以下に、その場合の非同期呼び出しインターセプタのサービス定義例を示す。

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE server PUBLIC
  3. "-//Nimbus//DTD Nimbus 1.0//JA"
  4. "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
  5. <server>
  6. <manager>
  7. <!-- 非同期呼び出しを行うInterceptorサービス -->
  8. <service name="MethodAsynchronousInterceptor"
  9. code="jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorService">
  10. <!-- 応答用のQueueサービスのサービス名を設定する -->
  11. <attribute name="ResponseQueueServiceName">#ResponseQueue</attribute>
  12. <depends>ResponseQueue</depends>
  13. </service>
  14. <!-- 応答用のQueueサービス -->
  15. <service name="ResponseQueue"
  16. code="jp.ossc.nimbus.service.queue.DefaultQueueService"/>
  17. </manager>
  18. </server>


アスペクト指向/Interceptor