【问题标题】:Spring Data Neo4j: Using the server with an embeddedSpring Data Neo4j:使用嵌入式服务器
【发布时间】:2013-04-09 14:39:15
【问题描述】:

我正在尝试配置我的应用程序上下文,以便能够在我的应用程序中使用带有嵌入式图形的 Neo4j 服务器,但没有取得多大成功。我同时使用 Spring Data(Mongo 和 Neo4j 存储库方法)。这是我的应用程序上下文,它没有运行:

<context:component-scan base-package="org.domain.team.project.*"/>

<mongo:repositories base-package="org.domain.team.project.data.repositories.mongodb"/>

    <!-- Neo4j -->
    <!--  <neo4j:config storeDirectory="/data/production/graph.db"/> -->
    <neo4j:repositories base-package="org.domain.team.project.data.repositories.neo4j"/>

    <neo4j:config graphDatabaseService="graphDatabaseService" />
    <bean id="graphDatabaseService" class="org.neo4j.kernel.EmbeddedGraphDatabase"
    destroy-method="shutdown">
        <constructor-arg index="0" value="/data/production/graph.db" />
        <constructor-arg index="1">
            <map><entry key="enable_remote_shell" value="true"/></map>
        </constructor-arg>
    </bean>
    <bean id="serverWrapper" class="org.neo4j.server.WrappingNeoServerBootstrapper" 
        init-method="start" destroy-method="stop">
            <constructor-arg ref="graphDatabaseService"/>
    </bean>

如果我不使用这种方法并仅指定商店目录(注释行),一切运行正常。我怀疑这是 SDN 和 neo4j-server 问题之间的一个版本。这是我的 POM:

  <properties>
    <spring.data.mongo.version>1.1.0.RELEASE</spring.data.mongo.version>
    <spring.data.neo4j.version>2.1.0.RELEASE</spring.data.neo4j.version>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>${spring.data.mongo.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j</artifactId>
        <version>${spring.data.neo4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.neo4j.app</groupId>
        <artifactId>neo4j-server</artifactId>
        <version>1.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.neo4j.app</groupId>
        <artifactId>neo4j-server</artifactId>
        <classifier>static-web</classifier>
        <version>1.8.2</version>
    </dependency>
  </dependencies>

它的父级依赖 Spring(core,context,test) 3.2.0 Release。

显示的具体错误是:

Caused by: java.lang.NoSuchFieldError: query_cache_size
    at org.neo4j.cypher.ExecutionEngine.org$neo4j$cypher$ExecutionEngine$$getQueryCacheSize(ExecutionEngine.scala:95)
    at org.neo4j.cypher.ExecutionEngine$$anon$1.<init>(ExecutionEngine.scala:91)
    at org.neo4j.cypher.ExecutionEngine.<init>(ExecutionEngine.scala:91)
    at org.neo4j.cypher.javacompat.ExecutionEngine.<init>(ExecutionEngine.java:54)
    at org.neo4j.cypher.javacompat.ExecutionEngine.<init>(ExecutionEngine.java:44)
    at org.springframework.data.neo4j.support.query.CypherQueryEngine.<init>(CypherQueryEngine.java:42)
    at org.springframework.data.neo4j.support.DelegatingGraphDatabase.createCypherQueryEngine(DelegatingGraphDatabase.java:217)
    at org.springframework.data.neo4j.support.DelegatingGraphDatabase.queryEngineFor(DelegatingGraphDatabase.java:190)
    at org.springframework.data.neo4j.support.MappingInfrastructureFactoryBean.afterPropertiesSet(MappingInfrastructureFactoryBean.java:146)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
    ... 47 more

就我而言,这应该没问题,因为default value 是 100。SDN 文档没有谈论too much。有什么建议吗?

提前谢谢大家。

【问题讨论】:

    标签: neo4j spring-data-neo4j


    【解决方案1】:

    看起来像是版本兼容性问题。对我来说,以下组合工作正常

    spring-data-neo4j : 2.1.0.RC4
    spring-data-mongodb : 1.1.0.RELEASE 
    neo4j-server : 1.8
    static-web : 1.8
    

    此外,我正在使用-

    Spring framework version : 3.1.2.RELEASE
    Neo4j version : 1.8
    mongodb version : 2.2.2
    mongo-java-driver : 2.9.1
    slf4j : 1.7.2
    

    【讨论】:

    • 降级到neo4j-server 1.8版本并解决一些多个SL4J绑定问题解决了这个问题,谢谢!
    • 顺便说一下,接口在localhost:7474下准备好了,但在http://:7474下没有。有什么线索吗?这是我希望能够访问的同一专用网络中的 Neo4j 盒子。
    • 好的,通过实现此类components.neo4j.org/neo4j-server/1.8/apidocs/org/neo4j/server/… 并将其作为第二个参数传递给服务器包装器来解决它。更多细节在这里:cakesolutions.net/teamblogs/2012/05/23/…
    • 为什么尝试将所有内容打包到 JAR 中会出现问题?从 Eclipse 运行它就像一个魅力,但从 JAR 运行它似乎不起作用:界面可见但完整的功能丢失了。服务器一直在给出 500 错误。已检测到此问题,但未提供明确的解决方案:groups.google.com/forum/#!topic/neo4j/rjyf09pYIaM
    • 很有趣,但是您所指的帖子似乎在谈论服务器插件开发。你在开发 neo4j 服务器插件吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多