小小程序员
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
阅读(2698)
评论(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)
#
re: spring对java远程调用的简化(一)之RMI
我//省略了pf的get,set方法
你是不是没补上咯
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
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
论坛
积分与排名
积分 - 62506
排名 - 841
最新评论
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教程[未登录]
除了插件是真的之外,其他怎么全是假的?
--王子