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

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

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

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

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

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

Изменить 1

Пожалуйста, проверьте скриншот нижевведите здесь описание изображения

ИЗМЕНИТЬ 2

Ниже приведен код, который мы написали

import org.neo4j.ogm.drivers.embedded.extension.OgmPluginInitializer;

public class MyApplicationPluginInitializer extends OgmPluginInitializer {


       public MyApplicationPluginInitializer(String packages) {   

              super(packages);

       }


}

Топология классаExtController

@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

Но ошибка, которую мы получаем

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


person Subodh Joshi    schedule 29.11.2018    source источник


Ответы (1)


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

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

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

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

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

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

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

Спасибо за ваш ответ, мне нужен сеанс OGM в моем неуправляемом внутреннем номере, возможно ли это?

person meistermeier    schedule 30.11.2018
comment
Использование его в неуправляемом расширении на стороне сервера — не лучшая идея. Если вы получите все зависимости в расширении, теоретически возможно передать GraphDatabaseService в экземпляр EmbeddedDriver, но вы потеряете все преимущества прямого доступа к базе данных и, самое главное, вам также придется перенести весь свой домен как библиотеку в расширение. - person Subodh Joshi; 30.11.2018
comment
Пожалуйста, посмотрите эту [ссылку](neo4j.com/docs/ogm-manual/ текущая/ссылка neo4j. com/docs/ogm-manual/current/reference/). Мы пробуем этот подход, но не можем заставить его работать? - person meistermeier; 30.11.2018
comment
OGM мы используем здесь для сопоставления объектов домена, потому что расширение ничего не знает о сопоставлении. - person Subodh Joshi; 30.11.2018
comment
Я добавил код, который мы пробовали, и исключение, которое мы получаем, нужна ваша помощь. Спасибо - person Subodh Joshi; 30.11.2018
comment
Разве проблема не связана с тем, что вы не передаете фактические пакеты в _1_? Пожалуйста, посмотрите документацию еще раз, там написано, что вы должны установить свои собственные пакеты в конструкторе. Расширение службы не знает, как создать инициализатор вашего плагина. - person Subodh Joshi; 30.11.2018
comment
Может быть, я что-то упустил из вашего комментария, но возможно ли, чтобы вы поделились кодом или примером. - person meistermeier; 30.11.2018
comment
Можете ли вы сказать мне, какую функцию вы собираетесь удалить OGM или неуправляемое расширение или OgmPluginInitializer? - person Subodh Joshi; 30.11.2018
comment
Глядя на эту документацию neo4j .com/docs/java-reference/current/extending-neo4j/ и проверки класса Neo4j, от которого зависит Neo4j-OGM, который устарел в версии 3.5, SessionFactory необходимо создать в конструкторе расширения вручную (пример в документах). - person Subodh Joshi; 30.11.2018
comment
Спасибо за вашу помощь, проверим это на этих выходных и зададим дополнительные вопросы, если есть сомнения. - person meistermeier; 30.11.2018
comment
30 ноября 15:17:27 surerest2 neo4j: 2018-11-30 09:47:27.611+0000 ОШИБКА Следующие ошибки и предупреждения были обнаружены с классами ресурсов и/или поставщиков: 30 ноября 15:17:27 Surerest2 neo4j: СЕРЬЕЗНАЯ : Отсутствует зависимость для поля: 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 WARN недоступен 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 est2 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: at 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.java:244 ) 30 ноя 15:17:27 с urerest2 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 surerest2 neo4j: в org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:760) 30 ноября 15:17:27 Surerest2 neo4j: в org.eclipse.jetty.servlet.ServletContextHandler .startContext(ServletContextHandler.java:348) 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 Surerest2 neo4j: at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:133) ) 30 ноября 15:17:27 surerest2 neo4j: на org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:115) 30 ноября 15:17:27 Surerest2 neo4j: на org.eclipse.jetty.server .handler.AbstractHandler.doStart(AbstractHandler.java:113) 30 ноября 15:17:27 Surerest2 neo4j: at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 30 ноября 15:17: 27 Surerest2 neo4j: на org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:133) 30 ноября 15:17:27 Surerest2 neo4j: на org.eclipse.jetty.server.Serve r.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 : at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113) 30 ноября 15:17:27 surerest2 neo4j: at 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: на org.neo4j.server.web .Jetty9WebServer.startJetty(Jetty9WebServer.java:320) 30 ноября 15:17:27 Surerest2 neo4j: at org.neo4j.server.web.Jetty9WebServer.start(Jetty9WebServer.java:152) 30 ноября 15:17:27 Surerest2 neo4j: at org.neo4j.server.AbstractNeoServer.startWebServer(AbstractNeoServer.java:321) 30 ноября 15:17:27 Surerest2 neo4j: at org.neo4j.server.AbstractNeoServer.access$700(AbstractNeoServer.java:102) 30 ноября 15:17 :27 surerest2 neo4j: на org.neo 4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter.start(AbstractNeoServer.java:527) 30 ноября 15:17:27 Surerest2 neo4j: at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:445) 30 ноября 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: в 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,jsp=null,order=-1,inst=false 30 ноября 15:17:27 surerest2 neo4j: 2018-11 -30 09:47:27.658+0000 INFO Остановка... 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» успешно инициализирован, но не удалось запустить. См. прилагаемое исключение причины "null". Не удалось запустить Neo4j: компонент «org.neo4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter@6c49db66» успешно инициализирован, но запустить его не удалось. См. прилагаемое исключение причины "null". 30 ноября, 15:17:28 surerest2 neo4j: org.neo4j.server.ServerStartupException: запуск Neo4j завершился неудачно: компонент 'org.neo4j.server.AbstractNeoServer$ServerComponentsLifecycleAdapter@6c49db66' был успешно инициализирован, но запустить его не удалось. См. прилагаемое исключение причины "null". 30 ноября 15:17:28 surerest2 neo4j: at org.neo4j.server.exception.ServerStartupErrors.translateToServerStartupError(ServerStartupErrors.java:68) 30 ноября 15:17:28 surerest2 neo4j: at org.neo4j.server.AbstractNeoServer.start( AbstractNeoServer.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: at 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' был успешно инициализирован, но запустить его не удалось. См. прилагаемое исключение причины "null". 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: at 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.NeoServletContainer,jsp=null, order=-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: at org. eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:423) 30 ноября 15:17:28 Surerest2 neo4j: at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:760) 30 ноября 15:17 :28 Surerest2 neo4j: в org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:348) 30 ноября 15:17:28 Surerest2 neo4j: в org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler .java:7 85) 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(AbstractLifeCycle.java:68) 30 ноября 15:17:28 Surerest2 neo4j: at 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 surerest2 neo4j: в org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 30 ноября 15:17:28 Surerest2 neo4j: в org.eclipse .jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:133) 30 ноября 15:17:28 Surerest2 neo4j: at org.eclipse.jetty.server.Server.start(Server.java:418) 30 ноября 15: 17:28 с urerest2 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: на org.neo4j.server.web. Jetty9WebServer.startJetty(Jetty9WebServer.java:320) 30 ноября 15:17:28 Surerest2 neo4j: в org.neo4j.server.web.Jetty9WebServer.start(Jetty9WebServer.java:152) 30 ноября 15:17:28 Surerest2 neo4j: в org.neo4j.server.AbstractNeoServer.startWebServer(AbstractNeoServer.java:321) 30 ноября 15:17:28 Surerest2 neo4j: at 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.lifecycle.LifeSupport$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.postP rocess(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.Se rvletContainer.init(ServletContainer.java:394) 30 ноября 15:17:28 Surerest2 neo4j: at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577) 30 ноября 15:17:28 Surerest2 neo4j: at javax.servlet.GenericServlet.init(GenericServlet.java:244) 30 ноября 15:17:28 Surerest2 neo4j: at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:665) 30 ноября 15 :17:28 surerest2 neo4j: ... еще 27 - person Subodh Joshi; 30.11.2018