2015-07-20 4 views
7

Многие утверждают, что версия SDN 3.3.1 или 4.0.0.RC1 должна работать с neo4j 2.2.x, но я не мог заставить ее работать.SDN с Neo4j 2.2x

У меня есть эта конфигурация пружины конфигурации:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:neo4j="http://www.springframework.org/schema/data/neo4j" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.2.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> 

    <context:annotation-config /> 
    <context:spring-configured /> 

    <neo4j:config graphDatabaseService="graphDatabaseService" base-package="com.x.protogy.neo4j"/> 
    <bean id="graphDatabaseService" 
     class="org.springframework.data.neo4j.rest.SpringCypherRestGraphDatabase"> 
     <constructor-arg index="0" value="http://localhost:7476/db/data" /> 
    </bean> 
    <tx:annotation-driven mode="aspectj" 
     transaction-manager="transactionManager" /> 

</beans> 

, который генерирует это исключение:

Caused by: java.lang.ClassNotFoundException: org.neo4j.kernel.impl.nioneo.store.StoreId 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1324) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1177) 

Глядя в коде делает его ясно: SDN относится к классу в библиотеке Neo4j, которая была ликвидирована в 2.2.x:

org.neo4j.kernel.impl.nioneo.store.StoreId 

Какие у меня варианты в этом случае?

ответ

1

я могу ответить конкретно для SDN 4 (4.0.0.RC1) - что это, безусловно, работает с Neo4j 2.2

конфигурации XML не поддерживается, так что вы должны будете использовать конфигурацию на основе Java. См http://docs.spring.io/spring-data/neo4j/docs/4.0.0.RC1/reference/html/#reference_setup

также краткое руководство https://www.airpair.com/neo4j/posts/the-essence-of-spring-data-neo4j-4

и примеры приложений https://github.com/neo4j-examples?query=sdn4

1

Я также имел некоторые проблемы с получением SDN, чтобы работать с новым Neo4j:. Cannot configure @Transaction to work with Spring Data Neo4j

(КСТАТИ есть Java конфигурация, которая сработала для меня, возможно, попробовать ее при переходе с XML на Java ...)

Возможно, это также было вызвано отсутствием класс из neo4j-kernel jar ... Удалось найти обходное решение после отладки и исследования исходного кода, но, возможно, лучшая идея на данный момент состоит в том, чтобы понизить версию neo4j ...

+0

Обход, но я не использую встроенный сервер, а остальную конечную точку сервера. Я думаю, что либо я все еще что-то пропустил, либо новый SDN будет работать только тогда, когда сервер встроен. – biliboc

5

Попробуйте этот конфигурационный файл Java вместо конфигурации XML.

import org.neo4j.ogm.session.Session; 
import org.neo4j.ogm.session.SessionFactory; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 


@Configuration 
@EnableNeo4jRepositories("com.app.repository") 
@EnableTransactionManagement 
@ComponentScan("com.app") 

public class AppNeo4jConfiguration extends Neo4jConfiguration{ 


    public SessionFactory getSessionFactory() { 
     return new SessionFactory("com.app.bo"); 
    } 


    @Bean 
    public Neo4jServer neo4jServer() { 
     return new RemoteServer("http://localhost:7474"); 
    } 


    @Bean 
    @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) 
    public Session getSession() throws Exception { 
     return super.getSession(); 
    } 
} 
Смежные вопросы