These two scenarios are considered separately in pages 558 and 559.
"Client calls remove() on a stateful bean that is still in an open tx"
"Client call the home remove method on the home interface of a session bean"
In both scenarios the book says you get a RemoveException as Keerthi points out. That's fine.
The other scenario, the one Giju is talking about, says "Client calls remove() on a bean that's already been removed"
I agre with Giju in that in this case you should get a NoSuchObjectException, specially when the book says "remove() is just another method in the bean's interface ... you'll get the same exception you'd see if you called any other business method on a removed bean". So we're not talking about removes in the home interface and calling remove within an open transaction is also considered separately. The only choice here has to be NoSuchObjectException ...
But my ques is .. what does the client get, RemoteException/ NoSuchObjectException ?. Because if the bean throws a system exception, then the container will throw a RemoteException to the (remote)client. Does that mean the client can get any subclass exception of RemoteException ?