是否可以将匿名对象作为 RMI 方法的参数传递?
Is it possible to pass an anonymous object as argument of an RMI method?
我正在尝试通过 RMI 调用远程方法,该方法接受 1 个 MyData
类型的参数,这是服务器端和客户端都知道的接口。
在我的客户端classMyClass
中,我创建了一个MyData
类型的匿名对象,并将其传递给远程方法,得到了一个异常:
Caused by: java.lang.reflect.InvocationTargetException
at wt.method.RemoteMethodServer.invoke(RemoteMethodServer.java:795)
at
... 2 more
Caused by: java.lang.ClassNotFoundException: MyClass (no security manager: RMI class loader disabled)
问题:我必须使用接口 MyData
的 实现 来传递 RMI 方法参数吗? 实现 在服务器端和客户端都是已知的。
在以下情况下是可能的:
- class 被部署到同级的 CLASSPATH,或通过代码库功能可用,和
- 其中定义的class是
Serializable
、和
- 您意识到并接受外部 class 实例将与匿名 class 一起发送,因为它是一个内部 class 并且引用了其外部 [=29] =],因此外部 class 也必须部署到对等点或通过代码库功能可用。
(2) 可能不正确,并且除此之外的任何其他原因可能不需要为真,并且 (3) 很可能不正确,因为它很可能是仅客户端 class 即服务器业务的none。
不要这样做。没有优点,还有几个缺点。使用外部或静态 class.
我正在尝试通过 RMI 调用远程方法,该方法接受 1 个 MyData
类型的参数,这是服务器端和客户端都知道的接口。
在我的客户端classMyClass
中,我创建了一个MyData
类型的匿名对象,并将其传递给远程方法,得到了一个异常:
Caused by: java.lang.reflect.InvocationTargetException
at wt.method.RemoteMethodServer.invoke(RemoteMethodServer.java:795)
at
... 2 more
Caused by: java.lang.ClassNotFoundException: MyClass (no security manager: RMI class loader disabled)
问题:我必须使用接口 MyData
的 实现 来传递 RMI 方法参数吗? 实现 在服务器端和客户端都是已知的。
在以下情况下是可能的:
- class 被部署到同级的 CLASSPATH,或通过代码库功能可用,和
- 其中定义的class是
Serializable
、和 - 您意识到并接受外部 class 实例将与匿名 class 一起发送,因为它是一个内部 class 并且引用了其外部 [=29] =],因此外部 class 也必须部署到对等点或通过代码库功能可用。
(2) 可能不正确,并且除此之外的任何其他原因可能不需要为真,并且 (3) 很可能不正确,因为它很可能是仅客户端 class 即服务器业务的none。
不要这样做。没有优点,还有几个缺点。使用外部或静态 class.