protected Response getResponse(
     HttpRequest request, HttpResponse response, ResourceInvoker invoker) {
   Response jaxrsResponse = null;
   try {
     jaxrsResponse = invoker.invoke(request, response);
     if (request.getExecutionContext().isSuspended()) {
       /**
        * Callback by the initial calling thread. This callback will probably do nothing in an
        * asynchronous environment but will be used to simulate AsynchronousResponse in vanilla
        * Servlet containers that do not support asychronous HTTP.
        */
       request.getExecutionContext().getAsyncResponse().initialRequestThreadFinished();
       jaxrsResponse = null; // we're handing response asynchronously
     }
   } catch (Exception e) {
     handleInvokerException(request, response, e);
   }
   return jaxrsResponse;
 }
  public void pushContextObjects(HttpRequest request, HttpResponse response) {
    Map contextDataMap = ResteasyProviderFactory.getContextDataMap();
    contextDataMap.put(HttpRequest.class, request);
    contextDataMap.put(HttpResponse.class, response);
    contextDataMap.put(HttpHeaders.class, request.getHttpHeaders());
    contextDataMap.put(UriInfo.class, request.getUri());
    contextDataMap.put(Request.class, new RequestImpl(request));
    contextDataMap.put(ExecutionContext.class, request.getExecutionContext());

    contextDataMap.putAll(defaultContextObjects);
  }