RMI调用模板
2007-10-13 16:07
127 查看
[align=left]1. 定义远程接口[/align]
[align=left]// 远程接口继承自Remote[/align]
[align=left]// 远程方法的传入参数和返回值必须是自然类型(int,float,boolean等)[/align]
[align=left]// 或者实现了Serializable或Remote接口的对象。[/align]
[align=left]public interface Time extends java.rmi.Remote {[/align]
[align=left] // 远程方法必须抛出RemoteException:[/align]
[align=left] public String getTime() throws RemoteException;[/align]
[align=left]}[/align]
[align=left]2. 定义实现类[/align]
[align=left]// 注意:实现类继承自UnicastRemoteObject和自定义的远程接口Time:[/align]
[align=left]public class TimeImpl extends java.rmi.server.UnicastRemoteObject implements Time {[/align]
[align=left] // 注意:由于RemoteObject构造函数要抛出RemoteException,[/align]
[align=left] // 因此务必定义构造函数并抛出RemoteException:[/align]
[align=left] public TimeImpl() throws RemoteException { super(); }[/align]
[align=left] [/align]
[align=left] // 这里是远程方法:[/align]
[align=left] public String getTime() throws RemoteException {[/align]
[align=left] return "12:04:27";[/align]
[align=left] }[/align]
[align=left]// 启动服务:[/align]
[align=left] public static void main(String[] args) throws Exception {[/align]
[align=left] // 可以手动启动RMI Registry,也可以在程序中启动:[/align]
[align=left] java.rmi.registry.LocateRegistry.createRegistry(1099);[/align]
[align=left] // 绑定名字服务,地址是本地计算机名或本机IP,默认端口是1099:[/align]
[align=left] java.rmi.Naming.bind("//localhost:1099/servicename", new TimeImpl());[/align]
[align=left] // 如果没有异常抛出,则绑定成功。[/align]
[align=left] // 如果名字已经被绑定,可以用Naming.rebind()替换掉已绑定的服务。[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]3. 编译生成桩和框架[/align]
[align=left]运行rmic TimeImpl,生成TimeImpl_Skel.class和TimeImpl_Stub.class。[/align]
[align=left]4. 客户端[/align]
[align=left]// 客户端文件包含客户端代码Client.class,远程接口Time.class,[/align]
[align=left]// 由rmic生成的支持类TimeImpl_Skel.class和TimeImpl_Stub.class:[/align]
[align=left]public static void main(String[] args) throws Exception {[/align]
[align=left] // 客户端通过IP引用服务器端的远程对象,因此可以动态选择服务器。[/align]
[align=left] // 如果不指定端口,默认端口号是1099:[/align]
[align=left] Time time = (Time)java.rmi.Naming.lookup("//localhost:1099/servicename");[/align]
[align=left] System.out.println(time.getTime());[/align]
[align=left]}[/align]
相关文章推荐
- 使用 RMI + ZooKeeper 实现远程调用
- Java远程方法调用(RMI)
- .net下的面向工控领域的远程方法调用(RMI)中间件,通信协议设计
- java反射机制(2)- 实践:反射机制+动态代理实现模拟RMI远程方法调用
- ecshop轻松实现不同商品调用不同模板
- [DedeCMS]如何在内容模板里调用栏目内容即{dede:field.content/}
- RMI远程服务调用
- Bigcommerce: 给模板添加一个自定义的产品属性,使用$GLOBALS全局变量调用
- RMI学习笔记(二)-----RMI远程调用实例(一)
- C++模板实现事件处理器中的“通用成员函数指针”的调用
- 织梦dedecms模板调用标签大全-提高制作模板速度
- java中使用rmi进行远程方法调用
- Java远程方法调用RMI简介
- C#操作excel,如何调用模板
- 调用模板求两数最大值
- RMI和RPC之间最主要的区别在于方法的调用的方式
- java--- RMI远程调用
- 帖子内容页分类信息字段模板万能调用标记$_G['forum_option']
- 使用T4模板调用Sqlserver链接生成自己的模板
- phpcms v9 模板标签技巧,标签调用方法大全