从抽象语法树自动生成RMI的机制?

时间:2014-06-21 20:10:29

标签: java rmi processbuilder

我正在为JAVA中的论文开展一个项目,该项目要求从抽象语法树生成自动RMI。我使用RMI作为

`public int createProcess(CompilationUnit cu){
   //Some Code Here
 return processid;
   } `       

用于在每个节点上从AST生成RMI。它将自动生成接口文件和AST中的所有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已经在执行命令&#34; rmiRegistry&#34;)?例如,如果nodeA在nodeB上创建Process1(RMI类),然后通过Processbuilder使用命令执行它,则rmiRegistery将处于运行状态。现在,如果NodeA想在NodeB上创建另一个Process2,我是否必须停止rmiRegistery的实例并重新运行它,或者没有必要这样做,Registery会检测到&amp;自动添加新绑定?

  3. 是否所有RMI都在同一个端口上运行?意味着我是否创建了process1并将其与localhost / process1&amp; process2 with localhost / process2,我们可以通过同一个端口访问它们吗?
  4. 我是第一次与RMI合作,所以没有任何以前的经验或知识。

    道歉,我的问题似乎不清楚,所以我试图通过编辑提出更多解释? 遵循本教程Link

1 个答案:

答案 0 :(得分:0)

  

1如何在进程完成后销毁和取消绑定远程对象?

见2,但我不知道你为什么要这样做。让它们存在并绑定到注册表。

  

2我是否必须将此代码放在控制退出的每个文件的末尾?

是的,如果你想要它执行,否则没有。但是,不要产生空的捕获块。

  

3我必须在每个远程对象创建后执行rmiRegistry

不,你必须在包含过程开始时启动它一次。最简单的方法是通过LocateRegustry.createRegistry()。