非托管扩展TransactionEventHandler Neo4j

问题描述 投票:1回答:1

这也是在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?

java neo4j jax-rs
1个回答
1
投票

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

所以你不需要这个配置*,它只用于服务器/ REST扩展:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.