2017-04-07 77 views
0

啓動程序在指定端口上運行後,程序會在客戶端連接到該端口之前終止。爲什麼我的RMI服務器在客戶端連接之前退出?

try { 
     StudentService obj = new StudentService(); 
     Registry r = LocateRegistry.createRegistry(4200); 
     r.bind("localhost", obj); 

    } catch (RemoteException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (AlreadyBoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

這是位於StudentService類中的方法已被覆蓋。

int multiply(int s, int b) throws RemoteException { 
    return s * b; 
} 
+0

http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/hello/hello-world.html – prasanth

+0

否 '連接' 被 '丟失' 在這裏。在RMI中沒有這樣的連接。您的JVM *正在退出。* – EJP

+0

注意這是您發佈的兩篇文章中的第二個錯誤標題。你需要對真正發生的事情更精確。 – EJP

回答

0

從文檔,

UnicastRemoteObject.exportObject中出口所提供的遠程對象的匿名TCP端口上接收傳入的遠程方法調用和返回遠程對象的存根傳遞給客戶

因此,沒有聽到傳入的連接,程序結束就不足爲奇了。這應該工作。

try { 
    StudentService obj = new StudentService(); 
    UnicastRemoteObject.exportObject(obj, 0); 

    Registry r = LocateRegistry.createRegistry(4200); 
    r.bind("localhost", obj); 

} catch (RemoteException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (AlreadyBoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

這解決了我遇到的問題。謝謝 – KMuir

+0

歡迎您 – prasanth

+0

考慮投票處理堆棧溢出中的問題和答案,您發現這些問題很有幫助,以便對其他人有所幫助。謝謝:) – prasanth

相關問題