这也在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?
答案 0 :(得分:1)
您不需要服务器扩展,只需要内核扩展,
所以 不需要此配置 * ,这仅适用于服务器/ REST扩展:
org.neo4j.server.thirdparty_jaxrs_classes=org.neo4j.extensions.events=/db/events
只需将您的jar放在plugins
目录中,并确保您拥有正确的META-INF / services / org.neo4j .... KernelExtension文件包装在jar中,并且您的类的完全限定名称为含量