Java開發(fā)者可以利用的遠(yuǎn)程技術(shù)有以下幾種:
1.遠(yuǎn)程方法調(diào)用(RMI)
2.Caucho的Hessian和Burlap
3.Spring自己的HTTP invoker
4.EJB
5.Web Services
一.RMI
它由5個(gè)包及3個(gè)應(yīng)用工具組成
java.rmi 組織客戶端的RMI類、接口和異常
java.rmi.server 組織服務(wù)器端的RMI類 接口和異常
java.rmi.registry 組織用于管理RMI命名服務(wù)的類
java.rmi.dgc 組織用于管理分布式垃圾收集的類
java.rmi.activation 組織用于實(shí)現(xiàn)按需激活的RMI服務(wù)的類
rmic 編譯器,它產(chǎn)生RMI使用的存根和框架以完成分布式通信
rmiregistry 一個(gè)為RMI提供命名服務(wù)的服務(wù)器,這項(xiàng)服務(wù)把名字和對(duì)象關(guān)聯(lián)在一起
rmid 一個(gè)支持RMI激活框架的服務(wù)器
如果具體還不知道什么是RMI,可以參考這篇非常不錯(cuò)的文章《JavaRMI入門實(shí)戰(zhàn)》
注意:
1)要把PerfectTime 和PerfectTimeI類中的
System.setSecurityManager(new RMISecurityManager()); 注釋掉(因?yàn)檫@需要配安全策略,比較麻煩)
2)還有在JDK5下,用rmic -d命令的話只會(huì)輸出一個(gè)文件,因?yàn)镴DK5對(duì)RMI進(jìn)行了優(yōu)化
接下來看看用spring對(duì)《JavaRMI入門實(shí)戰(zhàn)》例子的簡(jiǎn)化
1.客戶端的配置及代碼
PerfectTimeI接口(不用繼承java.rmi.Remote接口了,普通的POJO)
package com.open.rmi.ex2;
public interface PerfectTimeI {
long getPerfectTime();
}DisplayPerfectTime類(也是一個(gè)普通的類)
package com.open.rmi.ex2;
public class DisplayPerfectTime {
private PerfectTimeI pf;
public void display() {
for (int i = 0; i < 10; i++) {
System.out.println("PerfectTime:" + pf.getPerfectTime());
}
}
//省略了pf的get,set方法
}客戶端配置bean_client.xml
<beans>
<!--客戶端-->
<bean id="pf" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://192.168.1.8:1099/perfect_time"/>
<property name="serviceInterface" value="com.open.rmi.ex2.PerfectTimeI"/>
</bean>
<bean id="test" class="com.open.rmi.ex2.DisplayPerfectTime">
<property name="pf" ref="pf"/>
</bean>
</beans>2.服務(wù)端的配置及代碼
PerfectTime類(爽吧,簡(jiǎn)簡(jiǎn)單單的POJO)
package com.open.rmi.ex2;
public class PerfectTime implements PerfectTimeI {
public long getPerfectTime() {
return System.currentTimeMillis();
}
}配置bean_server.xml
<beans>
<!--服務(wù)端:Spring讀取完定義文件,在生成serviceExporter實(shí)例后,RMI服務(wù)就會(huì)啟動(dòng)-->
<bean id="serviceExporter"
class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service" ref="pt"/>
<property name="serviceName" value="perfect_time"/>
<property name="serviceInterface" value="com.open.rmi.ex2.PerfectTimeI"/>
</bean>
<bean id="pt" class="com.open.rmi.ex2.PerfectTime"/>
</beans>3.測(cè)試代碼
TestServer.java
package com.open.rmi.ex2;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestServer {
public static void main(String[] args) {
BeanFactory bf=new ClassPathXmlApplicationContext("bean_server.xml");
bf.getBean("serviceExporter");
}
}
TestClient.java
package com.open.rmi.ex2;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestClient {
public static void main(String[] args) {
BeanFactory bf = new ClassPathXmlApplicationContext("bean_client.xml");
DisplayPerfectTime test = (DisplayPerfectTime)bf.getBean("test");
test.display();
}
}
先運(yùn)行TestServer,輸出
RmiServiceExporter - Could not detect RMI registry - creating new one在運(yùn)行TestClient就可以看到結(jié)果了
PerfectTime:1150125107468
PerfectTime:1150125107484
PerfectTime:1150125107484


看到?jīng)],你根本不用運(yùn)行rmic -d G:\RMI test.PerfectTime,start rmiregistry 。
這就是spring的魅力啊
1.遠(yuǎn)程方法調(diào)用(RMI)
2.Caucho的Hessian和Burlap
3.Spring自己的HTTP invoker
4.EJB
5.Web Services
一.RMI
它由5個(gè)包及3個(gè)應(yīng)用工具組成
java.rmi 組織客戶端的RMI類、接口和異常
java.rmi.server 組織服務(wù)器端的RMI類 接口和異常
java.rmi.registry 組織用于管理RMI命名服務(wù)的類
java.rmi.dgc 組織用于管理分布式垃圾收集的類
java.rmi.activation 組織用于實(shí)現(xiàn)按需激活的RMI服務(wù)的類
rmic 編譯器,它產(chǎn)生RMI使用的存根和框架以完成分布式通信
rmiregistry 一個(gè)為RMI提供命名服務(wù)的服務(wù)器,這項(xiàng)服務(wù)把名字和對(duì)象關(guān)聯(lián)在一起
rmid 一個(gè)支持RMI激活框架的服務(wù)器
如果具體還不知道什么是RMI,可以參考這篇非常不錯(cuò)的文章《JavaRMI入門實(shí)戰(zhàn)》
注意:
1)要把PerfectTime 和PerfectTimeI類中的
System.setSecurityManager(new RMISecurityManager()); 注釋掉(因?yàn)檫@需要配安全策略,比較麻煩)
2)還有在JDK5下,用rmic -d命令的話只會(huì)輸出一個(gè)文件,因?yàn)镴DK5對(duì)RMI進(jìn)行了優(yōu)化
接下來看看用spring對(duì)《JavaRMI入門實(shí)戰(zhàn)》例子的簡(jiǎn)化
1.客戶端的配置及代碼
PerfectTimeI接口(不用繼承java.rmi.Remote接口了,普通的POJO)
























PerfectTime類(爽吧,簡(jiǎn)簡(jiǎn)單單的POJO)
















TestServer.java






























這就是spring的魅力啊