- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个要求:
对于第 1 步,我实现了 TransactionEventHandler 并将其在服务器插件中注册为
public class MyPlugin extends ServerPlugin{
@Name( "track_change" )
@Description( "Track Neo4j changes")
@PluginTarget( GraphDatabaseService.class )
public void registerEventHandler( @Source GraphDatabaseService graphDb ){
graphDb.registerTransactionEventHandler(new MyTransactionEventHandler());
}
}
这工作得很好。现在,对于步骤 2,我想在 MyTransactionEventHandler 中编写嵌入代码:
private void saveStatus(String status) {
Transaction tx = graphDb.beginTx();
try
{
Label label = DynamicLabel.label("Status");
Node requestNode = graphDb.createNode(label);
requestNode.setProperty(STATUS, status);
tx.success();
}catch(Exception e){
tx.failure();
logger.severe(e.getMessage());
}finally{
tx.close();
}
}
为此,我需要在处理程序中使用 GraphDatabaseService 的实例。因此,我应该使用 GraphDatabaseFactory 创建一个新的嵌入式实例,还是通过将其传递给处理程序来使用插件中的实例。 Neo4j 文档指出:
The GraphDatabaseService instance can be shared among multiple threads. Note however that you can’t create multiple instances pointing to the same database.
我尝试通过将插件传递给 MyTransactionEventHandler 的构造函数来使用插件中的一个,但有时这会导致创建节点时出错。
java.lang.IllegalStateException: This transaction has already been completed.
这被理解为异步操作可能需要更长的时间。那么在这种情况下创建 GraphDatabaseService 的另一个实例是否可以?如果没有,那么推荐的方法是什么。
感谢任何帮助。
最佳答案
异常到底出现在哪个 tx-event-handler 方法中?请分享完整的方法/代码。而且你的 tx 上没有 close() 。
此外,您应该在生命周期中注册 tx 处理程序,而不是在 http 方法调用中。
您不会创建 GraphDatabaseService 的新实例,它只是传递给您。
关于java - Neo4j 插件中 GraphDatabaseService 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31645994/
我们在 RHEL (jdk 1.7.. 51) 上使用 Neo4j2.0.1 - 我们在一个同步线程上调用 GraphDatabaseService.shutDown(),并且此方法永远不会返回或引发
我有一个要求: 跟踪 neo4j 更改并对更改的数据执行异步操作。 将异步过程的结果存储回单独节点中的 Neo。 对于第 1 步,我实现了 TransactionEventHandler 并将其在服务
我正在尝试运行示例 neo4j python 应用程序,但收到此错误消息。 graph_db = neo4j.GraphDatabaseService(url)AttributeError: 'mod
我正在试用 neo4j 遍历 api。所有示例在线使用 GraphDatabaseService实例之后使用它的 traversalDescription() 来定义遍历模式。 但是在线示例 ( li
我在编写此代码时是neo4j的新手,但出现以下错误: >>> from py2neo import neo4j >>> graph_DB = neo4j.GraphDatabaseService ("
我正在学习使用 neo4j ,但对它的用法有点困惑。当我添加节点和关系时,我可以这样做: GraphDatabaseService graphDb = new EmbeddedGraphDatabas
最近几天我安装了 Python 2.7.3 和 Neo4J 社区版 1.8.M01。我设法使嵌入式 python 绑定(bind)正常工作,但由于我需要 py2neo REST 绑定(bind),所以
我正在编写一些单元测试,并希望将 TimeTree 与 Spring 存储库一起使用,以自动将事件节点附加到时间树。类似于 this问题,但我使用的是 boot 2.0 和 SDN5。我认为我的主要问
我是一名优秀的程序员,十分优秀!