是否可以将匿名对象作为 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 方法参数吗? 实现 在服务器端和客户端都是已知的。

在以下情况下是可能的:

  1. class 被部署到同级的 CLASSPATH,或通过代码库功能可用,
  2. 其中定义的class是Serializable
  3. 您意识到并接受外部 class 实例将与匿名 class 一起发送,因为它是一个内部 class 并且引用了其外部 [=29] =],因此外部 class 也必须部署到对等点或通过代码库功能可用。

(2) 可能不正确,并且除此之外的任何其他原因可能不需要为真,并且 (3) 很可能不正确,因为它很可能是仅客户端 class 即服务器业务的none。

不要这样做。没有优点,还有几个缺点。使用外部或静态 class.