我目前正试图通过bulls和rexster访问arangodb数据库。
我需要这样做,因为我想使用bulls(http://bulbflow.com)从python启动一些gremlin查询。
(我真的很喜欢aql和arangosh,但我已经有很多工作中的gremlin脚本)
下面是我在尝试使用灯泡中的雷克斯特之前所做的:
我成功地编译了arangob蓝图驱动程序,得到了:blueprints-arangob-graph-1.0.4-snapshot-jar-with-dependencies.jar
我下载了GRMLLI2.4一个RexSt2 2.4个二进制文件,并复制了蓝图-ARANGODB图形-1.0.4-SNAPHOTH-JAR-WORDENCENCI.JAN(分别)LIB和EXT文件夹
然后我面临几个问题:
第一,(不是一个灯泡问题)我没有成功地用当前版本的GrimLin(2.4.0)和/或Rexster(2.4.0)来正确地创建ARANGODB。
在Gremlin 2.4中:
gremlin> import com.tinkerpop.blueprints.impls.arangodb.*
[...]
gremlin> g = ArangoDBGraphFactory.createArangoDBGraph();
==>arangodbgraph[{"_id":"_graphs\/factory_graph","_rev":"20228207","_key":"factory_graph","vertices":"factory_vertices","edges":"factory_edges"}]
gremlin> g.E.count()
Not supported yet.
Display stack trace? [yN]
在Bash中,在发布Rexster 2.4时:
Exception in thread "main" java.lang.NoSuchFieldError: isRDFModel
at com.tinkerpop.blueprints.impls.arangodb.ArangoDBGraph.<clinit>(ArangoDBGraph.java:44)
at com.tinkerpop.blueprints.impls.arangodb.utils.ArangoDBConfiguration.configureGraphInstance(ArangoDBConfiguration.java:60)
at com.tinkerpop.rexster.config.GraphConfigurationContainer.getGraphFromConfiguration(GraphConfigurationContainer.java:119)
at com.tinkerpop.rexster.config.GraphConfigurationContainer.<init>(GraphConfigurationContainer.java:54)
at com.tinkerpop.rexster.server.XmlRexsterApplication.reconfigure(XmlRexsterApplication.java:99)
at com.tinkerpop.rexster.server.XmlRexsterApplication.<init>(XmlRexsterApplication.java:47)
at com.tinkerpop.rexster.Application.<init>(Application.java:96)
at com.tinkerpop.rexster.Application.main(Application.java:188)
我下载了一些使用Gremlin和Rexster版本2.2的示例,并再次安装了ArangoDB Blueprint驱动程序
这一次,它在2.2和2.2中都起作用:
g.e.count()返回了一些内容(因此受支持)
Rexster服务器启动,我可以访问端口8182上的Rexster API
但是,第二个问题是以下python代码:
from bulbs.rexster import Graph
from bulbs.config import Config
config = Config('http://localhost:8182/graphs/arangodb')
g = Graph(config)
返回:
({'status': '500', 'transfer-encoding': 'chunked', 'server': 'grizzly/2.2.18', 'connection': 'close', 'date': 'Wed, 08 Jan 2014 17:30:29 GMT', 'access-control-allow-origin': '*', 'content-type': 'application/json'}, '{"message":"","error":"javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: groovy.lang.MissingMethodException.rollback() is applicable for argument types: () values: []\\nPossible solutions: collect(), collect(groovy.lang.Closure), collect(java.util.Collection, groovy.lang.Closure)","api":{"description":"evaluate an ad-hoc Gremlin script for a graph.","parameters":{"rexster.returnKeys":[...]
我不知道如何解决这个问题(顺便说一句,我不是Java程序员)
这是我的信封:
乌班图11.10
Java版本“1.7.0y45”
Java(TM)SE运行时环境(构建1.7.0y45-B18)
Java Hotspot(TM)64位服务器虚拟机(构建24.45-b08,混合模式)
这里是我的配置文件,它允许我访问其他的API:
[...]
<graph>
<graph-name>arangodb</graph-name>
<graph-type>com.tinkerpop.blueprints.impls.arangodb.utils.ArangoDBConfiguration</graph-type>
<properties>
<graph-name>arangodb-rexster-graph</graph-name>
<vertex-name>arangodb-rexster-graph-vertices</vertex-name>
<edge-name>arangodb-rexster-graph-edges</edge-name>
<host>localhost</host>
<port>8529</port>
</properties>
</graph>
[...]
提前感谢您的任何想法/帮助:)
最佳答案
我没有使用arangodb蓝图实现,但您肯定有一些版本控制问题导致了这个问题。根据pom,看起来1.0.4-snapshot与tinkerpop 2.3.0一起工作。我将首先确保您使用Gremlin/Rexster 2.3.0作为解决此问题的第一步。作为第二步,确保雷克斯特是正确的服务之前,尝试灯泡。换句话说,通过rexster的Gremlin Extension执行一些脚本并验证结果将是一个很好的开端,可以确保灯泡在尝试通过python连接时工作良好。