Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
到本地主机的JavaRMI连接失败_Java_Rmi - Fatal编程技术网

到本地主机的JavaRMI连接失败

到本地主机的JavaRMI连接失败,java,rmi,Java,Rmi,我从RMI开始 我不想用Java为数据库管理员创建服务器(这是大学的事情),当我运行下面列出的代码时,要启动服务器的接口,我与localhost的连接失败: 顺便说一下,我使用OSX和Eclipse来编写代码 /** * */ package es.uned.database; import es.uned.common.IBasededatos; import es.uned.common.Utils; import java.rmi.Naming; import java.rmi.

我从RMI开始

我不想用Java为数据库管理员创建服务器(这是大学的事情),当我运行下面列出的代码时,要启动服务器的接口,我与localhost的连接失败:

顺便说一下,我使用OSX和Eclipse来编写代码

/**
 * 
 */
package es.uned.database;

import es.uned.common.IBasededatos;
import es.uned.common.Utils;

import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.server.*;

import es.uned.common.IServidor;

/**
 *  
 * @author 
 * 
 */
public class Basededatos extends UnicastRemoteObject implements IBasededatos{
    protected Basededatos() throws RemoteException {
        super();
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) throws Exception {

        Utils.setCodeBase(IServidor.class); 


        if (System.getSecurityManager()==null) {
            System.setSecurityManager(new RMISecurityManager());
        }
        String nombre = "//localhost/Basededatos";
        try{
            IBasededatos servidorBD = new Basededatos();
            Naming.rebind(nombre, servidorBD);
            System.out.println("Data base is up an ready");
        }catch (Exception e) {
            System.err.println("Database exception: " + e.getMessage());
            e.printStackTrace();
        }

    }
}
这是我收到的错误消息

拒绝访问(“java.net.SocketPermission”“127.0.0.1:1099”“连接,解析”)

我尝试过其他代码,但同样成功

/**
 * 
 */
package es.uned.database;

import es.uned.common.IBasededatos;
import es.uned.common.Utils;
import java.rmi.RMISecurityManager;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.*;

/**
 *  
 * @author 
 * 
 */
public class Basededatos implements IBasededatos{
    public Basededatos()  {
        super();
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) throws Exception {

        //Utils.setCodeBase(IServidor.class);   


        if (System.getSecurityManager()==null) {
            System.setSecurityManager(new RMISecurityManager());
        }
        String nombre = "//localhost/Basededatos";
        try{
            IBasededatos servidorBD = new Basededatos();
            IBasededatos stub = (IBasededatos)UnicastRemoteObject.exportObject(servidorBD, 1099);
            Registry registry = LocateRegistry.getRegistry();
            registry.rebind(nombre, servidorBD);
            System.out.println("Servidor Base de datos arriba");
        }catch (Exception e) {
            System.err.println("Excepcion base de datos: " + e.getMessage());
            e.printStackTrace();
        }

    }
}
有人能帮我吗? 非常感谢

  • 客户端从错误的位置获取注册表。它需要查找的注册表位于服务器主机上,而不是它自己的本地主机上

  • RMI URL用于命名类。您正在客户端中使用注册表接口,因此根本不应该指定
    //localhost/