如何解析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;
}
这是我扩展远程接口的class:
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();
}
}
}
我创建了两个单独的项目,一个用于服务器,另一个用于客户端,如下图 link:image
我的服务器工作正常,但客户端给我这个错误:
java.rmi.NotBoundException: rmi://localhost//第 18 行的 HelloWorld
怎么了??如果有人可以,请post给我一个例子!谢谢 :D
P.S:也许很重要!这是外部配置工具:
image2
摆脱查找 URL。查找 URL 用于 Naming
class。您已经有一个 Registry 对象,它是为特定主机和端口创建的。 因此您只需要查找名称,与绑定时相同。只需使用 "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;
}
这是我扩展远程接口的class:
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();
}
}
}
我创建了两个单独的项目,一个用于服务器,另一个用于客户端,如下图 link:image 我的服务器工作正常,但客户端给我这个错误: java.rmi.NotBoundException: rmi://localhost//第 18 行的 HelloWorld
怎么了??如果有人可以,请post给我一个例子!谢谢 :D
P.S:也许很重要!这是外部配置工具: image2
摆脱查找 URL。查找 URL 用于 Naming
class。您已经有一个 Registry 对象,它是为特定主机和端口创建的。 因此您只需要查找名称,与绑定时相同。只需使用 "HelloWorld"
.