繁体   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