繁体   English   中英

如何将neo4j-ogm与非托管扩展集成在一起?

[英]How to integrate neo4j-ogm with unmanaged extension?

我正在尝试找到一些示例或演示“如何将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:严重:缺少字段依赖性:公共org.neo4j.ogm.session.Session framework.traversal.ext.ogm.controller.TopologyExtController.session Nov 30 15:17:27 surerest2 neo4j:2018-11-30 09:47:27.612+ 0000 WARN不可用Nov 30 15:17:27 surerest2 neo4j:com.sun.jersey.spi.inject.Errors $ ErrorMessagesException Nov 30 15:17:27 surerest2 neo4j:在com.sun.jersey.spi.inject.Errors.processErrorMessages (Errors.java:170)Nov 30 15:17:27 surerest2 neo4j:在com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)Nov 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.ser ver.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790)十一月30 15:17:27 surerest2 neo4j:at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:509)十一月30 15:17:27 surerest2 neo4j:在com.sun.jersey.spi.container.servlet.ServletContainer $ InternalWebComponent.initiate(ServletContainer.java:339)Nov 30 15:17:27 surerest2 neo4j:在com.sun.jersey .spi.container.servlet.WebComponent.load(WebComponent.java:605)11月30日15:17:27 surerest2 neo4j:在com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) Nov 30 15:17:27 surerest2 neo4j:位于com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394)Nov 30 15:17:27 surerest2 neo4j:位于com.sun.jersey。 spi.container.servlet.ServletContainer.init(ServletContainer.java:577)11月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.initSe rvlet(ServletHolder.java:665)Nov 30 15:17:27 surerest2 neo4j:在org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:423)Nov 30 15:17:27 surerest2 neo4j:在组织。 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:在org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:785)11月30日15:17:27 surerest2 neo4j:在org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler .java:261)Nov 30 15:17:27 surerest2 neo4j:在org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)Nov 30 15:17:27 surerest2 neo4j:在org.eclipse .jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:133)11月30日15:17:27 surerest2 neo4j:at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:115)11月30日1 5:17:27 surerest2 neo4j:位于org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)Nov 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.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:133)Nov 30 15:17:27 surerest2 neo4j :位于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:在org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)Nov 30 15:17:27 surerest2 neo4j:在org.eclipse.jetty.server .Server.doStart(Server.java:385)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:位于org.neo4j.server.web.Jetty9WebServer.startJetty(Jetty9WebServe r.java:320)11月30日15:17:27 surerest2 neo4j:在org.neo4j.server.web.Jetty9WebServer.start(Jetty9WebServer.java:152)11月30日15:17:27 surerest2 neo4j:在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:在org.neo4j.server.AbstractNeoServer $ ServerComponentsLifecycleAdapter.start(AbstractNeoServer.java:527)上Nov 30 15:17:27 surerest2 neo4j:在org.neo4j.kernel.lifecycle.LifeSupport $ LifecycleInstance.start(LifeSupport.java:445) Nov 30 15:17:27 surerest2 neo4j:在org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:107)Nov 30 15:17:27 surerest2 neo4j:在org.neo4j.server.AbstractNeoServer.start( AbstractNeoServer.java:212)Nov 30 15:17:27 surerest2 neo4j:在org.neo4j.server.ServerBootstrapper.start(ServerBootstrapper.java:111)Nov 30 15:17:27 surerest2 neo4j:在org.neo4j.server。 ServerBootstrapper.start(服务器B ootstrapper.java:79)Nov 30 15:17:27 surerest2 neo4j:at com.neo4j.server.enterprise.CommercialEntryPoint.main(CommercialEntryPoint.java:22)Nov 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信息正在停止... 11月30 15:17:28 surerest2 neo4j:2018-11-30 09: 47:28.279 + 0000信息已停止。 11月30日15:17:28 surerest2 neo4j:2018-11-30 09:47:28.281 + 0000错误无法启动Neo4j:启动Neo4j失败:组件'org.neo4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter@6c49db66'已成功初始化,但无法启动。 请查看附带的原因异常“空”。 启动Neo4j失败:组件'org.neo4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter@6c49db66'已成功初始化,但无法启动。 请查看附带的原因异常“空”。 11月30日15:17:28 surerest2 neo4j:org.neo4j.server.ServerStartupException:启动Neo4j失败:组件'org.neo4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter@6c49db66'已成功初始化,但无法启动。 请查看附带的原因异常“空”。 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'已成功初始化,但无法启动。 请查看附带的原因异常“空”。 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)Nov 30 15:17:28 surerest2 neo4j:at 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 Nov 30 15:17:28 surerest2 neo4j:在org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:686)Nov 30 15:17:28 surerest2 neo4j:在组织。 eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:423)11月30日15:17:28 surerest2 neo4j:在org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:760)11月30日15:17 :28 surerest2 neo4j:位于org.eclipse.jetty.servlet.ServletContextHandler.st artContext(ServletContextHandler.java:348)Nov 30 15:17:28 surerest2 neo4j:at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:785)Nov 30 15:17:28 surerest2 neo4j:at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261)11月30日15:17:28 surerest2 neo4j:at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)11月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:at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)Nov 30 15:17:28 surerest2 neo4j:at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)Nov 30 15:17:28 surerest2 neo4j:at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCy cle.java:133)Nov 30 15:17:28 surerest2 neo4j:在org.eclipse.jetty.server.Server.start(Server.java:418)Nov 30 15:17:28 surerest2 neo4j:在org.eclipse。 jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:107)11月30日15:17:28 surerest2 neo4j:在org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)11月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 Nov 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)Nov 30 15:17:28 surerest2 neo4j:at 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)Novres 15:17:28 sureres t2 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)11月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)11月30日15:17:28 surerest2 neo4j:com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577)11月30日15:17:28 surerest2 neo4j:at javax.servlet.GenericServlet.init(GenericServlet.java:244)Nov 30 15:17:28 surerest2 neo4j:at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:665)Nov 30 15 :17:28 surerest2 neo4j:...还有27个

通常这是不可能的。 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中运行的信息):

文档所述您需要像OgmPluginInitializer一样提供自己的OgmPluginInitializer 但是您的实现/构造函数确实希望将软件包提供到某个地方。 加载该扩展程序的服务扩展程序不了解您的包结构,因此初始化程序类应该看起来有些东西。 喜欢

public class MyApplicationPluginInitializer extends OgmPluginInitializer {
   public MyApplicationPluginInitializer() {   
          super("Your package to scan");
   }
}

警告:Neo4j 3.5中不推荐使用提供此功能的API。 并且可以在即将发布的版本中删除。 因此,根据更改,此功能可能还会进行重构或删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM