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 always
      By default, if continuations are not available, it will use the non-async method.
    • Element Detail

      • 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