I don't know the point of @Remove or what the spec authors were thinking, but it says that invoking an @Remove method removes the SFB [b]and[/b] the associated session. I think the transaction is associated with the session so removing the session requires completing the transaction.
I would expect things to work if the [b]last[/b] thing your SLB did was invoke an @Remove method (then returned), but wouldn't be overly surprised if it didn't [though perhaps disappointed :-].
I suspect you're trying to do something that just isn't allowed due to the lack of a session but I do not know, nor do I have a fix for you (except perhaps you can override the @Remove via the SFB's deployment descriptor?).
[Message sent by forum member 'matterbury' (matterbury_at_abinitio.com)]
http://forums.java.net/jive/thread.jspa?messageID=362736