[英]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.