如何在Java中通过远程方法发送数据?
RMI 代表 **远程方法调用**。它是一种机制,允许驻留在一个系统(JVM)中的对象访问/调用在另一个 JVM 上运行的对象。
RMI 用于构建分布式应用程序;它提供 Java 程序之间的远程通信。它位于 **java.rmi** 包中。
要编写一个 RMI Java 应用程序,您需要按照以下步骤操作:
步骤1 - 定义远程接口
远程接口提供了特定远程对象的所有方法的描述。客户端通过此远程接口进行通信。因此,您需要创建一个扩展预定义接口 java.rmi.Remote 的接口。
示例
import java.rmi.Remote; import java.rmi.RemoteException; public interface Hello extends Remote { void printMsg() throws RemoteException; }
步骤 2 - 开发实现类(远程对象)
我们需要实现前面步骤中创建的远程接口。(我们可以单独编写一个实现类,或者可以直接让服务器程序实现此接口。)因此,为远程接口的所有抽象方法提供实现。
示例
public class ImplExample implements Hello { public void printMsg() { System.out.println("This is an example RMI program"); } }
步骤3 - 开发服务器程序
RMI 服务器程序应该实现远程接口,或者扩展实现类。在这里,我们应该创建一个远程对象并将其绑定到 **RMIregistry**。因此,开发如下所示的服务器程序:
示例
import java.rmi.registry.Registry; import java.rmi.registry.LocateRegistry; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class Server extends ImplExample { public Server() {} public static void main(String args[]) { try { ImplExample obj = new ImplExample(); Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0); Registry registry = LocateRegistry.getRegistry(); registry.bind("Hello", stub); System.err.println("Server ready"); } catch (Exception e) { System.err.println("Server exception: " + e.toString()); e.printStackTrace(); } } }
步骤4 - 开发客户端程序
在其中编写一个客户端程序,获取远程对象并使用此对象调用所需的方法。
示例
import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class Client { private Client() {} public static void main(String[] args) { try { Registry registry = LocateRegistry.getRegistry(null); Hello stub = (Hello) registry.lookup("Hello"); stub.printMsg(); } catch (Exception e) { System.err.println("Client exception: " + e.toString()); e.printStackTrace(); } } }
步骤5 - 编译应用程序
要编译应用程序:
编译远程接口。
编译实现类。
编译服务器程序。
编译客户端程序。
步骤6 - 执行应用程序
使用以下命令启动 **rmi** 注册表。
Start rmiregistry
这将在一个单独的窗口中启动 **rmi** 注册表。
运行服务器类文件,如下所示:
运行客户端类文件,如下所示:
**验证** - 一旦您启动客户端,您将在服务器中看到以下输出。
广告