首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RMI对象已导出

RMI对象已导出
EN

Stack Overflow用户
提问于 2016-12-06 03:43:34
回答 1查看 5.6K关注 0票数 1

我在尝试让RMI工作时遇到了一个问题。我的注册表正在运行,当我尝试启动服务器时,一个窗口弹出不到一秒钟,然后关闭。为什么会发生这种情况。

服务器包- MyFileServer.java

代码语言:javascript
复制
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();
        }
    }


}

像这样运行它。

代码语言:javascript
复制
start java -classpath E:\Documents\Development\Projects\OOP3_Project1\bin\Server/ -Djava.rmi.codebase=file:/E:\Documents\Development\Projects\OOP3_Project1\bin\Server/ MyFileServer    

如果有人能帮上忙那就太好了

EN

回答 1

Stack Overflow用户

发布于 2016-12-06 03:52:15

删除UnicastRemoteObject.exportObject()行。只有当您的远程对象没有扩展UnicastRemoteObject时才需要它。您可以绑定server而不是存根。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40982100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档