This is what I tried and it worked fine:
Log into the server from a Smack client
Add roster items to the roster of the user
Log into the server from Exodus
Remove the roster item from Exodus
This is the packet that Exodus sent to the server:
<iq id="jcl_165" type="set">
<query xmlns="jabber:iq:roster"><item jid="user1@localhost" subscription="remove"/>
The Smack client received this packet from the server:
<iq id="567-88" to="user0@localhost/Smack" type="set">
<item jid="user1@localhost" subscription="remove"/>
and the roster of the user in Smack was updated accordingly. This is the expected result since Smack is always listening for the roster packets and will update the roster automatically.
I have a question for you, why are you mentioning the method #removeEntry()? Are you trying to manually remove the item from the roster? There is no need to do that since Smack will do that work for you. You need to send #removeEntry only if you are the one that is requesting to remove the entry from the roster but in my example there is no need for that since Exodus is the client that made the request.