Соединение 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. У кого-нибудь есть объяснение?

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

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

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

  • Запустить командный файл с командой psql без пароля
  • Код необходимости создания пула соединений в java
  • Какой порт используется соединением Java RMI?
  • Hibernate Slow для получения соединения Postgres
  • Мгновенно обнаруживать отключение клиента от серверного сокета
  • Почему при запуске URL-адреса возникает исключение «java.net.ConnectException: Connection timed out»?
  • проверить подключение к Интернету в cocoa-приложении
  • В чем разница между соединением и таймаутом чтения для сокетов?
  • Что именно влияет на URLConnection.setDoOutput ()?
  • Java обнаруживает потерянное соединение
  • Как несколько клиентов одновременно подключаются к одному порту, например 80, на сервере?
  • Давайте будем гением компьютера.