2016-05-30 6 views
1

Ich habe eine Java-Anwendung entwickelt, die ArangoDB als Backend-Datenbank verwendet (verwendeter ArangoDB-Java-Treiber/Schnittstelle für den Zugriff auf ArangoDB).Fernzugriff auf ArangoDB über Java-Schnittstelle

Alles ist gut, bis meine ArangoDB und Anwendung auf demselben Rechner residiert.

Sobald i ArangoDB auf Remote-Rechner (Dedicated Server) bewegt, ist meine Anwendung nicht darauf zugreifen :(

ich meine Remote-Rechner Details (ArangoDB Server) in einigen Eigenschaften Datei gegeben haben und füttern diese Datei Speicherort ArangoConfigure Konstruktor beim Erstellen ArangoDriver Object Aber noch bin ich nicht in der Lage ArangoDB zugreifen :(

Kleiner Schnipsel meines Codes unter:..

protected static ArangoConfigure getConfiguration() { 
     //ArangoConfigure configure = new ArangoConfigure(); 
     ArangoConfigure configure = new 
ArangoConfigure("/Volumes/Official/ZLabs/arangodb.properties"); 
       configure.init(); 

     return configure; } 

    protected static ArangoDriver getArangoDriver(ArangoConfigure 
configuration) {  return new ArangoDriver(configuration);  } 

Bitte helfen Sie mir in dieser Hinsicht

Warten auf Ihre Antwort.

Dank & Mit besten Grüßen, - Mahi

Antwort

1

Wenn die Aranngodb Java-Treiber nicht /Volumes/Official/ZLabs/arangodb.properties es gibt eine Log-Nachricht zu öffnen oder zu analysieren.

Wenn arangodb Eigenschaften wie das aussieht:

port=8529 
host=192.168.22.17 
user=root 
password=OpenSesame 
enableCURLLogger=false 

Sie starten walking up the OSI model zu debuggen TCP-Verbindungsprobleme aufgrund firewals möglich Verbindungsprobleme zu entziehen, Routing usw. Man nutzt die allgemein verfügbaren Telnet-Befehl, um die Verfügbarkeit zu prüfen des Servers:

telnet 192.168.22.17 8529 
Trying 192.168.22.17... 

Wenn es dort für immer sitzt, Sie höchstwahrscheinlich eine Firewall, die Filterung Sie weg, werden Sie endlich bekommen:

telnet: Unable to connect to remote host: Connection timed out 

Wenn es sofort beendet mit:

telnet: Unable to connect to remote host: Connection refused 

Es ist der Server scheint nicht antwortet.

Auf der Serverseite können Sie dann überprüfen, ob der Dienst den Port (8529) Sie versuchen, eine Verbindung gebunden hat:

netstat -alpnt |grep 8529 
tcp  0  0 0.0.0.0:8529   0.0.0.0:*    LISTEN  19912/arangod 

Wenn Sie es stattdessen sehen Bindung 127.0.0.1:8529 der Lage sein, die Sie nicht verbinden Sie es aus der Ferne und müssen ändern arangod.conf wie folgt:

[server] 
endpoint = tcp://0.0.0.0:8529 

Und dann ArangoDB neu starten. Dann sollten Sie in der Lage sein, etwas wie dieses zu sehen:

telnet 192.168.22.17 8529 
Trying 192.168.22.17... 
Connected to 192.168.22.17. 
Escape character is '^]'. <start to type now: > 
GET/HTTP/1.0 

<server should reply:> 
HTTP/1.1 301 Moved Permanently 
Location: /_db/_system/_admin/aardvark/index.html 
Content-Type: text/html 
Server: ArangoDB 
Connection: Close 
Content-Length: 197 

<html><head><title>Moved</title></head><body><h1>Moved</h1> 
<p>This page has moved to <a href="/_db/_system/_admin/aardvark/index.html">/_db/_system/_admin/aardvark/index.html</a>. 
</p></body></html>Connection closed by foreign host. 
2

Zunächst einmal danke @dothebart für alle Ihre Hilfe.

@dothebart, ich habe alle Details überprüft, die Sie erwähnt haben, bevor ich hier gepostet habe. Die einzige Sache, die man vermisst, ist die HTTP-Konnektivität, um das zu zeigen.

Eigentlich hat die untenstehende Codeänderung das Problem für mich behoben.

Früher Code:

ArangoConfigure configure = new ArangoConfigure("/home/arango.properties"); 
configure.init(); 
ArangoDriver driver = new ArangoDriver(configuration); 

Modified Code:

ArangoConfigure configure = new ArangoConfigure("/home/arango.properties"); 
ArangoHost hostObj = new ArangoHost(<IP-Address>, 8529); 
configure.setArangoHost(hostObj); 
configure.setUser(<user-name>); 
configure.setPassword(<password>); 
configure.init(); 
ArangoDriver driver = new ArangoDriver(configuration); 

wieder von Host, Benutzernamen und ein Passwort einrichten und ist damit arbeiten :(

Datei hat alle details, warum sollte ich sie dann noch einmal zur verfügung stellen .. das habe ich nicht verstanden

@dothebart Ich kann die Protokolldatei nicht finden. Bitte lassen Sie mich wissen, wo ich sie finden kann.

0

Dies sieht so aus, als ob die Eigenschaftendatei nicht im Klassenpfad gefunden wird.

Der Pfad der Protokolldatei sollte in Ihrer Protokollkonfigurationsdatei in Ihrem Projekt konfiguriert werden. Ihr Projekt kann zum Beispiel Logback (logback.xml) oder eine andere Implementierung verwenden.