如何将文件从服务器导出到客户端 - Java RMI

时间:2011-07-08 22:24:33

标签: java rmi

我是Java RMI的新手,我只是想尝试运行“Hello World”程序(代码显示在消息的末尾)

基本上,我的一台计算机中有一个远程类,一个远程接口和一个服务器类,另一台计算机中有一个客户机类。 我试图使用客户端从服务器获取“hello”消息。 问题是,如果我没有远程接口和存根在客户端所在的同一目录中,我无法编译客户端并使其运行,同时如果我没有,则无法运行服务器与服务器位于同一目录中的那些。

我使用javac编译了服务器/远程类/接口,然后使用rmic编译器。 “rmic你好”。

我想知道如何在不必拥有两台计算机中的所有文件的情况下实现这一点(这就是我想让它分发的原因)

提前致谢!

代码:

远程接口:

import java.rmi.*;  

 //Remote Interface for the "Hello, world!" example.  
public interface HelloInterface extends Remote {  
  public String say() throws RemoteException;  
}  

远程课程:

import java.rmi.*;  
import java.rmi.server.*;  

public class Hello extends UnicastRemoteObject implements HelloInterface {  
  private String message;  

  public Hello (String msg) throws RemoteException {  
    message = msg;  
  }  

  public String say() throws RemoteException {  
    return message;  
  }  
} 

客户端: import java.rmi。*;

public class Client  
{  
    public static void main (String[] argv)  
    {  
        try  
                 {  
            HelloInterface hello= (HelloInterface) Naming.lookup(host);  //the string        representing the host was modified to be posted here  
            System.out.println (hello.say());  
        }  
        catch (Exception e)  
        {  
            System.out.println ("Hello Server exception: " + e);  
        }  
    }  
} 

服务器:

  public static void main (String[] argv) {  
    try {  
      Naming.rebind ("Hello", new Hello ("Hello, world!"));  
      System.out.println ("Hello Server is ready.");  
    } catch (Exception e) {  
      System.out.println ("Hello Server failed: " + e);  
    }  
  }  

2 个答案:

答案 0 :(得分:0)

我的猜测是在两端/两端简单地创建相同的源。

答案 1 :(得分:0)

  

我想知道如何在不必拥有两台计算机中的所有文件的情况下使其工作

你做不到。您必须将所需的类文件分发给客户端。

  

(这就是我想让它分发的原因)

Non sequitur。