Как интегрировать neo4j-ogm с неуправляемым расширением? - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь найти пример или демонстрацию "Как интегрировать OGM с неуправляемым расширением", но не могу найти ни одного хорошего примера.

Я пытался использовать restapi в качестве неуправляемого расширения и по отдельности его нормально работающийно OGM имеет возможность умного сопоставления объектов и может быть достигнуто с помощью Session, а Session получается из SessionFactory.

     private final static SessionFactory sessionFactory = new SessionFactory("some.domain");
     sessionFactory .openSession();

Теперь, как OGM можно использовать для интеграции с Unmanaged Extension?

Может кто-нибудь, пожалуйста, помогите мне за то же самое.

Редактировать 1

Пожалуйста, проверьте ниже снимок экрана enter image description here

РЕДАКТИРОВАТЬ 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

Но мы получаем ошибку

30 ноября 15:17:27 surerest2 neo4j: 2018-11-30 09: 47: 27.611 + 0000 ОШИБКА Следующие ошибки и предупреждения были обнаружены с помощью классов ресурсов и / или поставщиков: Nov 30 15:17:27 surerest2 neo4j: SEVERE: отсутствует зависимость для поля: public org.neo4j.ogm.session.Session framework.traversal.ext.ogm.controller.TopologyExtController.session 30 ноября 15:17:27 surerest2 neo4j:2018-11-30 09: 47: 27.612 + 0000 ПРЕДУПРЕЖДЕНИЕ недоступно 30 ноября 15:17:27 surerest2 neo4j: com.sun.jersey.spi.inject.Errors $ ErrorMessagesException 30 ноября 15:17:27 surerest2 neo4j: at com.sun.jersey.spi.inject.Errors.processErrorMessages (Errors.java:170) 30 ноября 15:17:27 surerest2 neo4j: в com.sun.jersey.spi.inject.Errors.postProcess (Errors.java:136) ноябрь30 15:17:27 surerest2 neo4j: на com.sun.jersey.spi.inject.Errors.processWithErrors (Errors.java:199) 30 ноября 15:17:27 surerest2 neo4j: на com.sun.jersey.server.impl.application.WebApplicationImpl.initiate (WebApplicationImpl.java:795) 30 ноября 15:17:27 surerest2 neo4j: в com.sun.jersey.server.impl.application.WebApplicationImpl.initiate (WebApplicationImpl.java:790) 30 ноября 15:17:27 surerest2 neo4j: на com.sun.jersey.spi.container.servlet.ServletContainer.initiate (ServletContainer.java:509) 30 ноября 15:17:27 surerest2 neo4j: at com.sun.jersey.spi.container.servlet.ServletContainer $ InternalWebComponent.initiate (ServletContainer.java:339) 30 ноября 15:17: 27 surerest2 neo4j: на com.sun.jersey.spi.container.servlet.WebComponent.load (WebComponent.java:605) 30 ноября 15:17:27 surerest2 neo4j: на com.sun.jersey.spi.container.servlet.WebComponent.init (WebComponent.java:207) 30 ноября 15:17:27 surerest2 neo4j: на com.sun.jersey.spi.container.servlet.ServletContainer.init (ServletContainer.java:394) 30 ноября 15:17:27 surerest2 neo4j: в com.sun.jersey.spi.container.servlet.ServletContainer.init (ServletContainer.java:577) 30 ноября 15:17:27 surerest2 neo4j: в javax.servlet.GenericServlet.init (GenericServlet.j:244) 30 ноября 15:17:27 surerest2 neo4j: в org.eclipse.jetty.servlet.ServletHolder.initServlet (ServletHolder.java:665) 30 ноября 15:17:27 surerest2 neo4j: в org.eclipse.jetty.servlet.ServletHolder.initialize (ServletHolder.java:423) 30 ноября, 15:17:27 увереностальные2) 30 ноября 15:17:27 surerest2 neo4j: в org.eclipse.jetty.server.handler.ContextHandler.doStart (ContextHandler.java:785) 30 ноября 15:17:27 surerest2 neo4j: в org.eclipse.jetty.servlet.ServletContextHandler.doStart (ServletContextHandler.java:261) 30 ноября 15:17:27 surerest2 neo4j: в org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:68) 30 ноября 15:17:27 уверенneo4j: at org.eclipse.jetty.util.component.ContainerLifeCycle.start (ContainerLifeCycle.java:133) 30 ноября 15:17:27 surerest2 neo4j: at org.eclipse.jetty.util.component.ContainerLifeCycle.doStarty.Java: 115)30 ноября 15:17:27 surerest2 neo4j: в org.eclipse.jetty.server.handler.AbstractHandler.doStart (AbstractHandler.java:113) 30 ноября 15:17:27 surerest2 neo4j: в org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:68) 30 ноября 15:17:27 surerest2 neo4j: at org.eclipse.jetty.util.component.ContainerLifeCycle.start (ContainerLifeCycle.java:133) 30 ноября 15:17:27surerest2 neo4j: at org.eclipse.jetty.server.Server.start (Server.java:418) 30 ноября 15:17:27 surerest2 neo4j: at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart (ContainerLifeCycle.java): 107) 30 ноября 15:17:27 surerest2 neo4j: в org.eclipse.jetty.server.handler.AbstractHandler.doStart (AbstractHandler.java:113) 30 ноября 15:17:27 surerest2 neo4j: в org.eclipse.jetty.server.Server.doStart (Server.java:385) 30 ноября 15:17:27 surerest2 neo4j: в org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:68) 30 ноября 15:17:27 surerest2 neo4j: atg.neo4j.server.web.Jetty9WebServer.startJetty (Jetty9WebServer.java:320) 30 ноября 15:17:27 surerest2 neo4j: в org.neo4j.server.web.Jetty9WebServer.start (Jetty9WebServer.java:152) 30 ноября 15:17:27 surerest2 neo4j: в org.neo4j.server.AbstractNeoServer.startWebServer (AbstractNeoServer.java:321) 30 ноября 15:17:27 surerest2 neo4j: в org.neo4j.server.AbstractNeoServer.access $ 700 (AbstractNeoServer.java:102) ноя 30, 15:17:4 уверенв org.neo4j.server.AbstractNeoServer $ ServerComponentsLifecycleAdapter.start (AbstractNeoServer.java:527) 30 ноября 15:17:27 surerest2 neo4j: в org.neo4j.kernel.lifecycle.LifeSupport $ LifecycleInstance.ppart30 ноября 15:17:27 surerest2 neo4j: в org.neo4j.kernel.lifecycle.LifeSupport.start (LifeSupport.java:107) 30 ноября 15:17:27 surerest2 neo4j: в org.neo4j.server.AbstractNeoServer.start (AbstractNeoServer.java:212) 30 ноября 15:17:27 surerest2 neo4j: в org.neo4j.server.ServerBootstrapper.start (ServerBootstrapper.java:111) 30 ноября 15:17:27 surerest2 neo4j: в org.neo4j.server.ServerBootstrapper.start(ServerBootstrapper.java:79) 30 ноября 15:17:27 surerest2 neo4j: at com.neo4j.server.enterprise.CommercialEntryPoint.main (CommercialEntryPoint.java:22) 30 ноября 15:17:27 surerest2 neo4j: 2018-11-30 09: 47: 27.639 + 0000 ОШИБКА Не удалось запустить Neo4j 127.0.0.1:7474: org.neo4j.server.web.NeoServletContainer-737fd68 @ 2dde7c07 == org.neo4j.server.web.NeoServletContainer, jeoServletContainer, jeo= -1, inst = false 30 ноября 15:17:27 surerest2 neo4j: 2018-11-30 09: 47: 27.658 + 0000 ИНФОРМАЦИЯ Остановка ... 30 ноября 15:17:28 surerest2 neo4j: 2018-11-30 09: 47: 28.279 + 0000 INFO Остановлено.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' был успешно инициализирован, но запустить не удалось.Пожалуйста, смотрите прикрепленную причину исключения «ноль».30 ноября 15:17:28 surerest2 neo4j: org.neo4j.server.ServerStartupException: Запуск Neo4j не выполнен: компонент 'org.neo4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter@6c49db66' был успешно инициализирован, но запустить не удалось.Пожалуйста, смотрите прикрепленную причину исключения «ноль».30 ноября 15:17:28 surerest2 neo4j: в org.neo4j.server.exception.ServerStartupErrors.translateToServerStartupError (ServerStartupErrors.java:68) 30 ноября 15:17:28 surerest2 neo4j: в org.neo4j.serst.Server.AbstractAbstractNeoServer.java:220) 30 ноября 15:17:28 surerest2 neo4j: в org.neo4j.server.ServerBootstrapper.start (ServerBootstrapper.java:111) 30 ноября 15:17:28 surerest2 neo4j: в org.neo4j.server.ServerBootstrapper.start (ServerBootstrapper.java:79) 30 ноября 15:17:28 surerest2 neo4j: вcom.neo4j.server.enterprise.CommercialEntryPoint.main (CommercialEntryPoint.java:22) 30 ноября 15:17:28 surerest2 neo4j: вызвано: org.neo4j.kernel.lifecycle.LifecycleException: компонент 'org.neo4j.server.AbstractNeoServer$ ServerComponentsLifecycleAdapter @ 6c49db66 'успешно инициализирован, но не запускается.Пожалуйста, смотрите прикрепленную причину исключения «ноль».30 ноября 15:17:28 surerest2 neo4j: в org.neo4j.kernel.lifecycle.LifeSupport $ LifecycleInstance.start (LifeSupport.java:466) 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) 30 ноября 15:17:28 surerest2 neo4j: ...Еще 3 ноября 30 15:17:28 surerest2 neo4j: вызвано: javax.servlet.ServletException: org.neo4j.server.web.NeoServletContainer-737fd68 @ 2dde7c07 == org.neo4j.server.web.NeoServletContainorder = -1, inst = false 30 ноября 15:17:28 surerest2 neo4j: at org.eclipse.jetty.servlet.ServletHolder.initServlet (ServletHolder.java:686) 30 ноября 15:17:28 surerest2 neo4j: в орг.eclipse.jetty.servlet.ServletHolder.initialize (ServletHolder.java:423) 30 ноября 15:17:28 surerest2 neo4j: в org.eclipse.jetty.servlet.ServletHandler.initialize (ServletHandler.java:760) 30 ноября: 28 surerest2 neo4j: в org.eclipse.jetty.servlet.ServletContextHandler.startContext (ServletContextHandler.java:348) 30 ноября 15:17:28 surerest2 neo4j: at org.eclipse.jetty.server.handler.ContextHandler.doStart (ContextHandler.java:785) 30 ноября 15:17:28 surerest2 neo4j: вorg.eclipse.jetty.servlet.ServletContextHandler.doStart (ServletContextHandler.java:261) 30 ноября 15:17:28 surerest2 neo4j: в org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeC)30 15:17:28 surerest2 neo4j: в org.eclipse.jetty.util.component.ContainerLifeCycle.start (ContainerLifeCycle.java:133) 30 ноября 15:17:28 surerest2 neo4j: в org.eclipse.jetty.util.component.ContainerLifeCycle.doStart (ContainerLifeCycle.java:115) 30 ноября 15:17:28 surerest2 neo4j: в org.eclipse.jetty.server.handler.AbstractHandler.doStart (AbstractHandler.java:113) 30 ноября 15:17:28 surerest2neo4j: at org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:68) 30 ноября 15:17:28 surerest2 neo4j: at org.eclipse.jetty.util.component.ContainerLifeCycle.start (ContainerLifecle.java:133) 30 ноября 15:17:28 surerest2 neo4j: в org.eclipse.jetty.server.Server.start (Server.java:418) 30 ноября 15:17:28 surerest2 neo4j: в org.eclipse.jetty.util.component.ContainerLifeCycle.doStart (ContainerLifeCycle.java:107) 30 ноября 15:17:28 surerest2 neo4j: в org.eclipse.jetty.server.handler.AbstractHandler.doStart (AbstractHandler.java:113) 30 ноября 15: 17: 28 surerest2 neo4j: в org.eclipse.jetty.server.Server.doStart (Server.java:385) 30 ноября 15:17:28 surerest2 neo4j: в org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 30 ноября 15:17:28 surerest2 neo4j: at org.neo4j.server.web.Jetty9WebServer.startJetty (Jetty9WebServer.java:320) 30 ноября 15:17:28 surerest2 neo4j: в орг.нео4j.server.web.Jetty9WebServer.start (Jetty9WebServer.java:152) 30 ноября 15:17:28 surerest2 neo4j: в org.neo4j.server.AbstractNeoServer.startWebServer (AbstractNeoServer.java:321) уверен, 30 ноябряneo4j: в org.neo4j.server.AbstractNeoServer.access $ 700 (AbstractNeoServer.java:102)30 ноября 15:17:28 surerest2 neo4j: в org.neo4j.server.AbstractNeoServer $ ServerComponentsLifecycleAdapter.start (AbstractNeoServer.java:527) 30 ноября 15:17:28 surerest2 neo4j: в org.neo4j.kernel.lifeppu $ $LifecycleInstance.start (LifeSupport.java:445) 30 ноября 15:17:28 surerest2 neo4j: ... еще 5 ноября 30 15:17:28 surerest2 neo4j: вызвано: com.sun.jersey.spi.inject.Errors $ErrorMessagesException 30 ноября 15:17:28 surerest2 neo4j: вcom.sun.jersey.spi.inject.Errors.processErrorMessages (Errors.java:170) 30 ноября 15:17:28 surerest2 neo4j: в com.sun.jersey.spi.inject.Errors.postProcess (Errors.java:136) 30 ноября 15:17:28 surerest2 neo4j: на com.sun.jersey.spi.inject.Errors.processWithErrors (Errors.java:199) 30 ноября 15:17:28 surerest2 neo4j: на com.sun.jersey.server.impl.application.WebApplicationImpl.initiate (WebApplicationImpl.java:795) 30 ноября 15:17:28 surerest2 neo4j: в com.sun.jersey.server.impl.application.WebApplicationImpl.initiate (WebApplicationImpl.java:790) 30 ноября15:17:28 surerest2 neo4j: на com.sun.jersey.spi.container.servlet.ServletContainer.initiate (ServletContainer.java:509) 30 ноября 15:17:28 surerest2 neo4j: на com.sun.jersey.spi.container.servlet.ServletContainer $ InternalWebComponent.initiate (ServletContainer.java:339) 30 ноября 15:17:28 surerest2 neo4j: в com.sun.jersey.spi.container.servlet.WebComponent.load (WebComponent.java:605) ноябрь30 15:17:28 surerest2 neo4j: на com.sun.jersey.spi.container.servlet.WebComponent.init (WebComponent.java:207) 30 ноября 15:17:28 surerest2 neo4j: на com.sun.jersey.spi.container.servlet.ServletContainer.init (ServletContainer.java:394) 30 ноября 15:17:28surerest2 neo4j: на com.sun.jersey.spi.container.servlet.ServletContainer.init (ServletContainer.java:577) 30 ноября 15:17:28 surerest2 neo4j: на javax.servlet.GenericServlet.init (GenericServlet.java:24) 30 ноября 15:17:28 surerest2 neo4j: at org.eclipse.jetty.servlet.ServletHolder.initServlet (ServletHolder.java:665) 30 ноября 15:17:28 surerest2 neo4j: ... еще 27

1 Ответ

0 голосов
/ 30 ноября 2018

Это вообще невозможно.Neo4j-OGM абстрагирует все виды транспорта (Bolt, HTTP, внедренный) с помощью Cypher.

... но если ваше неуправляемое расширение работает полностью отдельно от вашей бизнес-логики (например, нет границ транзакций, которые также содержат Neo4j-OGMзвонки) вы можете создать звонок напрямую через (Neo4j-OGM) HTTP-драйвер:

HttpDriver httpDriver = (HttpDriver) sessionFactory.getDriver();
CloseableHttpResponse response = httpDriver.executeHttpRequest(new HttpGet("http://somewhere"));
response.getEntity().getContent()....

обратите внимание, что это просто хак для использования необработанного соединения.

Редактировать (добавьте информацию для запуска внутри Neo4j):

Как описано в документации , вам необходимо предоставить свой OgmPluginInitializer, как вы уже это сделали.Но ваша реализация / конструктор ожидает, что пакет будет предоставлен где-то.Расширение службы, которое загружает расширение, не знает о структуре вашего пакета, поэтому класс инициализатора должен выглядеть так:как

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

В качестве предупреждения: API, используемый для предоставления этой функции, устарел в Neo4j 3.5.и может быть удален в следующих версиях.Как следствие, эта функция может также получить рефакторинг или удаление в зависимости от изменений.

...