Запустите Java-приложение без запуска rmiregistry

Когда я запускаю клиент-серверное приложение, использующее Java RMI, я заметил, что оно все еще работает, даже если я не запустил "rmiregistry" в командной строке, что я научился делать. Разница в программе я заметил:

    try { 
        LocateRegistry.getRegistry(1099).list();
        System.out.println("rmiregistry WAS started before running the application"); } 
    catch (RemoteException e) {
        LocateRegistry.createRegistry(1099);
        System.out.println("rmiregistry WAS NOT started before running the application"); }

Кто-нибудь со знанием может разобраться, что происходит и как это повлияет на программу?

1 ответ

Решение
LocateRegistry.getRegistry(1099).list();
System.out.println("rmiregistry WAS started before running the application"); }

Это сообщение вводит в заблуждение. getRegistry() не выполняет никаких сетевых коммуникаций, поэтому тот факт, что это удалось, не является верным признаком того, что Реестр работает. Только используя результат getRegistry() могу сказать тебе это.

Ты делаешь это задом наперед. Вы должны попробовать createRegistry() сначала позвоните, а если не получится getRegistry() call.createRegistry()`потерпит неудачу, если реестр уже запущен, и завершится успешно, если это не так.

Другие вопросы по тегам