2016-12-05 47 views
0

我遇到了一个尝试让RMI工作的问题。我有注册表运行,当我尝试启动服务器时,一个窗口弹出不到一秒钟,然后关闭。这是为什么发生。已导出RMI对象

服务器软件包--- MyFileServer.java

package Server; 

import java.io.File; 
import java.io.FileInputStream; 
import java.rmi.AlreadyBoundException; 
import java.rmi.RemoteException; 
import java.rmi.registry.LocateRegistry; 
import java.rmi.registry.Registry; 
import java.rmi.server.UnicastRemoteObject; 

/** 
* Created by alexi on 05/12/2016. 
*/ 
public class MyFileServer extends UnicastRemoteObject implements ServerInit { 



    protected MyFileServer() throws RemoteException { 
     super(); 
    } 

    @Override 
    public void importFiles(Notify n, String name) throws RemoteException { 
     String videoPath = "src" + File.separator + "Videos" + File.separator + name; 
     try { 

      File video = new File(videoPath); 
      FileInputStream in=new FileInputStream(video); 
      byte [] mydata=new byte[(int)video.length()+1]; 
      int mylen=in.read(mydata); 
      while(mylen>0){ 
       n.sendData(video.getName(), mydata, mylen); 
       mylen=in.read(mydata); 
      } 

     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args){ 
     try{ 
      ServerInit server = new MyFileServer(); 
      ServerInit stub = (ServerInit) UnicastRemoteObject.exportObject(server, 0); 

      Registry registry = LocateRegistry.getRegistry(); 
      registry.bind("videoServer", stub); 

     }catch (RemoteException e){ 
      e.printStackTrace(); 
     } catch (AlreadyBoundException e) { 
      e.printStackTrace(); 
     } 
    } 


} 

像这样运行它。

start java -classpath E:\Documents\Development\Projects\OOP3_Project1\bin\Server/ -Djava.rmi.codebase=file:/E:\Documents\Development\Projects\OOP3_Project1\bin\Server/ MyFileServer  

如果有人可以帮助将是巨大的

+0

随着解决方案的发展,不要随时改变您的问题。 – EJP

+0

@EJP你在说什么,我只是改了标题。内容仍然相同 –

+0

您将标题更改为完全模糊的标题,这使问题完全没有意义,因为在问题中没有提供有关实际问题或错误消息的其他提示。 – EJP

回答

0

取出UnicastRemoteObject.exportObject()线。你只需要,如果你的远程对象不扩展UnicastRemoteObject。您可以绑定server而不是存根。

+0

嘿谢谢。我执行后立即关闭。 –

+0

但有一个不同的例外。 – EJP