java Вылетает Exception java.rmi.ConnectIOException

215
25 мая 2017, 08:47

Написал , RMI клиент-сервер , на localhost все работает, проблема возникает при работе на виртуалке , сервер запускается и работает (на основной машине) Здесь создается RMI registry

            CustomerService customerService = new CustomerService();
            CreditCardService creditCardService = new CreditCardService();
            OrderService orderService = new OrderService();
            ItemService itemService = new ItemService();
            ICustomerService stub0 = (ICustomerService) UnicastRemoteObject.exportObject(customerService, 0);
            IItemService stub1 = (IItemService) UnicastRemoteObject.exportObject(itemService, 0);
            IOrderService stub2 = (IOrderService) UnicastRemoteObject.exportObject(orderService, 0);
            ICreditCardService stub3 = (ICreditCardService) UnicastRemoteObject.exportObject(creditCardService, 0);
            Registry registry = LocateRegistry.createRegistry(1099);
            registry.rebind("CustomerService", stub0);
            registry.rebind("ItemService", stub1);
            registry.rebind("OrderService", stub2);
            registry.rebind("CreditCardService", stub3);

При вызове удаленного метода на RMI клиенте вылетает Exception

Exception in thread "main" java.rmi.ConnectIOException: Exception creating connection to: 192.168.232.1; nested exception is: 
    java.net.SocketException: Network is unreachable (connect failed)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:631)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:130)
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227)
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179)
    at com.sun.proxy.$Proxy0.readAll(Unknown Source)
    at client.main.MainClient.main(MainClient.java:60)
Caused by: java.net.SocketException: Network is unreachable (connect failed)
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
    ... 7 more

Код клиента :

Registry registry = LocateRegistry.getRegistry(args[0], Integer.valueOf(args[1]));
        ICustomerService customerService = (ICustomerService) registry.lookup("CustomerService");
        IOrderService orderService = (IOrderService) registry.lookup("OrderService");
        ICreditCardService creditCardService = (ICreditCardService) registry.lookup("CreditCardService");
        IItemService itemService = (IItemService) registry.lookup("ItemService");

Он отрабатывает нормально, сам Exception вылетает при вызове методов orderService,itemService и т.д. (объектов заглушек)

Сама виртуалка пингуется нормально , сервер с виртуалке тоже , пробовал XP и Ubuntu , фаервол везде отключен

Еще странность в том, что в Exception указан ip 192.168.232.1 , хотя клиент запускается из консоли с параметром 192.168.228.1 1099

Answer 1

Проблема решена ! У хоста было два виртуальных сетевых адаптера , и при запуске клиентского приложения , он пытался подключиться к второму адаптеру, решилось отключение ненужного виртуального адаптера

READ ALSO
Свой адаптер для listview

Свой адаптер для listview

Сделал свой адаптер для listview из примера, но возник такой вопрос список состоит из 6 элементов, на в каждом из элементов фиксированный набор...

306
Помощь в формирование базы данных

Помощь в формирование базы данных

ПриветДелаю проект онлайн банка для портфолио на Spring

240
Связь socket и servlet

Связь socket и servlet

Начал разбираться с сервлетами и задался вопросом:

275
Как эмулировать нажатие на кнопку на сайте?

Как эмулировать нажатие на кнопку на сайте?

Пишу мобильное приложение для сайта у которого нет своего APIНадо эмулировать нажатие на кнопку

373