Class FoodItem{
private String name;
private int numCalories;
public FoodItem(String s, int cals)
{
name = s;
numCalories = cals
}
public String getName()
{
return name;
}
public int getNumOfCalories()
{
return numCalories;
}
}
public class FoodItemServer
{
public static void main(String [] args)
{
FoodItem f1 = new FoodItem("Wispa", 254);
FoodItem f2 = new FoodItem("Apple", 45);
System.out.println( "Food Name: " + f1.getName + “has “ +
f1.getCalories +“calories”);
}
}
我们最近开始使用RMI,我很难理解它。
在前面的示例中(我将在下面介绍),我们使用一个工厂来存储我们的对象,并在我们从工厂调用的实例的服务器类中使用Naming.rebind()
。
在上面的例子中,我只拥有实现和服务器类,没有使用工厂,我如何重新考虑代码,以便我可以远程访问对象,是再次使用Naming.rebind()
,还是有其他实现?
这是我以前用过的:
import java.rmi.Naming;
/*
* Creates the server for using RMI
*/
public class PlayerServer
{
public static void main(String args[])
{
System.out.println("Player Server Starting");
try{
PlayerFactory aFactory = PlayerFactory.getInstance();
Naming.rebind("factory", aFactory);
}
catch(Exception e){
e.printStackTrace();
}
}
}
发布于 2013-12-15 13:15:16
为了使用RMI,您需要一个实现java.rmi.Remote接口的接口,您的FoodItemServer必须从java.rmi.server.UnicastRemoteObject扩展并实现这个接口。
此外,您还需要在RMIRegistry注册这个类,这个类必须另外启动。这是一个特殊的服务器,它提供了一个JNDI接口。
客户端可以请求RMIRegistry来使用java.naming机制接收RMI远程接口类型的实例,
https://stackoverflow.com/questions/20599812
复制