2

Oracle NoSQLはLinuxでホストする必要のあるデータベースであるため、OracleVMVirtualBoxで仮想Ubuntuを実行しています。

KvStore for Oracle NoSQLを実行すると、データベースにポート5000が使用され、管理コンソールに5001が使用されます。私のPCから、次のようにLinux仮想マシンで実行されている管理コンソールにアクセスできます。

http://192.168.0.25:5001/

ここで、192.168.0.25はLinuxマシンのifconfigコマンドから取得したinetaddrです。

ただし、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アドレスを使用して)そのように接続しようとすると、これを正常に機能させることができます。

もう1つの奇妙なことは、仮想マシンを使用している場合、次の方法で管理者にアクセスできることです。

coraythan-virtualbox:5001

しかし、メインコンピュータからこれを実行しようとすると、「見つかりませんでした」というエラーが表示されます。

Java接続をcoraythan-virtualbox:5000に変更しようとしましたが、それも機能しません。

私がここで間違っていることを誰かが知っていますか?ありがとう!

4

2 に答える 2

2

問題は、Linuxコンピュータがそのネットワーク名を私の会社のネットワークに自動的に登録しないことでした。ネットワーク管理者にコンピューターのネットワーク名を手動で追加してもらう必要がありました。KVStoreでは、ネットワーク名を使用する必要があります。

于 2013-03-18T18:11:54.773 に答える
0

名前付きアドレスを使用してソケットを作成しています。つまり、DNSはそのような名前を認識していません。IPアドレスに変更してみてください。

UnknownHostException

ホストのIPアドレスを判別できなかったことを示すためにスローされます。

于 2013-03-15T18:59:29.123 に答える