[英]Mechanism to generate RMI automatically from Abstract Syntax Tree?
我正在為JAVA中的論文開發項目,該項目需要從Abstract Syntax Tree自動生成RMI。 我正在使用RMI作為
`public int createProcess(CompilationUnit cu){
//Some Code Here
return processid;
} `
用於在每個節點上從AST生成RMI。 它將自動從AST生成Interface文件和所有Java文件,並將所有方法放入這些文件中。 我能夠使用流程生成器執行javac
, rmic <remote-class>
和rmiRegistry
命令。 但
進程完成后如何銷毀和取消綁定遠程對象? 我是否必須將此代碼放在控制退出的每個文件的末尾?
public void exit() throws RemoteException { try{ // Unregister ourself Naming.unbind(mServerName); // Unexport; this will also remove us from the RMI runtime UnicastRemoteObject.unexportObject(this, true); } catch(Exception e){} }
在每個遠程方法/類創建之后,我是否必須執行rmiRegistry,或者如果它已經處於執行狀態(意味着processbuilder已經在執行命令“ rmiRegistry”),它將自動將以后的遠程方法/類添加到注冊表中? 例如,如果nodeA在nodeB上創建Process1(RMI類),然后使用通過Processbuilder的命令執行它,則rmiRegistery將處於運行狀態。 現在,如果NodeA要在NodeB上創建另一個Process2,我是否必須停止該rmiRegistery實例並重新運行它,還是不需要執行Registery自動檢測並添加新綁定的操作?
我是第一次與RMI合作,所以以前沒有任何經驗或知識。
不好意思,我的問題似乎不清楚,所以我嘗試通過編輯提出更多解釋? 遵循本教程鏈接
1如何在進程完成后銷毀和取消綁定遠程對象?
參見2,但我不知道您為什么要這樣做。 只需保留它們的存在並綁定到注冊表即可。
2我是否必須將此代碼放在控制退出的每個文件的末尾?
是的,如果您希望它執行,否則,否。 但是不要生成空的catch-blocks。
3每次創建遠程對象后都必須執行rmiRegistry
不,您必須在包含過程的開始時將其啟動一次。 最簡單的方法是通過LocateRegustry.createRegistry()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.