昨天想通过一个外部程序操作服务器端的数据,想到了以下方法:
首先想通过web来做,服务器端是有web接口的,但为了试个小功能写一大堆脚本未免太麻烦。还是先看看有没有其他的方法。
写个main方法,启动一个进程可以吗?一个进程去读另一个进程里的数据显然没那么容易。这就要涉及第三方系统了,比如操作系统的信号量、共享内存,或者是文件、数据库等。这样一来仍然要写一大堆代码,还得对服务器端做较大的改动。这也不是个好方法。
后来一边Google一边想:网络程序不是可以吗,客户端操作服务器端。写Socket?太麻烦了;SOAP?貌似也没那么easy;RMI、RPC适用吗!仔细分析一下发现:客户端只需要发送一些简单的字符串(相当于指令),让服务器执行相应的操作。这和RMI(Java Remote Method Invocation)完全契合。并且有了Spring,RMI的实现也相当简单。
下面开始coding吧,伪代码如下:
首先给远程调用的方法制定一个接口:
public class Oper implements IOper {
public boolean exeuteMethod(String s) {
//这里是服务器端要执行的操作
return true;
}
}
写一个接口
public interface IOper {
public boolean exeuteMethod(String s);
}
然后配置服务器端的RMI服务:
1: <bean id="oper" class="***.Oper"></bean>
2: <bean id="rmiService" class="org.springframework.remoting.rmi.RmiServiceExporter">
3: <property name="serviceName">
4: <value>mys</value>
5: </property>
6: <property name="service">
7: <ref local="oper" />
8: </property>
9: <property name="serviceInterface">
10: <value>***.IOper</value>
11: </property>
12: <property name="registryPort">
13: <value>9990</value>
14: </property>
15: </bean>
启动服务器端。
下面来配置客户端:
1: <bean id="rmiClient" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
2: <property name="serviceUrl">
3: <value>rmi://192.168.0.***:9990/mys</value>
4: </property>
5: <property name="serviceInterface">
6: <value>***.IOper</value>
7: </property>
8: </bean>
在main里执行远程方法:
1: public static void main(String[] args) {
2: ApplicationContext ctx = new ClassPathXmlApplicationContext(
3: "applicationContext-client.xml");
4: IOper o = (IOper) ctx.getBean("rmiClient");
5: System.out.println(o.exeuteMethod("XXXX"));
6: }
运行一下,看看服务器端执行了吧~~~
看样子RMI的应用相当广泛,应该做到“提到远程就应该想到RMI”。
还有什么用途呢。。。
有时候想查看服务器端某对象当前的值,在服务器端打日志是不是挺麻烦,改写代码——上传服务器——重启服务——触发跟踪······多麻烦!我想通过RMI应该可以远程得到这些对象,试试吧~~~
分享到:
相关推荐
在Java编程领域,RMI(Remote Method Invocation,远程方法调用)是一种强大的技术,它允许在不同的Java虚拟机(JVM)之间进行分布式计算。在这个“使用rmi进行远程调用”的示例中,我们看到的是一个基于RMI实现的...
4. **客户端调用**:客户端获取到远程对象的引用后,就可以像调用本地方法一样调用远程方法。 ### 方式二:Spring框架集成 Spring框架提供了对RMI的简化支持,使得RMI的使用更加便捷和灵活: 1. **配置Spring ...
客户端通过RMI系统查找并调用远程对象的方法,就像调用本地对象一样简单。RMI处理所有网络通信细节,包括数据的序列化、网络传输以及在远程对象上调用相应方法。 **RMI的基本组成部分** 1. **远程接口(Remote ...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于在不同Java虚拟机之间进行远程通信的技术。通过RMI,开发者可以透明地调用运行在其他网络节点上的对象的方法,就像它们是在本地一样。...
2. Spring的HTTP调用器(Spring’s Http Invoker): Spring提供了一种特殊的允许通过HTTP进行Java串行化的远程调用策略,支持任意Java接口(就像RMI调用器)。相对应的支持类是 HttpInvokerProxyFactoryBean和 ...
RMI远程方法调用是Java平台上的一个关键特性,它允许Java对象在不同的JVM之间进行通信,从而实现分布式计算。RMI的核心理念是让开发者能够像调用本地方法一样调用远程对象的方法,简化了分布式系统的设计和实现。 *...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间进行方法调用,仿佛这些方法是在本地对象上执行一样。这个技术极大地简化了构建分布式应用的...
3. **调用远程方法**:一旦获取了远程对象的引用,客户端就可以像调用本地对象一样调用其方法。所有的网络通信和序列化工作都是由RMI库自动处理的。 4. **处理异常**:由于网络问题或服务器端异常,可能会抛出`...
java jdk1.8;...掌握远程过程调用原理,基于java RMI进行远程编程和控制。要求定义远程接口类及实现类:定义相应的处理方法;客户端利用RMI实现远程调用服务。同时,在在两台机器之间验证结果正确。
5. **查找远程对象(Locating the Remote Object)**:客户端通过`Registry`的`lookup`方法获取远程对象的引用,然后就可以像操作本地对象一样调用其方法。 6. **调用远程方法(Invoking Remote Methods)**:...
通过RMI,开发者可以在一台计算机上编写一个类,并在另一台计算机上调用该类的方法,就如同在本地调用一样。 #### 二、RMI基础知识 在深入理解给定示例之前,我们首先简要介绍一些RMI的基础概念: 1. **接口**: 在...
Spring RMI(Remote Method Invocation)远程接口调用是Spring框架提供的一个特性,它允许你在分布式环境中调用对象的方法,使得应用程序能够跨越网络边界操作远程对象。这个技术在大型企业级应用中尤其有用,因为它...
客户端通过注册表获取远程对象的引用,然后就可以调用其方法。 4. **客户端(Client)**:客户端通过RMI机制获取远程对象的引用,然后调用远程方法。这通常涉及到反序列化过程,因为远程方法的调用结果需要通过网络...
Java 远程方法调用(Remote Method Invocation,RMI)是一种在分布式环境中调用对象方法的技术,它使得Java应用程序能够透明地调用运行在不同 JVM 上的远程对象的方法。RMI 包含了一系列的参数,这些参数对于优化...
2. 实现远程接口:在服务器端实现接口,并通过`java.rmi.server.UnicastRemoteObject`导出远程对象。 3. 注册远程对象:将远程对象注册到RMI注册表。 4. 在客户端查找和调用:客户端通过RMI注册表获取远程对象的引用...
5. **客户端(Client)**:客户端通过获取注册表中的远程对象引用,然后就可以像调用本地方法一样调用远程对象的方法。这一步通常通过`java.rmi.Naming.lookup()`来实现。 6. **序列化(Serialization)**:由于...
C++远程方法调用(RMI,Remote Method Invocation)是一种编程模型,允许程序在不同的网络节点上执行对象的方法,就像是这些方法直接在一个本地对象上调用一样。RMI为分布式计算提供了一种简单、高效的机制,使得...
### EJB 基于Java的远程方法调用(RMI)技术 #### 一、EJB概述 **Enterprise JavaBeans (EJB)** 是一种基于Java的组件模型,旨在为开发分布式企业级应用提供标准化的方法。它相当于DCOM(Distributed Component ...
Java RMI(Remote Method Invocation)是Java平台提供的一种用于实现远程对象交互的技术。它允许一个Java对象调用另一个在不同 JVM(Java Virtual Machine)中的对象的方法,仿佛它们是在同一个进程中运行一样。本...
RMI采用JRMP(Java Remote Method Protocol)通讯协议,是构建在TCP/IP协议上的一种远程调用方法。它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象方法,从而使编程人员可以方便地在网络环境...