I implemented a restful web service and a stateless session bean. The web service calls a method of the bean which is annotated with @Asynchronous and returns an instance of AsyncResult. After a while the web service calls the cancel() method of that result while the asynchronous method call is still computing. After that "cancellation" both the isCancelled() and the isDone() methods of the result/future return true. Thus the asynchronous bean call should be interrupted or cancelled. But it is still alive until it itself decides to finish gracefully or not.
With this erroneous implementation or handling the Future.cancel() method is of no use to an application developer. And asynchronous calls loose one of their major advantages.