Соединение RMI отказалось на localhost

Я пытаюсь изучить кодирование RMI, и когда я запускаю серверную часть RMI, я получаю отказ в соединении. Это мой основной метод сервера

public static void main(String[] args)throws Exception { Implementation impl=new Implementation(); Naming.rebind("//localhost:2020/RMI", impl); System.out.println("Implementation has been bind to the name RMI and is ready for use"); } 

Я считаю, что код для реализации не имеет значения, так как это просто реализованный интерфейс, который будет запускать код. Исключением я получаю это

 Exception in thread "main" java.rmi.ConnectException: Connection refused to host: localhost; 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 java.rmi.Naming.rebind(Unknown Source) at epl362Project.Server.main(Server.java:10) Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(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.(Unknown Source) at java.net.Socket.(Unknown Source) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source) ... 7 more 

Что я делаю не так? обе стороны клиента и сервера будут работать на моем ноутбуке, поскольку это всего лишь упражнение. Я что-то упустил или что-то не так с моим кодом? Пожалуйста, дайте мне ответ, объясните, почему это так, потому что я не просто хочу заставить его работать, я пытаюсь учиться.

** EDIT Я узнал, почему мой код не работает. Мне не хватало строки кода, в которой говорилось:

 LocateRegistry.createRegistry(2020); 

которые я нашел из других вопросов здесь, в stackoverflow. Но не было никакого объяснения, и я не нашел одно онлайн о том, почему этот код необходим для правильной работы RMI. У кого-нибудь есть объяснение?

One Solution collect form web for “Соединение RMI отказалось на localhost”

objectiveю Naming.rebind() является реестр RMI. Он должен быть запущен. Он не бежал. Поэтому вы не могли подключиться к нему. Таким образом, вы получили ConnectException .

Я считаю, что код для реализации не имеет значения, так как это просто реализованный интерфейс, который будет запускать код.

Это и бессмысленно, и не имеет значения. Интерфейсы не «запускают код». Методы в classах запускают код, и в этом случае class реализации запускает код. Однако ваша проблема заключается не в «запуске [ning] кода», а в подключении к реестру.

  • Как несколько клиентов одновременно подключаются к одному порту, например 80, на сервере?
  • Мгновенно обнаруживать отключение клиента от серверного сокета
  • Что именно влияет на URLConnection.setDoOutput ()?
  • Как немедленно закрыть сервер HTTP (Node.js)?
  • Почему при запуске URL-адреса возникает исключение «java.net.ConnectException: Connection timed out»?
  • Можно ли использовать статический экземпляр java.sql.Connection в многопоточной системе?
  • mySQL - создание новой таблицы с использованием данных и столбцов из трех таблиц
  • Какой порт используется соединением Java RMI?
  • Строка подключения с относительным путем к файлу базы данных
  • Давайте будем гением компьютера.