簡體   English   中英

是否可以將匿名對象作為RMI方法的參數傳遞?

[英]Is it possible to pass an anonymous object as argument of an RMI method?

我試圖通過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. 該類已部署到對等方的CLASSPATH,或者可通過代碼庫功能使用, 並且
  2. 定義它的類是Serializable並且
  3. 您意識到並接受外部類實例將與匿名類一起發送,因為它是內部類,並且對其外部類有引用,因此外部類也必須部署到對等方或通過代碼庫功能。

(2)可能不是正確的,並且可能由於其他原因而不必是真的,並且(3)很可能是不正確的,因為它很可能是僅屬於客戶端的類,而沒有服務器的業務。

不要這樣 沒有優勢,也有幾個劣勢。 使用外部或靜態類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM