如何解决java.rmi.NotBoundException:rmi:// localhost // HelloWorld?

时间:2015-02-05 10:45:25

标签: java rmi

我开始使用Java RMI。我试图做一个Hello World例子,但我没有。 这是我的远程接口代码:

package server;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Hello extends Remote
{
    public String saluta(String who) throws RemoteException;
}

这是我的扩展远程接口的类:

package server;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class HelloWorld extends UnicastRemoteObject implements Hello
{

    private static final long serialVersionUID = 1L;

    public HelloWorld() throws RemoteException
    {
        super();
    }

    public String saluta(String who) throws RemoteException
    {
        return "Hello " + who;
    }
}

这是我的服务器:

package server;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.logging.Logger;

public class Server
{

    static Logger logger = Logger.getLogger("global");

    public static void main(String[] args)
    {
        System.setProperty("java.security.policy", "policy.all");
        if (System.getSecurityManager() == null)
        {
            System.setSecurityManager(new SecurityManager());
        }

        try
        {
            HelloWorld hello = new HelloWorld();

            Registry r = LocateRegistry.createRegistry(9000);


            logger.info("Creo l'oggetto");


            logger.info("...ora ne effettuo il rebind...");
            r.rebind("HelloWorld", hello);
            logger.info("...pronto");
        } catch (Exception e)
        {
            e.printStackTrace();
        }

    }

}

这是我的客户代码:

package hello.client;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.logging.Logger;

public class Client
{
    static Logger logger = Logger.getLogger("global");

    public static void main(String[] args)
    {
        try
        {
            Registry r = LocateRegistry.getRegistry(9000);
            logger.info("Sto cercando l'oggetto remoto...");
            Hello hello = (Hello) r.lookup("rmi://localhost//HelloWorld");


            System.out.println(hello.saluta("Graziano"));

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

    }

}

我创建了两个separeted项目,一个用于服务器,另一个用于客户端,如下图所示:image 我的服务器工作正常,但客户端给我这个错误: java.rmi.NotBoundException:rmi:// localhost //第18行的HelloWorld

什么错了?如果有人可以,请给我发一个例子!谢谢:D

P.S:也许可能很重要!这是外部配置工具: image2

1 个答案:

答案 0 :(得分:0)

删除查找网址。查找URL适用于Naming类。您已经有一个Registry对象,它是为一个特定的主机和端口创建的。 Ergo 您只需要查找名称,与绑定时相同。只需使用"HelloWorld"