Написал , 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
Проблема решена ! У хоста было два виртуальных сетевых адаптера , и при запуске клиентского приложения , он пытался подключиться к второму адаптеру, решилось отключение ненужного виртуального адаптера
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Сделал свой адаптер для listview из примера, но возник такой вопрос список состоит из 6 элементов, на в каждом из элементов фиксированный набор...
Пишу мобильное приложение для сайта у которого нет своего APIНадо эмулировать нажатие на кнопку