我正在尝试找到一些示例或演示“如何将OGM与不受管理的扩展集成”,但找不到任何好的示例。
我尝试将restapi用作非托管扩展,并且可以单独使用它,但OGM具有智能对象映射功能,可以通过Session
来实现,而Session
是从
SessionFactory
。
private final static SessionFactory sessionFactory = new SessionFactory("some.domain");
sessionFactory .openSession();
现在如何将OGM与Unmanaged Extension集成在一起?
有人可以帮我吗?
编辑1
编辑2
下面是我们编写的代码
import org.neo4j.ogm.drivers.embedded.extension.OgmPluginInitializer;
public class MyApplicationPluginInitializer extends OgmPluginInitializer {
public MyApplicationPluginInitializer(String packages) {
super(packages);
}
}
TopologyExtController类
@Path("/")
public class TopologyExtController {
@javax.ws.rs.core.Context
public org.neo4j.ogm.session.Session session;
public TopologyExtController( ) {
}
@POST
@Path("/uiv/topology")
public Response getTopology(TopologyDescription topology, @javax.ws.rs.core.Context HttpHeaders headers) {
try{
ObjectMapper mapper = new ObjectMapper();
Map convertValue = mapper.convertValue(topology, Map.class);
Map<String, Object> map = new HashMap<>();
map.put("topology", convertValue);
//OGM session used execute the procedure and return the mapped result to end user.
Result query = session.query("call uiv.traversal($topology)",map);
Iterator<Map<String, Object>> iterator = query.iterator();
if (iterator.hasNext()) {
Map<String, Object> next = iterator.next();
Object object = next.get("rootNodes");
return Response.ok(object).status(200).build();
}
}catch (Exception e)
{
e.printStackTrace();
}
return Response.ok("Something went wrong").status(400).build();
}
}
META-INF条目 \ META-INF \ services \ org.neo4j.server.plugins.PluginLifecycle
- framework.traversal.ext.config.MyApplicationPluginInitializer
但是我们得到的错误
11月30日15:17:27 surerest2 neo4j:2018-11-30 09:47:27.611 + 0000错误 资源中检测到以下错误和警告 和/或提供程序类:11月30日15:17:27 surerest2 neo4j:严重: 缺少字段依赖性:public org.neo4j.ogm.session.Session framework.traversal.ext.ogm.controller.TopologyExtController.session 11月30日15:17:27 surerest2 neo4j:2018-11-30 09:47:27.612 + 0000警告 无法使用Nov 30 15:17:27 surerest2 neo4j: com.sun.jersey.spi.inject.Errors $ ErrorMessagesException 11月30日 15:17:27 surerest2 neo4j:在 com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) Nov 30 15:17:27 surerest2 neo4j:at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)11月30日 15:17:27 surerest2 neo4j:在 com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199) Nov 30 15:17:27 surerest2 neo4j:at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795) Nov 30 15:17:27 surerest2 neo4j:at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790) Nov 30 15:17:27 surerest2 neo4j:at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:509) Nov 30 15:17:27 surerest2 neo4j:at com.sun.jersey.spi.container.servlet.ServletContainer $ InternalWebComponent.initiate(ServletContainer.java:339) Nov 30 15:17:27 surerest2 neo4j:at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) Nov 30 15:17:27 surerest2 neo4j:at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) Nov 30 15:17:27 surerest2 neo4j:at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394) Nov 30 15:17:27 surerest2 neo4j:at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577) Nov 30 15:17:27 surerest2 neo4j:at javax.servlet.GenericServlet.init(GenericServlet.java:244)11月30日 15:17:27 surerest2 neo4j:在 org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:665) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:423) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:760) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:348) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:785) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:133) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:115) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:133) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.server.Server.start(Server.java:418)11月30日15:17:27 surerest2 neo4j:在 org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:107) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113) Nov 30 15:17:27 surerest2 neo4j:at org.eclipse.jetty.server.Server.doStart(Server.java:385)11月30日 15:17:27 surerest2 neo4j:在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) Nov 30 15:17:27 surerest2 neo4j:at org.neo4j.server.web.Jetty9WebServer.startJetty(Jetty9WebServer.java:320) Nov 30 15:17:27 surerest2 neo4j:at org.neo4j.server.web.Jetty9WebServer.start(Jetty9WebServer.java:152) Nov 30 15:17:27 surerest2 neo4j:at org.neo4j.server.AbstractNeoServer.startWebServer(AbstractNeoServer.java:321) Nov 30 15:17:27 surerest2 neo4j:at org.neo4j.server.AbstractNeoServer.access $ 700(AbstractNeoServer.java:102) Nov 30 15:17:27 surerest2 neo4j:at org.neo4j.server.AbstractNeoServer $ ServerComponentsLifecycleAdapter.start(AbstractNeoServer.java:527) Nov 30 15:17:27 surerest2 neo4j:at org.neo4j.kernel.lifecycle.LifeSupport $ LifecycleInstance.start(LifeSupport.java:445) Nov 30 15:17:27 surerest2 neo4j:at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:107)十一月 30 15:17:27 surerest2 neo4j:at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:212) Nov 30 15:17:27 surerest2 neo4j:at org.neo4j.server.ServerBootstrapper.start(ServerBootstrapper.java:111) Nov 30 15:17:27 surerest2 neo4j:at org.neo4j.server.ServerBootstrapper.start(ServerBootstrapper.java:79) Nov 30 15:17:27 surerest2 neo4j:at com.neo4j.server.enterprise.CommercialEntryPoint.main(CommercialEntryPoint.java:22) 11月30日15:17:27 surerest2 neo4j:2018-11-30 09:47:27.639 + 0000错误 无法在127.0.0.1:7474上启动Neo4j: org.neo4j.server.web.NeoServletContainer-737fd68 @ 2dde7c07 == org.neo4j.server.web.NeoServletContainer,jsp = null,order = -1,inst = false 11月30日15:17:27 surerest2 neo4j:2018-11 -30 09:47:27.658 + 0000信息 停止... Nov 30 15:17:28 surerest2 neo4j:2018-11-30 09:47:28.279 + 0000 INFO已停止。 11月30日15:17:28 surerest2 neo4j: 2018-11-30 09:47:28.281 + 0000错误无法启动Neo4j:正在启动 Neo4j失败:组件 'org.neo4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter@6c49db66' 已成功初始化,但无法启动。请看 附加原因异常为“ null”。启动Neo4j失败:组件 'org.neo4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter@6c49db66' 已成功初始化,但无法启动。请看 附加原因异常为“ null”。 11月30日15:17:28 surerest2 neo4j: org.neo4j.server.ServerStartupException:启动Neo4j失败: 零件 'org.neo4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter@6c49db66' 已成功初始化,但无法启动。请看 附加原因异常为“ null”。 Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.server.exception.ServerStartupErrors.translateToServerStartupError(ServerStartupErrors.java:68) Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:220) Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.server.ServerBootstrapper.start(ServerBootstrapper.java:111) Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.server.ServerBootstrapper.start(ServerBootstrapper.java:79) Nov 30 15:17:28 surerest2 neo4j:在 com.neo4j.server.enterprise.CommercialEntryPoint.main(CommercialEntryPoint.java:22) Nov 30 15:17:28 surerest2 neo4j:由引起: org.neo4j.kernel.lifecycle.LifecycleException:组件 'org.neo4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter@6c49db66' 已成功初始化,但无法启动。请看 附加原因异常为“ null”。 Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.kernel.lifecycle.LifeSupport $ LifecycleInstance.start(LifeSupport.java:466) Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:107)十一月 30 15:17:28 surerest2 neo4j:在 org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:212) Nov 30 15:17:28 surerest2 neo4j:... 3另外Nov 30 15:17:28 surerest2 neo4j:原因:javax.servlet.ServletException: org.neo4j.server.web.NeoServletContainer-737fd68 @ 2dde7c07 == org.neo4j.server.web.NeoServletContainer,jsp = null,order = -1,inst = false 11月30日15:17:28 surerest2 neo4j:at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:686) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:423) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:760) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:348) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:785) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:133) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:115) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:133) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.server.Server.start(Server.java:418)11月30日15:17:28 surerest2 neo4j:在 org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:107) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113) Nov 30 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.server.Server.doStart(Server.java:385)11月30日 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.server.web.Jetty9WebServer.startJetty(Jetty9WebServer.java:320) Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.server.web.Jetty9WebServer.start(Jetty9WebServer.java:152) Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.server.AbstractNeoServer.startWebServer(AbstractNeoServer.java:321) Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.server.AbstractNeoServer.access $ 700(AbstractNeoServer.java:102) Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.server.AbstractNeoServer $ ServerComponentsLifecycleAdapter.start(AbstractNeoServer.java:527) Nov 30 15:17:28 surerest2 neo4j:在 org.neo4j.kernel.lifecycle.LifeSupport $ LifecycleInstance.start(LifeSupport.java:445) Nov 30 15:17:28 surerest2 neo4j:...还有5个Nov 30 15:17:28 surerest2 neo4j:原因: com.sun.jersey.spi.inject.Errors $ ErrorMessagesException 11月30日 15:17:28 surerest2 neo4j:在 com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) Nov 30 15:17:28 surerest2 neo4j:在 com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)11月30日 15:17:28 surerest2 neo4j:在 com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199) Nov 30 15:17:28 surerest2 neo4j:在 com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795) Nov 30 15:17:28 surerest2 neo4j:在 com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790) Nov 30 15:17:28 surerest2 neo4j:在 com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:509) Nov 30 15:17:28 surerest2 neo4j:在 com.sun.jersey.spi.container.servlet.ServletContainer $ InternalWebComponent.initiate(ServletContainer.java:339) Nov 30 15:17:28 surerest2 neo4j:在 com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) Nov 30 15:17:28 surerest2 neo4j:在 com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) Nov 30 15:17:28 surerest2 neo4j:在 com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394) Nov 30 15:17:28 surerest2 neo4j:在 com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577) Nov 30 15:17:28 surerest2 neo4j:在 javax.servlet.GenericServlet.init(GenericServlet.java:244)11月30日 15:17:28 surerest2 neo4j:在 org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:665) Nov 30 15:17:28 surerest2 neo4j:...还有27个
答案 0 :(得分:1)
通常这是不可能的。 Neo4j-OGM使用Cypher抽象了所有传输模式(Bolt,HTTP,嵌入式)。
...但是,如果您的非托管扩展完全与业务逻辑分离(例如,没有包含Neo4j-OGM调用的事务边界),则可以直接通过(Neo4j-OGM)HTTP驱动程序创建调用:>
HttpDriver httpDriver = (HttpDriver) sessionFactory.getDriver();
CloseableHttpResponse response = httpDriver.executeHttpRequest(new HttpGet("http://somewhere"));
response.getEntity().getContent()....
请注意,这只是使用原始连接的一种手段。
编辑(添加有关运行内部 Neo4j的信息)
如in the documentation所述,您需要像以前一样提供自己的OgmPluginInitializer
。但是您的实现/构造函数确实希望将软件包提供到某个地方。加载该扩展程序的服务扩展程序不了解您的包结构,因此初始化程序类应该看起来有些东西。像
public class MyApplicationPluginInitializer extends OgmPluginInitializer {
public MyApplicationPluginInitializer() {
super("Your package to scan");
}
}
作为警告:Neo4j 3.5中不推荐使用用于提供此功能的API。并且可以在即将发布的版本中删除。因此,根据更改,此功能可能还会进行重构或删除。