2011-06-13 99 views
11

已停止后,我在重新启动我的RMI注册表中的一个问题:无法启动RMI服务器它

import java.rmi.*; 
import java.rmi.registry.*; 
import java.rmi.server.UnicastRemoteObject; 
import javax.swing.JOptionPane; 

public class CinemaServer 
{ 
    private Registry registry; 
    ClientImpl clientImple; //remote interface implemented class 
    private static String title="Cinema Pvt Ltd"; 

    public CinemaServer() { 
     try { 
      clientImple = new ClientImpl(); 
      registry=LocateRegistry.createRegistry(3311); 
      registry.rebind("RMI_INSTANCE", clientImple); 
    } catch (RemoteException e) { 
      JOptionPane.showMessageDialog(null, "Can't Start RMI Server",title,JOptionPane.ERROR_MESSAGE); 
     } 
    } 

    public void stopServer() 
    { 
     try { 
      registry.unbind("RMI_INSTANCE"); 
      UnicastRemoteObject.unexportObject(clientImple, true); 
     } catch (NotBoundException e) { 
      JOptionPane.showMessageDialog(null, "Can't Stop Server",title,JOptionPane.ERROR_MESSAGE); 
     } 
    } 
} 
  1. 我启动服务器:CinemaServer ser=new CinemaServer();

  2. 当我拨打ser.stopServer();时,它停止。

  3. 但我不能重新启动它

我越来越:

java.rmi.server.ExportException: internal error: ObjID already in use 
at sun.rmi.transport.ObjectTable.putTarget(Unknown Source) 
at sun.rmi.transport.Transport.exportObject(Unknown Source) 
at sun.rmi.transport.tcp.TCPTransport.exportObject(Unknown Source) 
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(Unknown Source) 
at sun.rmi.transport.LiveRef.exportObject(Unknown Source) 
... 
+1

您可以粘贴您收到的错误消息吗?当您尝试重新启动时会发生什么? – 2011-06-13 14:59:11

+0

我收到“java.rmi.server.ExportException:内部错误:ObjID已在使用中”错误 – sanu 2011-06-13 15:05:17

+0

您可以发布堆栈跟踪吗? – Mikaveli 2011-06-13 15:11:37

回答

14

呼叫在createRegistry()失败,上再出口的对象不是。不要创建注册表两次。

+0

ohhh我怎么忘了它?谢谢@jtahlborn我解决你的帮助再次感谢 – sanu 2011-06-14 16:18:40

+0

你救了我的一天:) – 2014-01-29 21:44:21