Мы разрабатываем клиент-серверное приложение с Java RMI, и для тестирования мы будем использовать компьютер как клиент, так и сервер. Таким образом, клиентское и серверное приложения должны вызывать rmiregistry на одной машине, но, очевидно, это две разные JVM. Как мы можем сделать это? Мы надеялись, что нужно только предоставить разные порты LocateRegistry, но мы получаем NotBoundException ... Каков правильный путь?Java RMI: несколько rmiregistry на том же компьютере
ответ
RMI Registry - это сервер, на котором хранится реестр служб.
Таким образом, ваш сервер должен подключиться к реестру RMI и зарегистрировать себя в нем, в то время как клиент должен подключиться к RMI реестра и посмотреть сервер
Так что вам нужно запустить одного RMI реестра на вашем компьютере.
Кажется, что вы получаете NotBoundException причина у вас есть два из них
Вы можете работать столько, сколько вам угодно, но почему? Вам не нужно. Попросите сервер запустить собственный реестр через LocateRegistry.createRegistry()
и попросите клиента найти его. Кажется, вы думаете, что клиенту нужен собственный реестр, что неверно.
Если у вас есть NotBoundException
ясно, либо служба не была связана вообще ни в одном из реестра, или вы искали неправильный.
Хорошо, но клиент тоже должен иметь свой собственный реестр, иначе как сервер может вызвать удаленный метод на клиенте? –
Клиент может зарегистрировать себя непосредственно на сервере, предоставив себя в качестве параметра удаленного метода, вызываемого на сервере, например 'registerClient (клиент RemoteClient)'. Нет необходимости в клиентском реестре вообще. – EJP
- 1. RMI - удаленный объект, rmiregistry
- 2. RMI-сервер: rmiregistry или LocateRegistry.createRegistry
- 3. RMI Java несколько экземпляров одного и того же сервера RMI
- 4. java RMI - несколько хостов регистрируют объект с тем же именем
- 5. Несколько TcpClients на том же компьютере, что и сервер
- 6. Можно ли запустить несколько докеров-демонами на том же компьютере
- 7. Несколько программ Java, работающих на одном компьютере
- 8. Ehcache не реплицируется между двумя tomcat на том же компьютере
- 9. Услуги WCF на том же компьютере
- 10. тестирование клиент-сервера на том же компьютере
- 11. Настройка netem на том же компьютере
- 12. - это хорошая идея запустить rmiregistry для запуска на сервере RMI?
- 13. Сокеты Java: несколько потоков клиентов на одном и том же порту на одном компьютере?
- 14. Запуск RMIRegistry на другой хост для RMIServers
- 15. Java RMI: зарегистрируйте 2 разных класса на сервере
- 16. Несколько экземпляров ArangoDB на том же сервере
- 17. Как запустить rmiregistry и rmi-сервер с правильными параметрами?
- 18. Java RMI и сервер приложений
- 19. Запустить приложение java без запуска rmiregistry
- 20. Java RMI - Понимание учебника Oracle
- 21. Несколько служб tcp на том же порту
- 22. Rmiregistry vs LDAP
- 23. Установите дополнительную версию WebStorm на том же компьютере Mac
- 24. Невозможно запустить клиент RMI на другом компьютере
- 25. Связь со штекером Udp на том же порту на компьютере
- 26. TFS на месте развертывания сайта на том же компьютере
- 27. Работает на python и Anaconda на том же компьютере Windows
- 28. захватить трафик с эмулятора на сервер на том же компьютере
- 29. Запуск двух серверов Jetty на том же компьютере
- 30. Местоположение RMI RMI-REGISTRY
«Итак, ваш сервер должен подключиться к реестру RMI и зарегистрировать его в нем», что вы имеете в виду именно с этим? метод rebind()? –
Я знаю, что у меня их два ... Мне нужен один для клиента, а один для сервера ... они два разных приложения, два разных JVM –
Вам нужен один реестр, который будет использоваться как сервером (он будет использовать метод _bind_) и клиентом (который будет использовать метод _lookup_) – bedrin