File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Distributed Java and the fly likes Stopping RMI programatically Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Distributed Java
Bookmark "Stopping RMI programatically" Watch "Stopping RMI programatically" New topic

Stopping RMI programatically

David Nemeskey
Ranch Hand

Joined: Nov 08, 2006
Posts: 52

Do you know if there is a way to stop the RMI service on the server side programatically?

I started RMI by creating a Registry with LocateRegistry.createRegistry(). I traced the program with jconsole. It seems like whatever I do (unbinding the service, unexporting the exported service object, even unexporting the registry itself), the RMI Accept-<port> thread(s) don't stop. Do I have to exit the application to stop the RMI threads, or have I just missed something?
Edward Harned
Ranch Hand

Joined: Sep 19, 2005
Posts: 291

The only way to end the RMI Server is with System.exit(). There are many non-daemon threads alive, so you must end the process yourself.

Ed's latest article: A Java Reactive Generator
Mr. C Lamont Gilbert
Ranch Hand

Joined: Oct 05, 2001
Posts: 1170

You have to unexport your server. I do not know exactly how you can stop the registry if you started it programatically. But if you do not start the registry than it will still be listening.

So which exactly is listening, the registry or your server?
David Nemeskey
Ranch Hand

Joined: Nov 08, 2006
Posts: 52
Edward Harned: thanks for the answer. Too bad; I think this is a serious feature hole in RMI, then.

Mr. C Lamont Gilbert: As I said in the topic starter, I unexported both. And I think nothing is listening, just the "RMI Accept-Xxxx" threads are running (and who knows what other resources RMI needs). Unfortunately it seems that there is no way to write a flexible RMI server (with reconfigurable ports). Or, rather, not this way.

For reference, here is the code. Never mind the method indices, I had some others as well to test it

[ April 26, 2007: Message edited by: David Nemeskey ]
I agree. Here's the link:
subject: Stopping RMI programatically
jQuery in Action, 3rd edition