Annotation Type 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
    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