gpt4 book ai didi

java - 为什么java rmi一直连接到127.0.1.1。什么时候ip是192.168.X.X?

转载 作者:IT王子 更新时间:2023-10-29 01:09:56 24 4
gpt4 key购买 nike

我有一个 java rmi 应用程序,我只是这样做:

客户:

Registry registry = LocateRegistry.getRegistry("localhost");
costApi = (CostApi) registry.lookup("server.CostApi");

当我在本地主机上托管服务器时一切正常。当我在本地网络的另一台机器上启动相同的程序时,在 192.168.x.x 并更改为:

客户:

Registry registry = LocateRegistry.getRegistry("192.168.x.x");
costApi = (CostApi) registry.lookup("server.CostApi");

它不再工作并且失败并出现一个非常奇怪的错误:

java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: 
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:129)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
at com.sun.proxy.$Proxy0.dataCost(Unknown Source)
at billing.data.DataBiller.performBilling(DataBiller.java:57)
at billing.data.DataBiller.consumeMessage(DataBiller.java:46)
at general.templates.RabbitWorker.run(RabbitWorker.java:124)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)

我什至没有尝试连接到 127.0.1.1,而是连接到 192.168.x.x,我该如何解决这个问题?我更喜欢只使用 java 代码,而不是用配置文件修改我的机器。我正在使用 Linux

最佳答案

这通常是由配置错误引起的。检查您的 /etc/hosts 文件以确保:

  • 本地主机映射到 127.0.0.1
  • 您的真实主机名映射到您的真实主机地址

众所周知,一些 Linux 发行版将此放在前面。

如果问题仍然存在,请尝试将服务器上的 java.rmi.server.hostname 设置为客户端在执行远程方法调用时应使用的 IP 地址。它需要在导出任何远程对象(包括注册表)之前进行设置。

问题是由 stub 中嵌入的 IP 地址引起的,它最终来自像 InetAddress.getLocalAddress(), 这样的东西,它和上面一样是容易出错的。它被 java.rmi.server.hostname.

覆盖

这是 item A.1 in the FMI FAQ ,但请注意该项目的标题有误。它不会在 lookup() 期间发生,它会在您对生成的 stub 调用远程方法时发生。

关于java - 为什么java rmi一直连接到127.0.1.1。什么时候ip是192.168.X.X?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23478649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com