2

Oracle NoSQL 是一个应该托管在 Linux 上的数据库,所以我有一个在 Oracle VM VirtualBox 中运行的虚拟 Ubuntu。

当您运行 KvStore for Oracle NoSQL 时,它使用端口 5000 访问数据库,使用端口 5001 访问管理控制台。从我的电脑上,我可以访问在 linux 虚拟机上运行的管理控制台,如下所示:

http://192.168.0.25:5001/

其中 192.168.0.25 是我从 linux 机器的 ifconfig 命令获得的 inet 地址。

但是,如果我尝试从 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 并尝试使用 java 连接到它(使用普通计算机的 IP 地址)时,我可以让它正常工作。

另一个奇怪的事情是,如果我在虚拟机中,我可以通过以下方式访问管理员:

coraythan-virtualbox:5001

但是,如果我尝试从我的主计算机上执行此操作,它会给我一个“找不到”错误。

我尝试将我的 java 连接更改为 coraythan-virtualbox:5000,但这也不起作用。

有谁知道我在这里做错了什么?谢谢!

4

2 回答 2

2

问题是 linux 计算机没有自动向我公司的网络注册其网络名称。我必须让网络管理员手动为计算机添加网络名称。KVStore 需要使用它看起来的网络名称。

于 2013-03-18T18:11:54.773 回答
0

您正在使用命名地址创建套接字,即 DNS 不知道这样的名称。尝试将其更改为IP地址。

未知主机异常

抛出表示无法确定主机的 IP 地址。

于 2013-03-15T18:59:29.123 回答