我正在处理Java RMI。我在运行rmiregistry时遇到了一些问题,因为我已经使用端口2028来运行我的测试程序。我可以使用其他端口运行程序,但我想知道如何关闭特定端口上正在运行的rmiregistry?
我正在处理Java RMI。我在运行rmiregistry时遇到了一些问题,因为我已经使用端口2028来运行我的测试程序。我可以使用其他端口运行程序,但我想知道如何关闭特定端口上正在运行的rmiregistry?
% fg
然后要关闭它,输入:
Ctrl + c
就这样。非常感谢所有试图帮助我的人。
如果你想在编程中实现这个,我们可以这样做:
// 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类的完整代码链接。我们有两个问题:创建两个实例和完全取消注册它们,所以我们确保在不同的端口上运行单元测试。
我在我的SimpleJmx JMX客户机/服务包中使用此代码。
如果您正在从shell运行rmiregistry,请尝试使用以下命令关闭它:
Process p =
Runtime.getRuntime().exec("ps -ef | grep rmiregistry | awk '{ print $2 }' | kill -9");
我对shell命令不是很熟悉,但我希望你能理解我的意思。
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);
}