FYI -- Just updated the implementation to fix an issue with @Remove
retainIfException that didn't match the spec. retainIfException only
applies to Application exceptions, not System exceptions. The
previous implementation didn't make that distinction.
So, if a Stateful session bean method marked as a remove-method
throws a system exception, it will always be removed, regardless of
the value of retainIfException. This makes sense since it's a consistent
rule across EJB that system exceptions result in bean instance
removal.
The final spec will also clarify the SessionSychronization behavior for
remove-methods. SessionSynchronization callbacks are not called
if the bean is removed as a result of a remove-method. That behavior
is now implemented as well.
--ken