昨天想通过一个外部程序操作服务器端的数据,想到了以下方法:
首先想通过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应该可以远程得到这些对象,试试吧~~~
分享到:
相关推荐
RMI远程方法调用RMI远程方法调用RMI远程方法调用RMI远程方法调用RMI远程方法调用
2. Spring的HTTP调用器(Spring’s Http Invoker): Spring提供了一种特殊的允许通过HTTP进行Java串行化的远程调用策略,支持任意Java接口(就像RMI调用器)。相对应的支持类是 HttpInvokerProxyFactoryBean和 ...
java jdk1.8;...掌握远程过程调用原理,基于java RMI进行远程编程和控制。要求定义远程接口类及实现类:定义相应的处理方法;客户端利用RMI实现远程调用服务。同时,在在两台机器之间验证结果正确。
C++远程方法调用框架 RMI for C++ 附加boost库
这个是基于C#的 RMI远程方法调用 这个是基于C#的 RMI远程方法调用这个是基于C#的 RMI远程方法调用
RMI采用JRMP(Java Remote Method Protocol)通讯协议,是构建在TCP/IP协议上的一种远程调用方法。它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象方法,从而使编程人员可以方便地在网络环境...
rmi 远程方法调用 客户端
本文档主要讲述的是Java 远程方法调用RMI参数详解;根据RMI参数意义,可以归结为以下几点,我们可以根据这几点通过优化GC, 网络等待,流传输协议(http/rmi special socket)等方面来优化RMI。
RMI远程文件传输
实现java RMI 远程调用,包括 RMIServer RMIClient源码,测试用例。
JAVA RMI远程调用方法代码 RMI 远程 java
使用rmi写的银行系统的小例子 博文链接:https://xiaoshan5634.iteye.com/blog/859649
三种方式实现java远程调用(rmi) 方式一:原始方式 方式二:spring 方式三:jndi 解压,放到myeclipse上可用
用java的rmi实现的 远程调用。希望对阁下有用
spring RMI 远程接口调用 包含服务端客户端程序,可完整运行
RMI远程调用,之前做的Demo希望对大家有所帮助!
RMI简单远程调用,实现数字相加!代码简单易懂
远程调用代码RMI技术,可是实现远程方法调用的代码
JAVA远程调用RMI与应用
rmi远程接口调用,简单的配置信息,service和client代码编写