jsr345-experts@ejb-spec.java.net

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

From: Jeremy Bauer <jrbauer_at_us.ibm.com>
Date: Tue, 11 Dec 2012 16:11:26 -0600

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