【问题标题】:Java RMI Connection refusedJava RMI 连接被拒绝
【发布时间】:2012-09-10 20:33:10
【问题描述】:

来自策略文件:

permission java.net.SocketPermission "localhost:1024-", "listen, resolve";
permission java.net.SocketPermission "localhost:1099", "connect, resolve";
permission java.net.SocketPermission "localhost:1024-", "connect, resolve";
permission java.net.SocketPermission "localhost:1024-", "accept, resolve";

拥有此代码:

remoteObjName = "blabla";
final objectInterface engine = new object();
final Remote stub = UnicastRemoteObject.exportObject(engine, 0);
final Registry registry = LocateRegistry.getRegistry();
registry.rebind(remoteObjName, stub);//this line causes the exception.

什么可能导致这个异常,在最后一行registry.rebind(remoteObjName, stub);

java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
        java.net.ConnectException: Connection refused: connect
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
        at sun.rmi.server.UnicastRef.newCall(Unknown Source)
        at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
        at app.ConnectionHandler$QAProbeRemote.startEngine(ConnectionHandler.java:47)
        at app.Main.<init>(Main.java:71)
        at app.Main$1.run(Main.java:49)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$000(Unknown Source)
        at java.awt.EventQueue$1.run(Unknown Source)
        at java.awt.EventQueue$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
    Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source)
        ... 22 more

【问题讨论】:

  • 您是否在操作系统中运行了$ rmiregistry &lt;portNumber&gt;
  • 你应该检查这个:stackoverflow.com/questions/1823305/…
  • 您还没有启动注册表,因此连接失败。
  • 请将此添加为答案,以便我接受。
  • 是的,只需在命令提示符中键入命令“rmiregistry”即可。

标签: java rmi


【解决方案1】:

您还没有启动注册表,因此连接失败。

【讨论】:

  • 您的意思是启动 rmiregistry 服务?
【解决方案2】:

您需要启动在 JRE 文件夹中找到的“rmiregistry”注册表。

例如,假设您的 JRE 文件夹位于:C:\Program Files\Java\jre1.8.0_271\bin

您可以转到该文件夹​​并运行 rmiregistry.exe

rmiregistry.exe 将在控制台中运行。将其留在后台。

如果您更喜欢通过 cmd 执行此操作,请按照以下步骤操作:

打开cmd,写:

cd C:\Program Files\Java\jre1.8.0_271\bin

点击“Enter”,然后写:

启动 rmiregistry

然后再次按“Enter”。

【讨论】:

    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2010-12-21
    相关资源
    最近更新 更多