grails - 寻找有效的 neo4j 和 grails 配置

标签 grails neo4j

我想结合 Neo4j 2.1.3 和 Grails 2.4.2,最好使用 neo4j GORM 插件或 Spring4Data-Neo4j。

我已经尝试通过 neo4j:2.0.0-M02 插件文档和 Stefan Armbrusters 博客上托管的示例来挖掘自己。

我想使用 REST 样式连接到 NEO4J 数据库实例。
数据库实例在 localhost 上运行,我可以使用 Web 界面查询它。

我正在寻找两种产品的工作配置,以便我实际上可以对使用 neo4j 和图形进行一些探索。

经过多次试验和错误后,根据我在文档和示例中找到的提示,我拼凑出一个应该可以工作的 Grails 配置。唉 - 它没有。

我在下面进一步发布了我的 Grails 配置。

很难确定特定连接变体(嵌入式、休息等)当前实际需要哪些配置选项 - 示例和文档似乎不适合彼此。例如。示例 BuildConfig.groovy 不包含 neo4j GORM 插件,因为相应的行被注释掉了:

// compile ":neo4j:2.0.0-M02"

注意:我不想提示和提示——我只是陈述我作为 neo4j 和 grails 领域初学者的经验——关于这个驱动程序的文档/示例的当前状态是否让“给它”变得相当困难和没有吸引力快速尝试一下,看看这是否真的是一些很酷的东西”。

下面给出的 Grails 配置是几个小时反复试验的结果 - 很可能包含不必要的选项(JDBC 驱动程序设置?,如果我使用连接变体“rest”,我是否需要 JDBC url。这仍然是正确的方法吗?配置 REST 样式的连接,还是我现在必须使用特定的 JDBC URL)- 抱歉造成困惑。

如果我启动 Grails 应用程序,我会收到以下错误:
Loading Grails 2.4.2
|Configuring classpathSep 14, 2014 5:23:55 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.

.
|Environment set to development
.................................
|Packaging Grails application
.................................
|Running Grails application
Sep 14, 2014 5:24:11 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper stop
INFO: Stopping the HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper stop
INFO: Stopping the HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper stop
INFO: Stopping the HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper stop
INFO: Stopping the HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper stop
INFO: Stopping the HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper stop
INFO: Stopping the HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper stop
INFO: Stopping the HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper stop
INFO: Stopping the HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper stop
INFO: Stopping the HTTP client
Sep 14, 2014 5:24:12 PM org.restlet.ext.httpclient.HttpClientHelper stop
INFO: Stopping the HTTP client
Sep 14, 2014 5:24:13 PM org.restlet.ext.httpclient.HttpClientHelper start
INFO: Starting the Apache HTTP client
Error |
2014-09-14 17:24:13,065 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener  - Error initializing the application: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'neo4jTransactionManager': Cannot resolve reference to bean 'neo4jDatastore' while setting bean property 'datastore'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'neo4jDatastore': FactoryBean threw exception on object creation; nested exception is java.lang.RuntimeException: java.sql.SQLException: Commit called on auto-committed connection
Message: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'neo4jTransactionManager': Cannot resolve reference to bean 'neo4jDatastore' while setting bean property 'datastore'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'neo4jDatastore': FactoryBean threw exception on object creation; nested exception is java.lang.RuntimeException: java.sql.SQLException: Commit called on auto-committed connection
    Line | Method
->>  262 | run       in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run       in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'neo4jTransactionManager': Cannot resolve reference to bean 'neo4jDatastore' while setting bean property 'datastore'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'neo4jDatastore': FactoryBean threw exception on object creation; nested exception is java.lang.RuntimeException: java.sql.SQLException: Commit called on auto-committed connection
->>  262 | run       in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run       in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'neo4jDatastore': FactoryBean threw exception on object creation; nested exception is java.lang.RuntimeException: java.sql.SQLException: Commit called on auto-committed connection
->>  262 | run       in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run       in java.lang.Thread
Caused by RuntimeException: java.sql.SQLException: Commit called on auto-committed connection
->>  100 | commit    in org.grails.datastore.gorm.neo4j.engine.JdbcCypherEngine
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|     91 | setupIndexing in org.grails.datastore.gorm.neo4j.Neo4jDatastore
|     67 | afterPropertiesSet in     ''
|     50 | getObject in org.grails.datastore.gorm.neo4j.bean.factory.Neo4jDatastoreFactoryBean
|    262 | run . . . in java.util.concurrent.FutureTask
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run       in java.lang.Thread
Caused by SQLException: Commit called on auto-committed connection
->>  200 | commit    in org.neo4j.jdbc.internal.Neo4jConnection
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|     97 | commit    in org.grails.datastore.gorm.neo4j.engine.JdbcCypherEngine
|     91 | setupIndexing in org.grails.datastore.gorm.neo4j.Neo4jDatastore
|     67 | afterPropertiesSet in     ''
|     50 | getObject in org.grails.datastore.gorm.neo4j.bean.factory.Neo4jDatastoreFactoryBean
|    262 | run       in java.util.concurrent.FutureTask
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run . . . in java.lang.Thread
Error |
Forked Grails VM exited with error

BuildConfig.groovy ---------------------------------------------- ------
grails.servlet.version = "3.0" // Change depending on target container compliance (2.5 or 3.0)
grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.project.work.dir = "target/work"
grails.project.target.level = 1.6
grails.project.source.level = 1.6
//grails.project.war.file = "target/${appName}-${appVersion}.war"

grails.project.fork = [
    // configure settings for compilation JVM, note that if you alter the Groovy version forked compilation is required
    //  compile: [maxMemory: 256, minMemory: 64, debug: false, maxPerm: 256, daemon:true],

    // configure settings for the test-app JVM, uses the daemon by default
    test: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, daemon:true],
    // configure settings for the run-app JVM
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    // configure settings for the run-war JVM
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    // configure settings for the Console UI JVM
    console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256]
]

grails.project.dependency.resolver = "maven" // or ivy
grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {

        excludes 'xml-apis', 'netty', 'stax-api', 'slf4j-jdk14','log4j-over-slf4j', 'logback-classic'

        // specify dependency exclusions here; for example, uncomment this to disable ehcache:
        // excludes 'ehcache'
    }
    log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
    checksums true // Whether to verify checksums on resolve
    legacyResolve false // whether to do a secondary resolve on plugin installation, not advised and here for backwards compatibility

    repositories {
        inherits true // Whether to inherit repository definitions from plugins

        grailsPlugins()
        grailsHome()
        mavenLocal()
        grailsCentral()
        mavenCentral()
        // uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories
        //mavenRepo "http://repository.codehaus.org"
        //mavenRepo "http://download.java.net/maven/2/"
        //mavenRepo "http://repository.jboss.com/maven2/"
        // mavenRepo   "http://repo2.maven.org/maven2/"

        mavenRepo 'http://m2.neo4j.org/content/repositories/releases/'

    }

    neo4jVersion="2.1.3"

    dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
        // runtime 'mysql:mysql-connector-java:5.1.29'
        // runtime 'org.postgresql:postgresql:9.3-1101-jdbc41'


        // test "org.grails:grails-datastore-test-support:1.0-grails-2.4"

        compile("org.neo4j:neo4j-community:$neo4jVersion")


        // add graphviz capabilities
        compile(group:"org.neo4j", name:"neo4j-graphviz", version: neo4jVersion)
        runtime (group:"org.neo4j", name:"neo4j-shell", version: neo4jVersion)

        // uncomment following line if type=rest is used in DataSource.groovy
        // runtime "org.neo4j:neo4j-rest-graphdb:1.9"
        runtime "org.neo4j:neo4j-rest-graphdb:2.0.1"

    }

    plugins {
        // plugins for the build system only
        build ":tomcat:7.0.54"

        // plugins for the compile step
        compile ":scaffolding:2.1.2"
        // compile ':cache:1.1.7'
        compile ":asset-pipeline:1.8.11"

        // plugins needed at runtime but not for compilation
        // runtime ":hibernate4:4.3.5.4" // or ":hibernate:3.6.10.16"
        // runtime ":database-migration:1.4.0"
        runtime ":jquery:1.11.1"

        compile ":neo4j:2.0.0-M02"


        // Uncomment these to enable additional asset-pipeline capabilities
        //compile ":sass-asset-pipeline:1.7.4"
        //compile ":less-asset-pipeline:1.7.0"
        //compile ":coffee-asset-pipeline:1.7.0"
        //compile ":handlebars-asset-pipeline:1.3.0.3"
    }
}

DataSource.groovy ---------------------------------------------------------
dataSource {
    pooled = true
    // jmxExport = true
    // driverClassName = "org.h2.Driver"
    driverClassName = "org.neo4j.jdbc.Driver"
    // username = "sa"
    // password = ""
    url = 'jdbc:neo4j://localhost:7474'
}


hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
//    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' // Hibernate 3
    cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
    singleSession = true // configure OSIV singleSession mode
}


neo4j {
    // url = "jdbc:neo4j:instance:dummy"
    // type = "rest"
    type="rest"
    location = "http://localhost:7474/db/data/"
    //url = "jdbc:neo4j://localhost:7474"
    // url = 'jdbc:neo4j:instance://localhost:7474'
}

提前感谢您的帮助!

最佳答案

我正在使用 Grails 2.3.9,但我放弃了这一点,并最终使用 HttpBuilder 的实例编写了一个服务来与其 REST API 接口(interface)进行交互。很高兴分享一些来源。

关于grails - 寻找有效的 neo4j 和 grails 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25912785/

相关文章:

java - Grails:groovy.sql.Sql 和 Model.withTransaction 会发生什么?

database - 如何在Grails中将生产数据库复制到本地数据库

docker - 配置Neo4j并将数据保存在Docker容器中

neo4j - 更改一个标签的颜色也会更改 Neo4j 中另一个标签的颜色

neo4j - 用于 Neo4j 可视化的自定义节点图像?

grails - 带有 g 标签的 Spring 安全核心和 grails

Grails Spring Security 插件 : Getting 302 for Ajax Request for timedout Session

wordpress - Grails hasone定义null

javascript - Neo4j连接nodejs报错

java.lang.ClassCastException : org. neo4j.kernel.TopLevelTransaction