Tenho uma aplicação que da start num servidor e funciona normalmente
porem eu preciso parar o servidor rmi a classe abaixo mostra o que estou fazendo para parar o servidor rmi, porem eu preciso em algum momento reiniciar o servidor e para simular esta situação eu fiz um while onde eu dou start e também paro o servidor rmi, porem quando eu paro o servidor rmi e tento restartar ele me da um erro…
a classe esta abaixo:
package cliente;
import classescomuns.ClientImpl;
import java.rmi.Naming;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import javax.swing.JOptionPane;
/**
*
* @author Jonas
*/
public class TesteRmi {
public static void main(String[] args) {
while (true) {
try {
java.rmi.registry.LocateRegistry.createRegistry(1099); //linha com o erro
ClientImpl obj = new ClientImpl();
String sbind = "//localhost:" + 1099 + "/Server";
Naming.rebind(sbind, obj);
System.out.println("RMI registry ready.");
JOptionPane.showMessageDialog(null, "Servidor Iniciado");
Registry reg = java.rmi.registry.LocateRegistry.getRegistry(1099);
reg.unbind("Server");
UnicastRemoteObject.unexportObject(obj, true);
Thread.sleep(1000);
JOptionPane.showMessageDialog(null, "Servidor Parado");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
erro:
java.rmi.server.ExportException: internal error: ObjID already in use
at sun.rmi.transport.ObjectTable.putTarget(ObjectTable.java:186)
at sun.rmi.transport.Transport.exportObject(Transport.java:106)
at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:260)
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411)
at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147)
at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:212)
at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:152)
at sun.rmi.registry.RegistryImpl.(RegistryImpl.java:137)
at java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:203)