RMI远程调用

释放双眼,带上耳机,听听看~!

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


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

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

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

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

给TA打赏
共{{data.count}}人
人已打赏
安全经验

Jenkins高级篇之Pipeline语法篇-3-第一个Pipeline代码详细解释

2021-10-11 16:36:11

安全经验

安全咨询服务

2022-1-12 14:11:49

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索