actually, it seems that cancel() does not interrupt anything in this context

it just changes a flag for

    @Resource
    private SessionContext context;


to context.wasCancelCalled()

right?

[]

Leo

On Tue, Jan 12, 2016 at 6:13 PM, Leonardo K. Shikida <[email protected]>
wrote:

> I understand the need to wrap the result in a AsyncResult
>
> My question is if inside the @Asynchronous method I have a Thread.sleep()
> and if the caller method keeps the Future object, if I call
> Future.cancel(true), will it send an interrupt to the @Asynchrnonous method
> or will it be ignored?
>
> []
>
> Leo
>
> On Tue, Jan 12, 2016 at 10:58 AM, Romain Manni-Bucau <
> [email protected]> wrote:
>
>> the future returned to the caller can be cancelled, the future instance
>> you
>> return can't since it is here just to match the returned type:
>>
>> public Future<Foo> asyncMethod() {
>>     return new Foo();
>> }
>>
>> this is really what you do but it doesnt compile so you wrap Foo in an
>> AsyncResult to match java typing but if you debug it is not a AsyncResult
>> that the caller get but a real Future.
>>
>>
>>
>> Romain Manni-Bucau
>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>> <http://rmannibucau.wordpress.com> | Github <
>> https://github.com/rmannibucau> |
>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
>> <http://www.tomitribe.com>
>>
>> 2016-01-12 13:42 GMT+01:00 Leonardo K. Shikida <[email protected]>:
>>
>> > Hi
>> >
>> > Is it possible to cancel a long-running @Asynchronous method?
>> >
>> > My idea was to cancel the Future object, but according to
>> >
>> > http://tomee.apache.org/examples-trunk/async-methods/README.html
>> >
>> > "Important to note that the AsyncResult object the JobProcessor returns
>> is
>> > not the same Future object the caller is holding. It would have been
>> neat
>> > if the real JobProcessor could just return String and the caller's
>> version
>> > of JobProcessor could return Future<String>, but we didn't see any way
>> to
>> > do that without adding more complexity. So the AsyncResult is a simple
>> > wrapper object. The container will pull the String out, throw the
>> > AsyncResult away, then put the String in the *real* Future that the
>> caller
>> > is holding."
>> >
>> > This thread also indicates that it's not defined in the EJB spec
>> >
>> >
>> >
>> http://stackoverflow.com/questions/16493381/cannot-cancel-asynchronous-call-to-ejb
>> >
>> > Any help is welcome.
>> >
>> > []
>> >
>> > Leo
>> >
>>
>
>

Reply via email to