UseAsyncMethod (Apache CXF JavaDoc 4.1.6 API)
Description: declaration: package: org.apache.cxf.annotations, annotation type: UseAsyncMethod

Package org.apache.cxf.annotations

# Annotation Interface UseAsyncMethod

@Documented @Retention(RUNTIME) @Target(METHOD) @Inherited public @interface UseAsyncMethod
Instructs the runtime to dispatch using the async method on service if continuations are available. This only applies to the JAX-WS frontend at this time. Instead of calling the "X methodName(Y, Z...) method, it will call the "Future<?> methodName(Y, Z, ... AsyncHandler)" method passing in an AsyncHandler that you will need to call when the response is ready. An example would be:

     public Future<?> greetMeAsync(final String requestType,
                                   final AsyncHandler asyncHandler) {
         final ServerAsyncResponse r = new ServerAsyncResponse<>();
         new Thread() {
             public void run() {
                //do some work on a backgound thread to generate the response...
                GreetMeResponse resp = new GreetMeResponse();
                resp.setResponseType("Hello " + requestType);
                r.set(resp);
                asyncHandler.handleResponse(r);
             }
        } .start();
        return r;
     }

The use of the org.apache.cxf.jaxws.ServerAsyncResponse class for the response as shown above can simplify things and is recommended.

- ## Optional Element Summary

  Optional Elements
  Modifier and Type
  Optional Element
  Description
  `boolean`
  `always`
  By default, if continuations are not available, it will use the non-async method.

- ## Element Details

  - ### always

    boolean always
    By default, if continuations are not available, it will use the non-async method. If you ALWAYS want the async method called, set this to true. However, that can cause threads to block.
    Default:
      false