Java RMI 指的是远程方法调用 (Remote Method Invocation),可以让java在一个虚拟机中调用另一个虚拟机的方法,但是必须要实现远程接口 java.rmi.Remote
在一些系统中,使用RMI还是比较方便的,但是也有弊端,也就是两端都得使用java才能调用,而不像web service那样,可以跨语言端来使用。
接下来就通过一个简单的helloworld来说明下RMI的应用,JDK1.6
首先定义一个借口 Hello, 一定要继承Remote借口
package com.jacksoft.rmi.server; import java.rmi.Remote; import java.rmi.RemoteException; /** * Define a interface Hello and sayHello method * @author Jack * */ public interface Hello extends Remote{ public void sayHello() throws RemoteException; }
就是一个简单的sayhello的方法,注意,调用的方法都需要抛出RemoteException这个异常,否则会抛出异常:remote object implements illegal remote interface; nested exception is:
接下来定义实现类HelloImpl:
package com.jacksoft.rmi.server; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class HelloImpl extends UnicastRemoteObject implements Hello { protected HelloImpl() throws RemoteException { super(); } /** * */ private static final long serialVersionUID = 1L; @Override public void sayHello() { System.out.println("-------------say Hello()----------------"); } }
很简单,就是打印一句话,当然一般实际应用都是返回我们需要的数据来进行处理,这里就简单的打印一句话就完了,下面就是服务端启动代码,需要绑定一个地址:
package com.jacksoft.rmi.server; import java.rmi.Naming; import java.rmi.registry.LocateRegistry; public class Server { public static void main(String[] args) throws Exception { Hello hello = new HelloImpl(); LocateRegistry.createRegistry(8080); Naming.bind("rmi://localhost:8080/Hello", hello); System.out.println("server is running...."); } }
首先是创建连接,指定端口8080,接着绑定URL和我们的对象,也就是hello的实现,这样服务端就算完成了,运行起来吧。
最后就是客户端调用,写个客户端:
package com.jacksoft.rmi.server; import java.rmi.Naming; public class Client { public static void main(String[] args) throws Exception { Hello hello = (Hello) Naming.lookup("rmi://localhost:8080/Hello"); hello.sayHello(); System.out.println("执行成功"); } }
运行客户端后,在服务器端的控制台会看到有文本输出,说明调用成功了。
相关推荐
这个"java rmi HelloWorld版(源码)"的压缩包文件提供了一个简单的RMI应用示例,帮助开发者了解和学习RMI的基本原理和使用。 RMI的核心概念包括: 1. **远程接口(Remote Interface)**:这是定义远程方法的接口...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于分布式计算的技术,它允许一个Java对象调用另一个在不同 JVM(Java虚拟机)上的对象的方法。这个简单的示例展示了如何创建一个基本的...
Java Remote Method Invocation (RMI) 是Java平台提供的一种分布式计算技术,它允许在不同网络节点上的Java对象之间进行远程调用。RMI是构建分布式应用的重要工具,特别适合于需要跨网络通信的服务器端和客户端应用...
Java RMI,全称为Java Remote Method Invocation,是Java平台中用于远程对象调用的技术。它允许Java对象在不同的Java虚拟机之间进行通信,仿佛它们在同一个内存空间内一样。RMI是Java分布式计算的核心组成部分,尤其...
Java远程方法调用(Java Remote Method Invocation,简称 Java RMI)是一种允许在一台机器上的Java对象通过网络调用另一台机器上的对象的方法的技术。它为Java开发人员提供了一种简单的方式来创建分布式应用程序,...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于分布式计算的技术,允许在不同 JVM(Java Virtual Machine)之间进行方法调用。RMI 提供了一种透明的方式来调用远程对象的方法,就像...
#### 三、RMI HelloWorld 示例分析 为了更好地理解RMI的工作原理,我们可以通过一个简单的HelloWorld示例来进行分析。 ##### 1. 文件结构与目录设置 在这个示例中,所有的Java源文件都位于`example.hello`包下,...
return "Hello World " + client; } } ``` 这里实现了上面定义的远程接口`RmiHelloRemoteIntfc`。需要注意的是,远程对象的构造函数通常会抛出`RemoteException`,且需要调用`super()`初始化父类`...
",说明RMI调用成功。 总结,Java RMI为开发者提供了构建分布式应用的强大工具,通过简单几步即可实现远程对象的调用。但需要注意的是,RMI的安全性和性能优化等方面也需要开发者根据实际场景进行考虑和调整。此外...
3. **创建Java类**:创建一个名为`HelloWorld`的Java类,包含一个名为`getName`的方法。例如: ```java package com.example; public class HelloWorld { public String getName() { return "Hello, World!"; ...
8. **异常处理**:由于网络通信的不确定性,RMI调用可能会抛出各种异常,如java.rmi.ConnectException、java.rmi.UnmarshalException等,需要在客户端妥善处理。 在"rmi_helloworld"这个小程序中,可能包含了以下...
- **RMI**(远程方法调用)是一种Java技术,它允许位于一个Java虚拟机(JVM)上的对象调用另一个JVM上的对象的方法。这是一种分布式计算的重要组成部分,尤其适用于构建网络应用和服务。 #### 2. **分布式对象的概念...
"Hello.java"和"HelloWorld.java"可能是示例类,用于演示RMI和JMX的使用。它们可能包含了简单的远程方法,或者展示了如何创建和注册MBean。 为了实现远程连接JVM并获取JVM参数,首先需要在服务器端启动JMX服务,并...
**RMI(远程方法调用)是Java平台中一种用于分布式计算的技术,它允许一个Java对象在一台机器上执行另一个网络中的Java对象的方法。RMI是Java企业级应用开发的重要组成部分,尤其在构建分布式系统时非常有用。在这个...
Java Remote Method Invocation (RMI) 是Java平台上的一个特性,它允许分布式系统中的对象调用彼此的方法,即使这些对象位于不同的 JVM(Java Virtual Machine)上。这个技术在开发分布式应用程序时非常有用,尤其是...
这个简单的HelloWorld示例展示了DWR的基本用法,让我们看到了如何通过JavaScript直接调用服务器端的Java方法。在实际应用中,DWR可以用于更复杂的交互,如实时数据更新、异步表单提交等,极大地提高了Web应用的用户...
例如,接口`IHello`继承自`Remote`接口,并定义了两个方法`helloWorld()`和`sayHelloToSomeBody()`,这两个方法都需要抛出`RemoteException`。远程接口的实现类`HelloImpl`则实现了`IHello`接口,并提供了具体的方法...
本篇文章将深入讲解如何使用Dubbo进行Java接口的调用。 首先,理解Dubbo的核心概念: 1. **服务(Service)**:服务是业务逻辑的封装,它定义了服务的接口和协议,如`HelloService`,包含了一组`sayHello`这样的...