簡體   English   中英

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

[英]How to resolve java.rmi.NotBoundException: rmi://localhost//HelloWorld?

我開始使用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();
        }

    }

}

我創建了兩個分離的項目,一個用於服務器,另一個用於客戶端,如以下鏈接中的圖像所示: image我的服務器運行正常,但是客戶端使我看到此錯誤:java.rmi.NotBoundException:rmi:// localhost // HelloWorld在第18行

怎么了?? 如果有人可以,請給我舉個例子! 感謝:D

PS:也許很重要! 這是外部配置工具: image2

擺脫查找URL。 查找URL用於Naming類。 您已經有一個注冊表對象,並且該對象是為專用主機和端口創建的。 因此,您只需要與綁定時相同的查找名稱。 只需使用"HelloWorld"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM