2014-09-18 6 views
5

Ich möchte Neo4j 2.1.3 und Grails 2.4.2 kombinieren, vorzugsweise mit dem neo4j GORM Plugin oder mit Spring4Data-Neo4j.auf der Suche nach einer funktionierenden Neo4j und Grails Konfiguration

Ich habe bereits versucht, mich durch die neo4j: 2.0.0-M02 Plugin-Dokumentation und das Beispiel von Stefan Armbrusters Blog zu graben.

Ich möchte die REST-Stil-Verbindung zur NEO4J-Datenbankinstanz verwenden. Die Datenbankinstanz läuft auf localhost, ich kann sie über die Webschnittstelle abfragen.

Ich bin auf der Suche nach einer funktionierenden Konfiguration beider Produkte, so dass ich tatsächlich einige der Verwendung von Neo4j und Graphen erkunden kann.

Nach viel Versuch und Irrtum habe ich eine Grails-Konfiguration getippt, die funktionieren sollte, angesichts der Hinweise, die ich in der Dokumentation und im Beispiel fand. Ach - das tut es nicht.

Ich habe meine Grails-Konfiguration weiter unten gepostet.

Es ist wirklich schwierig herauszufinden, welche Konfigurationsoptionen aktuell für eine bestimmte Verbindungsvariante (Embedded, Rest, etc.) tatsächlich benötigt werden - Beispiele und Dokumentation scheinen nicht zueinander zu passen. Z.B. das Beispiel BuildConfig.groovy beinhaltet nicht die Neo4j GORM-Plugin, da die entsprechende Zeile auf Kommentar:

// compile ":neo4j:2.0.0-M02" 

Anmerkung: Ich will nicht jammern und klagen - ich meine Erfahrung als Anfänger nur unter Angabe in Die Domäne neo4j und grails - der aktuelle Stand der Dokumentation/Beispiele zu diesem Treiber macht es ziemlich hart und unattraktiv, "es nur einen kurzen Versuch zu geben und zu sehen, ob das wirklich coole Sachen sind".

Die unten angegebene Grails-Konfiguration ist das Ergebnis von mehreren Stunden Versuch - Irrtum, der wahrscheinlich unnötige Optionen enthält (JDBC-Treibereinstellung?) Brauche ich eine JDBC-URL, wenn ich die Verbindungsvariante "rest" verwende immer noch der richtige Weg, um eine REST-style-Verbindung zu konfigurieren oder muss ich jetzt eine bestimmte JDBC-URL verwenden) - Entschuldigung für das Chaos.

Wenn ich beginnen, die Grails-Anwendung ich die folgende Fehlermeldung erhalten:

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' 
} 

Vielen Dank im Voraus für jede Hilfe!

+0

Haben Sie es jemals geschafft, @ bernd-h gelöst zu bekommen? –

+0

Leider nicht. –

+0

@Berndh - Wie wäre es jetzt ...? Ich versuche auch, ein neues Projekt zu starten, das ist wirklich nervig ... – bdparrish

Antwort

0

Ich benutze Grails 2.3.9, aber ich gab dies auf und schrieb einen Dienst mit einer Instanz von HttpBuilder, um mit seiner REST-API-Schnittstelle zu interagieren. Gerne eine Quelle teilen.

Verwandte Themen