小小程序員
BlogJava
|
首頁
|
發新隨筆
|
發新文章
|
|
|
管理
spring對java遠程調用的簡化(一)之RMI
Java開發者可以利用的遠程技術有以下幾種:
1.遠程方法調用(RMI)
2.Caucho的Hessian和Burlap
3.Spring自己的HTTP invoker
4.EJB
5.Web Services
一.RMI
它由5個包及3個應用工具組成
java.rmi 組織客戶端的RMI類、接口和異常
java.rmi.server 組織服務器端的RMI類 接口和異常
java.rmi.registry 組織用于管理RMI命名服務的類
java.rmi.dgc 組織用于管理分布式垃圾收集的類
java.rmi.activation 組織用于實現按需激活的RMI服務的類
rmic 編譯器,它產生RMI使用的存根和框架以完成分布式通信
rmiregistry 一個為RMI提供命名服務的服務器,這項服務把名字和對象關聯在一起
rmid 一個支持RMI激活框架的服務器
???? 如果具體還不知道什么是RMI,可以參考這篇非常不錯的文章《
JavaRMI入門實戰
》
注意:
??? 1)要把PerfectTime 和PerfectTimeI類中的
?? System.setSecurityManager(new RMISecurityManager()); 注釋掉(因為這需要配安全策略,比較麻煩)
???2)還有在JDK5下,用rmic -d命令的話只會輸出一個文件,因為JDK5對RMI進行了優化
接下來看看用spring對《
JavaRMI入門實戰
》例子的簡化
1.客戶端的配置及代碼
PerfectTimeI接口(不用繼承java.rmi.Remote接口了,普通的POJO)
package
?com.open.rmi.ex2;
public
?
interface
?PerfectTimeI??
{
????
long
?getPerfectTime();?
}
DisplayPerfectTime類(也是一個普通的類)
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.服務端的配置及代碼
PerfectTime類(爽吧,簡簡單單的POJO)
package
?com.open.rmi.ex2;
public
?
class
?PerfectTime??
implements
?PerfectTimeI?
{
????
public
?
long
?getPerfectTime()?
{
????????
return
?System.currentTimeMillis();
????}
}
配置bean_server.xml
<
beans
>
????
<!--
服務端:Spring讀取完定義文件,在生成serviceExporter實例后,RMI服務就會啟動
-->
????
<
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.測試代碼
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();
????}
}
先運行TestServer,輸出
RmiServiceExporter?
-
?Could?not?detect?RMI?registry?
-
?creating?
new
?one
在運行TestClient就可以看到結果了
PerfectTime:
1150125107468
PerfectTime:
1150125107484
PerfectTime:
1150125107484
看到沒,你根本不用運行rmic -d G:\RMI test.PerfectTime,start rmiregistry 。
這就是spring的魅力啊
發表于 2006-06-12 23:15
~小Q
閱讀(2706)
評論(2)
編輯
收藏
所屬分類:
『
Spring
』
評論
#
re: spring對java遠程調用的簡化(一)之RMI
有錯!
Error creating bean with name 'test' defined in file ......Error setting property values; nested exception is PropertyAccessExceptionsException (1 errors)
ufo
評論于 2006-09-27 14:05
回復
更多評論
#
re: spring對java遠程調用的簡化(一)之RMI
我//省略了pf的get,set方法
你是不是沒補上咯
xfan
評論于 2006-10-11 09:41
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
圖解spring mvc
Quartz的cron表達式
在spring利用javamail,quartz定時發送郵件
spring對java遠程調用的簡化(三)之HTTPinvoker
spring對java遠程調用的簡化(二)之Hessian,Burlap
spring對java遠程調用的簡化(一)之RMI
spring中事務的屬性
事務的特點以及spring提供事務管理器的簡介
ProxyFactoryBean屬性介紹
spring中基礎核心接口介紹
<
2006年6月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
公告
spring-誰與爭鋒
常用鏈接
我的隨筆
我的文章
我的評論
我的參與
最新評論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
『
eclipse
』(2)
(rss)
『
Flash
』(1)
(rss)
『
JavaScript
』(1)
(rss)
『
Maven
』(1)
(rss)
『
Spring
』(17)
(rss)
『
springside
』(1)
(rss)
『
匯編
』(4)
(rss)
『
計劃
』(1)
(rss)
相冊
spring
Blog
論壇
積分與排名
積分 - 62792
排名 - 842
最新評論
1.?re: 在spring利用javamail,quartz定時發送郵件[未登錄]
感覺不錯嗎、
--xiaoxiao
2.?re: JavaScript中的arguments,callee,caller,call,appy
不錯啊
--artwl
3.?re: JavaScript中的arguments,callee,caller,call,appy[未登錄]
注意,arguments[0] 是對的。arguments是一個Object。
--你好
4.?re: JavaScript中的arguments,callee,caller,call,appy
評論內容較長,點擊標題查看
--zhangsir199
5.?re: Maven的eclipse插件使用的flash教程[未登錄]
除了插件是真的之外,其他怎么全是假的?
--王子
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 ~小Q
主站蜘蛛池模板:
免费无遮挡无码永久在线观看视频
|
亚洲性线免费观看视频成熟
|
国产免费久久精品丫丫
|
日韩精品免费视频
|
久久久久国色AV免费看图片
|
日本午夜免费福利视频
|
亚洲国产人成精品
|
亚洲国产精品线在线观看
|
亚洲日韩中文字幕无码一区
|
一级人做人a爰免费视频
|
国产91色综合久久免费分享
|
日本不卡在线观看免费v
|
国产成人亚洲综合无码精品
|
亚洲三级高清免费
|
成年免费a级毛片免费看无码
|
黄人成a动漫片免费网站
|
亚在线观看免费视频入口
|
白白国产永久免费视频
|
亚洲AV福利天堂一区二区三
|
亚洲精品无码久久久久牙蜜区
|
亚洲欧洲av综合色无码
|
国产免费MV大全视频网站
|
毛片基地免费观看
|
久久精品国产亚洲av麻
|
春暖花开亚洲性无区一区二区
|
免费一区二区三区在线视频
|
蜜桃AV无码免费看永久
|
亚洲日韩国产精品乱
|
亚洲偷偷自拍高清
|
久久国产精品免费观看
|
亚洲精品动漫人成3d在线
|
亚洲美国产亚洲AV
|
69pao强力打造免费高清
|
亚洲欧洲美洲无码精品VA
|
国产成人精品久久亚洲高清不卡
|
亚洲精品天堂在线观看
|
日本免费大黄在线观看
|
最新亚洲成av人免费看
|
最新亚洲人成无码网站
|
免费黄色网址入口
|
亚洲不卡中文字幕
|