是否可以传递匿名对象作为RMI方法的参数?

时间:2015-01-23 11:16:40

标签: java rmi anonymous-class

我试图通过RMI调用一个远程方法,该方法接受类型MyData的1个参数,这是服务器端和客户端都知道的接口。

在我的客户端类MyClass中,我创建了一个类型为MyData的匿名对象,并将其传递给远程方法,并获得异常:

Caused by: java.lang.reflect.InvocationTargetException
    at wt.method.RemoteMethodServer.invoke(RemoteMethodServer.java:795)
    at 
    ... 2 more
Caused by: java.lang.ClassNotFoundException: MyClass$1 (no security manager: RMI class loader disabled)

问题:我是否必须使用接口MyData实现来传递RMI方法参数?服务器端和客户端都知道实现

1 个答案:

答案 0 :(得分:1)

有可能:

  1. 该类已部署到对等方的CLASSPATH,或通过代码库功能
  2. 提供
  3. 定义它的类是Serializable
  4. 您意识到并接受外部类实例将与匿名类一起发送,因为它是一个内部类并且具有对其外部类的引用,因此外部类也必须部署到对等体或可通过代码库功能获得。
  5. (2)可能不是真的,并且可能不需要因为除此之外的任何原因而成为真,并且(3)很可能是不真实的,因为它很可能是仅限客户的类没有服务器的业务。

    不要这样做。没有优点,也有一些缺点。使用外部或静态类。