【问题标题】:Change Default RMI Port (Java)更改默认 RMI 端口 (Java)
【发布时间】:2009-06-02 11:54:35
【问题描述】:

如何更改默认 RMI 端口 (1099)。它可以作为 JVM 参数或通过编码,没关系。谢谢。

【问题讨论】:

  • Here 是一种通过编码的解决方案。看起来您必须在所选端口上创建自定义注册表。 编辑 - 只需重新阅读您的问题:这不会更改 默认 端口,而是在端口 1099 的现有注册表中添加一个新注册表
  • 1099 是 RMI 注册服务器端口,而不是 RMI 服务器端口。
  • @VincentRobert 两者都可以。

标签: java rmi


【解决方案1】:

您可以在命令行中指定它。来自RMI Tutorial

默认情况下,注册表在端口 1099 上运行。要在不同的端口上启动注册表,请在命令行中指定端口号。不要忘记取消设置您的 CLASSPATH 环境变量。

Microsoft Windows:

start rmiregistry 2001

Solaris OS or Linux:

rmiregistry 2001 &

在您的代码中,您使用 LocateRegistry.getRegistry(String host, int port) 覆盖来按主机名和端口定位注册表,如本教程的 Creating a Client Program 部分所述。 (实现服务器时也是如此。)

【讨论】:

  • 好的,所以你的意思是没有办法改变 rmiRegistry 端口,但你可以使用 JVM 的 -D 属性 arg 将 rmiServer 端口从 1098 更改为任何值?
  • @djangofan:不完全是。您可以在命令行中更改 rmiregistry 端口(如上所示)。
  • @djangofan 他说的恰恰相反。
  • ok,也就是说,除了在启动JVM之前从命令行启动“rmiregistry.exe”的方法之外,没有办法改变rmiRegistry端口?
  • @djangofan 你读得不够仔细。他也没有这么说,还有:你可以在你的 JVM 中通过 Locatearegistry.createaRgistry() 在你喜欢的任何端口上启动它。
【解决方案2】:

您可以在导出远程对象时指定自己的端口,通过 super(port, ...) 或 exportObject(remote, port, ...) 取决于您是否扩展 UnicastRemoteObject。如果您扩展 Activatable,则类似的 super() 重载带有端口号。如果您使用它,您可以在命令行上指定注册表的端口,否则通过 LocateRegistry.createRegistry() 如果您使用它。

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多