0

Oracle NoSQL は Linux でホストする必要があるデータベースであるため、Oracle VM VirtualBox で仮想 Ubuntu を実行しています。私のホスト コンピューターは Windows 7 を実行しています。

ブリッジ接続が確立されており、2 つの間で通信できることは間違いありません。両方のマシンでデータベースを実行すると、ポート 5001 で実行されるもう一方のマシンの管理コンソールに、Web ブラウザーから問題なく接続できます。ネットワーク上のマシンの IP アドレスまたはそのネットワーク名を使用して、そのように接続できます。

両方のマシンからそのマシンのデータベースに接続し、IP アドレスまたはネットワーク名を使用して Java プログラムからそのデータベースを使用できます。

仮想マシンから、ネットワーク名を使用して自分の PC の kvstore に接続して使用できますが、IP アドレスを使用すると socketTimeoutException が発生します。これは kvstore の制限によるものだと思います。

PC から、ネットワーク名または IP アドレスを使用して仮想マシンの kvstore に接続して使用することができません。仮想マシンのネットワーク名を使用して接続しようとすると、次のスタック トレースが表示されます。

Exception in thread "main" oracle.kv.FaultException: Could not contact any RepNode at: [pc30129vm: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: [pc30129vm: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.ConnectIOException: Exception creating connection to: pc30129vm; nested exception is: 
    java.net.SocketTimeoutException: connect timed out
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:632)
    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.newCall(UnicastRef.java:340)
    at sun.rmi.registry.RegistryImpl_Stub.list(Unknown Source)
    at oracle.kv.impl.util.TopologyLocator.getInitialTopology(TopologyLocator.java:175)
    ... 4 more
Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:75)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    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)
    ... 9 more

仮想マシンのそのポートで Nmap を実行しようとしましたが、正常に戻ったようです。nmap コマンドを使用する場合:

nmap -p 5000 pc30129vm

私は結果を得る:

Starting Nmap 6.25 ( http://nmap.org ) at 2013-03-18 14:51 Pacific Daylight Time

Nmap scan report for pc30129vm (192.168.0.25)

Host is up (0.0030s latency).

PORT     STATE    SERVICE

5000/tcp filtered upnp

MAC Address: 08:00:27:44:A1:10 (Cadmus Computer Systems)


Nmap done: 1 IP address (1 host up) scanned in 11.74 seconds

仮想マシンのデータベースに接続して使用できない理由がわかりません。Linux を実行している同僚のラップトップでは、接続することさえできましたが、何らかの理由で仮想マシンが私の努力を妨げているようです。

4

1 に答える 1

1

回答として貼り付けられたコメント:

ほとんどの場合、そのポートにアクセスできないようにファイアウォールが配置されています。ファイアウォールはサーバーを保護し、サーバーへの着信接続を拒否するか、マシンからの発信接続をブロックするか、最悪の場合はその両方を行う可能性があります。

実際にポートにアクセスできる場合、nmap は STATE 列に「開いている」と報告します。

于 2013-03-18T22:25:52.333 に答える