使用RMI访问对象

时间:2013-12-15 21:06:54

标签: java refactoring rmi

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();
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

为了使用RMI,您需要一个实现java.rmi.Remote接口的接口 并且您的FoodItemServer必须从java.rmi.server.UnicastRemoteObject扩展并实现此接口。

此外,您需要在RMIRegistry注册此课程 必须另外开始。这是一个提供JNDI的特殊服务器 接口

客户端可以要求RMIRegistry使用java.naming机制接收RMI远程接口类型的实例,