Q) How to start RMI Registry Server?
A) 2 solutions.
Solution 1) From cmd window. Java/bin folder, use rmiregistry.exe
If you call rmiregistry, it will start rmi server on port 1099
You can also start rmiregistry portNumber
Solution 2) From java code:
registry = LocateRegistry.createRegistry(rmiPort);
registry.bind("shutdown", new ShutdownServerImpl(this));
Q) Server sample code
public interface ShutdownServer extends Remote
{
boolean shutDown() throws RemoteException;
}
public class ShutdownServerImpl extends UnicastRemoteObject implements ShutdownServer
{
public ShutdownServerImpl() throws RemoteException
{
super();
}
private static final long serialVersionUID = 1L;
public boolean shutDown() throws RemoteException
{
return service.shutDownServer();
}
}
Q) Client sample code
public class ShutDownServerClient
{
public static void main(String[] args) throws Exception
{
String url = "rmi://localhost:2099/";
try
{
Context namingContext = new InitialContext();
ShutdownServer shutDownServer = (ShutdownServer) namingContext.lookup(url + "shutdown");
shutDownServer.shutDown();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Q) Some other trcky issue
When you start rmiregistry from java/bin folder cmd window,
1) You must make sure the ShutdownServer interface is in the classpath. Set CLASSPATH before.
2) Use such sample code to register remote class.
Context namingContext = new InitialContext();
namingContext.bind("rmi:shutdown", new ShutdownServerImpl(this));
And I don’t know how to register to none 1099 port. L