2013-04-26 89 views
3

在Joe Armstrong編程的Erlang第16.1節中,作者描述了一個用Erlang的OTP框架進行熱代碼交換的方法。我希望能夠通過Akka做到這一點。如何將對象發送給非對稱系統中的遠程akka演員

鑑於CompA和CompB已建立遠程通信的非對稱Akka系統。 A想要發送Int => Int類型的函數f到comp B來處理。但是,在Comp B的類路徑中並不存在f的定義。有沒有辦法在不事先傳輸A的jar文件並將其添加到自定義引導加載程序(即OSGI)的情況下使其工作?

+0

你應該可以做到這一點,但是你必須讀取和發送代表你的函數的類的字節碼,並在線的另一端使用自定義ClassLoader來加載和實例化它。 – 2013-04-26 12:59:47

回答

0

我不認爲這會奏效。如果接收JVM沒有表示要發送的函數的匿名類定義,那麼您將最終得到一個ClassNotFoundException或其他類似的東西。我以前嘗試過,但沒有成功。這與Java中的RMI類型情況非常相似,系統的兩端都必須具有類定義才能正確通信。我猜想,在處理JVM(和對象序列化)時,這只是野獸的本質。

+1

正如史蒂夫沃爾德曼評論說它應該是可能的,但遠程類加載不是阿卡想要進入的東西(這是一個蠕蟲罐);發送消息中的字節並創建一個ClassLoader原則上應該可以工作,但是您必須手動序列化和反序列化該函數。 – 2013-04-26 13:09:29