我正在研究Java RMI。 我在端口2028上运行我的rmiregistry时遇到了一些小问题,因为我已经使用它来运行我的testing程序。 我可以使用其他端口来运行我的程序,但我想知道,我们如何closures在端口上运行的rmiregistry?
错误的ELF类:ELFCLASS32(可能的原因:架构字宽不匹配)
Java来控制Windows服务器
如何在Ubuntu上更新已经安装的IntelliJ IDEA?
在控制面板中find图标的名称
如果你想在编程中做到这一点,我们做的事情如下:
// create the registry Registry rmiRegistry = LocateRegistry.createRegistry(port); ... // connect to it JMXConnectorserver connector = JMXConnectorserverFactory.newJMXConnectorserver(url,new HashMap<String,Object>(),ManagementFactory.getPlatformMBeanserver()); // do stuff with it ... // close the connection if (connector != null) { connector.stop(); } // deregister the registry if (rmiRegistry != null) { UnicastRemoteObject.unexportObject(rmiRegistry,true); }
这是我们的JMXserver类的完整代码 。 我们在创建其中的2个时遇到问题,并且完全取消注册,所以我们确保在不同的端口上运行我们的单元测试。
我在我的SimpleJmx JMX客户端/服务包中使用这个代码。
经过这么多的麻烦,我突然意识到rmiregistry运行在shell的背景下。 所以我们必须先关闭它,然后把它放到前台,然后关闭它。 它的工作。
顺便把它带到前台只是键入:
% fg
然后关闭它类型:
Ctrl + c
而已。 非常感谢所有试图帮助我的人。
如果从shell运行rmiregistry,请尝试关闭它:
Process p = Runtime.getRuntime().exec("ps -ef | grep rmiregistry | awk '{ print $2 }' | kill -9");
我对shell命令并不是很新鲜,但是我希望你明白。
如果rmi注册表已经在使用该端口,并且您想要重新绑定服务而不使用其他端口。 你可以尝试下面的代码
Registry registry = null; try { registry = LocateRegistry.createRegistry(1099); } catch (ExportException ex) { registry = LocateRegistry.getRegistry(1099); } catch (remoteexception ex) { Logger.getLogger(server.class.getName()).log(Level.SEVERE,null,ex); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。