UseAsyncMethod (Apache CXF JavaDoc 3.0.4.redhat-621177 API)

org.apache.cxf.annotations

## Annotation Type UseAsyncMethod

-     @Documented
      @Retention(value=RUNTIME)
      @Target(value=METHOD)
      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 and Description
    --- | ---
    `boolean` | `always` By default, if continuations are not available, it will use the non-async method.

- - ### Element Detail

    - #### always

          public abstract 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

Apache CXF