У меня есть простой «Привет мир» C++/Java
приложение с CORBA
, Сервер написан на C++
клиент в Java
, Я использую omniORBs omniNames
, как служба имен.
Я хотел бы запустить мой omniNames
и сервер на моем localhost
(Ubuntu) и запустить мой клиент на Windows XP SP3 в VirtualBox, установленном на моем локальном хосте Ubuntu.
(Я имею в виду: на своем локальном хосте я установил Ubuntu OS, а в Ubuntu я установил VirtuaBox с Windows XP SP3 «внутри».)
Я попробовал это:
omniNames -start
./server -ORBInitRef
NameService=corbaloc::localhost:2809/NameService
java client -ORBInitRef NameService=corbaloc::x.x.x.x:2809/NameService
но получил ошибки:
C:\Temp\java>java client -ORBInitRef NameService=corbaloc:212.106.19.209:2809/Na
meService
pač 10, 2012 3:51:17 PM com.sun.corba.se.impl.naming.namingutil.CorbalocURL badA
ddress
WARNING: "IOP00110603: (BAD_PARAM) Bad host address in -ORBInitDef"org.omg.CORBA.BAD_PARAM: vmcid: SUN minor code: 603 completed: No
at com.sun.corba.se.impl.logging.NamingSystemException.insBadAddress(Unk
nown Source)
at com.sun.corba.se.impl.logging.NamingSystemException.insBadAddress(Unk
nown Source)
at com.sun.corba.se.impl.naming.namingutil.CorbalocURL.badAddress(Unknow
n Source)
at com.sun.corba.se.impl.naming.namingutil.CorbalocURL.<init>(Unknown So
urce)
at com.sun.corba.se.impl.naming.namingutil.INSURLHandler.parseURL(Unknow
n Source)
at com.sun.corba.se.impl.resolver.INSURLOperationImpl.operate(Unknown So
urce)
at com.sun.corba.se.impl.resolver.ORBInitRefResolverImpl.resolve(Unknown
Source)
at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown
Source)
at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown
Source)
at com.sun.corba.se.impl.orb.ORBImpl.resolve_initial_references(Unknown
Source)
at client.main(client.java:28)
C:\Temp\java>
Можно ли таким образом соединить клиент и сервер? Как мне это сделать? У меня есть только файлы клиентов в Windows XP — больше ничего — нет службы имен, нет файлов сервера, только программы клиентов.
Я проверил свой локальный IP-адрес на сайте: http://whatismyipaddress.com/ и записал это, например: x.x.x.x
Очень маловероятно, что это правильный IP-адрес для использования. Как вы настроили сеть для виртуальной машины VirtualBox? Если вы используете сеть NAT по умолчанию, то гость не может общаться с хостом, поэтому вместо этого вам нужно настроить сеть «только для хоста», а затем использовать IP-адрес на стороне хоста этой сети (которую вы должен быть в состоянии найти с помощью ifconfig
на хосте Ubuntu, ищите vboxnet
интерфейс) при сообщении клиенту, где найти ORB. Вы также можете добавить правила брандмауэра на хост-компьютере, чтобы разрешить входящие соединения через виртуальный интерфейс.
Обратите внимание, что для одной и той же виртуальной машины может быть настроено более одного сетевого интерфейса, поэтому, если виртуальной машине необходим доступ к Интернету, а также к шару ORB, тогда вполне нормально настроить его с двумя интерфейсами: одним NAT и другим хостом. только.
Других решений пока нет …