2012-01-17 49 views
0

我正在嘗試實現自定義RMI激活方案,其中遠程Activatable對象將託管在自定義EXE進程中,而不是標準的Java.exe/Javaw.exe。自定義RMI Activator進程

在RMI中「可激活」對象可以被保留並恢復或按需啓動。在向RMI註冊表註冊'Activatable'對象並首次請求後,RMID啓動一個宿主子進程(通常爲java.exe/javaw.exe),通過子進程的stdin傳遞兩條信息,並詢問子進程運行特殊隱藏類「sun.rmi.server.ActivationGroupInit」的主要方法。該類引導其他所有內容準備創建和託管「Activatable」對象實例的過程。客戶端和服務器通過RMI進行通信之後。

我已經定義了一個簡單的Win32 EXE項目,編寫了一些JNI代碼來啓動這個EXE中的JVM,並設法調用'sun.rmi'server.ActivationGroupInit'的主要方法。該類能夠解析標準輸入並提取創建ActivationGroup所需的任何內容。 但是我遇到了一些問題,最終導致遠程對象的激活失敗(使用UnknownObjectException),我正在對其進行故障排除。

在這一點上,我只想退後一步,詢問是否有人曾嘗試過,並知道是否有任何我應該早知道的陷阱?

感謝, 蘭吉特

回答

0

正如我們在Oracle論壇討論不休,你不需要任何的這一點。只需複製java.exe或javaw.exe,或者使用與java.exe完全相同的方式使用它傳遞的所有參數來編寫自己的包裝器,該包裝器只是啓動JVM。您不必擔心激活系統在stdin等方面發送了什麼,現有的激活類將爲您完成所有工作。