簡體   English   中英

從抽象語法樹自動生成RMI的機制?

[英]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文件,並將所有方法放入這些文件中。 我能夠使用流程生成器執行javacrmic <remote-class>rmiRegistry命令。

  1. 進程完成后如何銷毀和取消綁定遠程對象? 我是否必須將此代碼放在控制退出的每個文件的末尾?

      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){} } 
  2. 在每個遠程方法/類創建之后,我是否必須執行rmiRegistry,或者如果它已經處於執行狀態(意味着processbuilder已經在執行命令“ rmiRegistry”),它將自動將以后的遠程方法/類添加到注冊表中? 例如,如果nodeA在nodeB上創建Process1(RMI類),然后使用通過Processbuilder的命令執行它,則rmiRegistery將處於運行狀態。 現在,如果NodeA要在NodeB上創建另一個Process2,我是否必須停止該rmiRegistery實例並重新運行它,還是不需要執行Registery自動檢測並添加新綁定的操作?

  3. 所有RMI都將在同一端口上運行嗎? 意味着如果我創建process1並將其與localhost / process1綁定,將process2與localhost / process2綁定,我們可以通過同一端口訪問它們嗎?

我是第一次與RMI合作,所以以前沒有任何經驗或知識。

不好意思,我的問題似乎不清楚,所以我嘗試通過編輯提出更多解釋? 遵循本教程鏈接

1如何在進程完成后銷毀和取消綁定遠程對象?

參見2,但我不知道您為什么要這樣做。 只需保留它們的存在並綁定到注冊表即可。

2我是否必須將此代碼放在控制退出的每個文件的末尾?

是的,如果您希望它執行,否則,否。 但是不要生成空的catch-blocks。

3每次創建遠程對象后都必須執行rmiRegistry

不,您必須在包含過程的開始時將其啟動一次。 最簡單的方法是通過LocateRegustry.createRegistry()。

暫無
暫無

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

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