jsr345-experts@ejb-spec.java.net

[jsr345-experts] Re: EJB_SPEC-71 - Clarify rules on Timer.cancel

From: Marina Vatkina <marina.vatkina_at_oracle.com>
Date: Tue, 11 Dec 2012 14:15:15 -0800

Thank you Jeremy.

Do you think the spec needs to change to allow b2?

thanks,
-marina

Jeremy Bauer wrote:
> Hi Marina,
>
> a) No. WebSphere also allows a timer to be canceled by a non-owning
> bean. This would be an incompatible change for our implementation. +1
> for dropping the rule in getAllTimers().
>
> b) WebSphere does not allow a non-EJB caller to invoke cancel(). The
> "Operations Allowed in the Methods of a ... Bean " tables indicate
> when Timer methods can be called. Per spec, the container throws an
> IllegalStateException if a method is invoked outside of the permitted
> states. I haven't found anything that explicitly covers calls outside
> of a bean, though. In any case, it does seem like an unnecessary
> restriction to prevent invocation of Timer methods outside a bean.
>
> -Jeremy
>
>
>
> From: Marina Vatkina <marina.vatkina_at_oracle.com>
> To: jsr345-experts_at_ejb-spec.java.net,
> Date: 12/04/2012 01:03 AM
> Subject: [jsr345-experts] EJB_SPEC-71 - Clarify rules on
> Timer.cancel
> ------------------------------------------------------------------------
>
>
>
> Experts,
>
> Please look at http://java.net/jira/browse/EJB_SPEC-71 - which is a
> separate issue on Timer.cancel mismatch in the spec.
>
> Please let me know, if you think that:
>
> a) A timer can be cancelled only by the bean that owns it (as in
> getAllTimers() rule)
>
> Or
>
> b1) A timer can be cancelled by calling Timer.cancel() (i.e. the rule in
> getAllTimers() should be removed)
>
> b2) Timer can be cancelled by a non-EJB caller (i.e. the spec should
> remove references to a bean or a Bean Provider when describing the timer
> cancellation).
>
> Depending on the outcome of your vote, I'll update the spec one way or
> the other.
>
> As a note: GlassFish (RI) allows a non-owning bean (I didn't check a
> servlet) to cancel a timer by calling its cancel() method.
>
>
> thanks,
> -marina
>
>