2013-03-15 2 views
1

Oracle NoSQL - это база данных, которая должна размещаться в Linux, поэтому у меня виртуальный Ubuntu работает в Oracle VM VirtualBox.UnknownHostException доступ к службе на virtualBox

Когда вы запускаете KvStore для Oracle NoSQL, он использует порт 5000 для базы данных и 5001 для консоли администратора. С моего компьютера, я могу получить доступ к консоли администратора, работающие на Linux виртуальной машине, например, так:

http://192.168.0.25:5001/ 

Где 192.168.0.25 это инет ADDR я получаю от команды IFCONFIG в Linux машины.

Однако, если я пытаюсь подключиться к базе данных из Java, минуя Java хост и номер порта, как так:

KVStoreConfig kvconfig = new KVStoreConfig("kvstore", "192.168.0.25:5000"); 

Я получаю следующее сообщение об ошибке:

Exception in thread "main" oracle.kv.FaultException: Could not contact any RepNode at: [192.168.0.25:5000] (11.2.2.0.26) 
Fault class name: oracle.kv.KVStoreException 
    at oracle.kv.KVStoreFactory.getStore(KVStoreFactory.java:123) 
    at nosql.Test.main(Test.java:18) 
Caused by: oracle.kv.KVStoreException: Could not contact any RepNode at: [192.168.0.25:5000] 
    at oracle.kv.impl.util.TopologyLocator.getInitialTopology(TopologyLocator.java:226) 
    at oracle.kv.impl.util.TopologyLocator.get(TopologyLocator.java:85) 
    at oracle.kv.impl.api.RequestDispatcherImpl.<init>(RequestDispatcherImpl.java:285) 
    at oracle.kv.KVStoreFactory.getStore(KVStoreFactory.java:118) 
    ... 1 more 
Caused by: java.rmi.UnknownHostException: Unknown host: coraythan-VirtualBox; nested exception is: 
    java.net.UnknownHostException: coraythan-VirtualBox 
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:616) 
    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:128) 
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194) 
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148) 
    at com.sun.proxy.$Proxy0.getSerialVersion(Unknown Source) 
    at oracle.kv.impl.util.registry.RemoteAPI.<init>(RemoteAPI.java:60) 
    at oracle.kv.impl.rep.admin.RepNodeAdminAPI.<init>(RepNodeAdminAPI.java:63) 
    at oracle.kv.impl.rep.admin.RepNodeAdminAPI.wrap(RepNodeAdminAPI.java:70) 
    at oracle.kv.impl.util.TopologyLocator.getInitialTopology(TopologyLocator.java:191) 
    ... 4 more 
Caused by: java.net.UnknownHostException: coraythan-VirtualBox 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) 
    at java.net.Socket.connect(Socket.java:579) 
    at oracle.kv.impl.util.registry.ClientSocketFactory.createSocket(ClientSocketFactory.java:300) 
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613) 
    ... 14 more 

я могу получить это нормально работать, когда я размещаю KvStore на своем обычном компьютере и пытаюсь подключиться к нему так (используя IP-адрес обычного компьютера) с java.

Еще одна странная вещь, что если я нахожусь в виртуальной машине, я могу получить доступ к админ с этим:

coraythan-virtualbox:5001 

Но если я пытаюсь сделать это с моего основного компьютера он дает мне «может не найти ".

Я попытался изменить свое соединение с Java на coraythan-virtualbox: 5000, но это также не работает.

Кто-нибудь знает, что я здесь делаю неправильно? Благодаря!

+0

Можете ли вы даже пинговать с вашего хоста до 192.168.0.25? Какой тип сетевого адаптера вы настроили для окна vm? host-only или мост? – Stainedart

+0

мостовой, и да, я могу его пинговать. – CorayThan

+0

Посмотрите на этот вопрос, кажется, что у вас проблемы с доступом к порту http://serverfault.com/questions/309357/ping-a-specific-port, используя команду nmap, которую вы действительно сможете увидеть, если порт доступный от вашего хозяина. – Stainedart

ответ

2

Проблема в том, что Linux компьютер автоматически не зарегистрирует свое имя сети с сетью моей компании. Я должен был администратор сети вручную добавить сетевое имя для компьютера. KVStore требует использования имени сети.

0

Вы создаете сокет, используя именованный адрес, то есть DNS не знает такого имени. Попробуйте изменить его на IP-адрес.

UnknownHostException

Thrown to indicate that the IP address of a host could not be determined.

+0

Я считаю, что он уже использует ip, глядя на трассировку стека. – Stainedart

+0

@Stainedart Вот что я сказал, использую IP вместо имени хоста. – 2013-03-15 19:32:13

+0

Я пытаюсь подключиться, используя «192.168.0.25:5000». Это то, с чем он не будет связан. – CorayThan

Смежные вопросы