RMI远程调用

在进行RMI远程调用遇到如下问题:

java.rmi.MarshalException: error marshalling arguments; nested exception is: 
    java.io.NotSerializableException: rmi_test.HelloImp
    at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
    at java.rmi.Naming.rebind(Naming.java:177)
    at rmi_test_cs.Server.main(Server.java:20)
Caused by: java.io.NotSerializableException: rmi_test.HelloImp
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
    ... 3 more

原因是在远程对象和调用传递的参数都必须实现接口Serializable接口,
在你实现接口的类中需要继承UnicastRemoteObject类。
结构图如下
这个类中提供了支持创建和导出远程对象的一系列方法,一个对象继承UnicastRemoteObject它将获得以下特性:

A、对这种对象的引用至多仅在创建该远程对象的进程生命期内有效

B、使得远程对象既有使用TCP协议通信的能力(Socket)
C、对于客户端与服务器的调用、传参、返回值等操作使用流的方式来处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值