非托管扩展TransactionEventHandler Neo4j

时间:2014-01-21 13:58:54

标签: java neo4j jax-rs

这也在https://groups.google.com/forum/#!forum/neo4j

我正在尝试创建一个非托管扩展,当节点变得有趣时(例如,创建新类型的关系)将消息放入队列中

我相信我可以使用TransactionEventHandler执行此操作,因此我创建了一个扩展KernelExtensionFactory的类,该类具有返回LifeCycle的方法(newKernelExtension)。然后,我的LIfeCycleAdapter在start方法中注册TransactionEventHandler。在我的实现TransactionEventHandler的类中,我有afterCommit,它基本上只是为了测试而写入文本文件。

在conf / neo4j-server.properties中,我提出了以下内容 -

org.neo4j.server.thirdparty_jaxrs_classes=org.neo4j.extensions.events=/db/events

但服务器无法启动。在console.log中我得到了这个 -

21:10:57.446 [main] WARN  /db/events - unavailable
   com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
   at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99) ~[jersey-server-1.9.j

现在,在我的代码中,我没有声明任何路径,因为我不需要REST接口,我只是希望它在服务器启动时启动,然后监听事务事件然后对事务执行某些操作数据(例如写入文件或消息队列)

所以我的问题是 -

我需要申报路径吗?非托管扩展是否必须是jaxrs?

1 个答案:

答案 0 :(得分:1)

您不需要服务器扩展,只需要内核扩展,

所以 不需要此配置 * ,这仅适用于服务器/ REST扩展:

org.neo4j.server.thirdparty_jaxrs_classes=org.neo4j.extensions.events=/db/events

只需将您的jar放在plugins目录中,并确保您拥有正确的META-INF / services / org.neo4j .... KernelExtension文件包装在jar中,并且您的类的完全限定名称为含量