当前位置: 首页 > 知识库问答 >
问题:

RMI服务器使用了错误的IP地址

谷博艺
2023-03-14

当我的网卡连接到网络A时,我正在启动我的RMI服务器。运行我的客户端按预期成功并打印“Hello World”。一旦我将网络连接更改为网络B(无需重新启动RMI服务器!)我无法再连接到服务器。服务器和客户端总是在同一台主机上运行,所以使用localhost地址就足够了。

服务器:

public class HelloImpl extends UnicastRemoteObject implements Hello {

    public HelloImpl() throws RemoteException {
    }

    public String sayHello() {
        return "Hello world!";
    }

    public static void main(String args[]) throws RemoteException {
        Registry registry = LocateRegistry.createRegistry(3128);
        registry.rebind("HelloServer", new HelloImpl());
    }
}

客户:

public class HelloClient {

    public static void main(String arg[]) throws Exception{
        Registry registry=LocateRegistry.getRegistry("localhost", 3128);;
        Hello result = (Hello) registry.lookup("HelloServer");
        System.out.println(result.sayHello());
    }

}

例外是:

HelloClient exception: Connection refused to host: 192.168.169.136; nested exception is: 
    java.net.ConnectException: Connection timed out: connect

它指的是在连接到网络A时分配给我的IP地址。注册表查找按预期工作,只有对result.sayHello()的调用失败,但有上述异常。

如何告诉RMI将localhost用于一切(而不仅仅是注册表)?

共有1个答案

蒋高超
2023-03-14

设置系统属性java。rmi,服务器。在导出任何远程对象(包括注册表)之前,在服务器JVM上将主机名设置为127.0.0.1。

 类似资料:
  • 问题内容: 我正在使用PHP和MySQL建立数据库连接,唯一的变化是我试图使用服务器IP地址从本地计算机访问远程服务器。 我得到的错误是。用户拥有所有特权和权利。 问题答案: MySQL的大多数默认安装仅侦听本地计算机。 在服务器上查找设置,并确保它正在侦听目标IP地址。您可能还需要确保 未 打开! 另外一种方法(不太安全!)可以将其设置为侦听所有地址-本地和远程:

  • 24.2 使用RMI暴露服务 使用Spring的RMI支持,你可以通过RMI基础架构透明地暴露你的服务。完成Spring的RMI设置后,你基本上具有类似于远程EJB配 置,除了没有对安全上下文传递和远程事务传递的标准支持。当使用RMI调用器时,Spring对这些额外的调用上下文提供了钩子,你可以在此插入安全框架 或者自定义的安全凭证。 24.2.1 使用RmiServiceExporter导出服务

  • 18.2. 使用RMI暴露服务 使用Spring的RMI支持,你可以通过RMI基础设施透明的暴露你的服务。设置好Spring的RMI支持后,你会看到一个和远程EJB接口类似的配置,只是没有对安全上下文传递和远程事务传递的标准支持。当使用RMI调用器时,Spring对这些额外的调用上下文提供了钩子,你可以在此插入安全框架或者定制的安全证书。 18.2.1. 使用 RmiServiceExporter

  • 授予codeBase“file:/home/rozerin/ideaprojects/computetest/src/main/java/”{permission java.security.allpermission;}; 堆栈跟踪是; ComputeEngine异常:java.security.AccessControllException:在java.security.AccessContr

  • 我刚刚安装了Ruby193和Ruby200,在创建了一个新的应用程序之后,我正在尝试加载服务器,但是我得到了下面的错误。 我用gem'sqlite3'替换了sqlite3 gem,'~ 有人知道怎么修吗? Gemfile是 Bundle Show提供捆绑包中包含的宝石: actionmailer(3.2.13) actionpack(3.2.13) activemodel(3.2.13) acti

  • 问题内容: 我知道我可以在tomcat服务器的context.xml中添加一个Valve来允许或拒绝一些IP地址: 除了上述配置外, 还有其他可以配置IP限制的方法吗? 例如,我可以使用文本文件或数据库存储IP地址以提出IP限制建议吗? 非常感谢你!!! 问题答案: 您可以动态注册Tomcat的远程地址过滤器。 http://tomcat.apache.org/tomcat-7.0-doc/con