2014-09-18 9 views
5

Chciałbym połączyć Neo4j 2.1.3 i Grails 2.4.2, najlepiej używając wtyczki neo4j GORM lub używając Spring4Data-Neo4j.poszukując działającej konfiguracji neo4j i grailsa

Już próbowałem zagłębić się w dokumentację wtyczki neo4j: 2.0.0-M02 i przykład hostowany na blogu Stefana Armbrustersa.

Chciałbym użyć połączenia stylu REST z instancją bazy danych NEO4J. Instancja bazy danych jest uruchomiona na localhost, mogę zapytać o nią za pomocą interfejsu internetowego.

Poszukuję działającej konfiguracji obu produktów, tak żebym mógł zrobić trochę odkrywania używania neo4j i wykresów.

Po wielu próbach i błędach, wymieniłem razem konfigurację Grails, która powinna działać, biorąc pod uwagę wskazówki, które znalazłem w dokumentacji i przykładzie. Niestety - tak nie jest.

Opublikowałem moją konfigurację Grails poniżej.

To naprawdę trudne, aby dowiedzieć się, jakie opcje konfiguracji są aktualnie potrzebne dla konkretnego wariantu połączenia (osadzone, reszta, itp.) - przykłady i dokumentacja wydają się nie pasować do siebie. Na przykład. Przykład BuildConfig.groovy nie obejmuje Gorm wtyczki neo4j, ponieważ odpowiednia linia jest komentarzem:

// compile ":neo4j:2.0.0-M02" 

Uwaga: Nie chcę jęczeć i narzekać - jestem po prostu stwierdzając, moje doświadczenie jako początkujący w domena neo4j i grails - obecny stan dokumentacji/przykładów dotyczących tego sterownika sprawia, że ​​praca jest dość trudna i nieatrakcyjna, "wystarczy spróbować szybko i sprawdzić, czy to naprawdę fajne rzeczy".

Poniższa konfiguracja Grailsa jest wynikiem kilkugodzinnych prób i błędów - prawdopodobnie zawierających niepotrzebne opcje (ustawienie sterownika JDBC?), Czy potrzebuję adresu URL JDBC, jeśli używam wariantu połączenia "reszta". nadal właściwy sposób na skonfigurowanie połączenia w stylu REST lub czy muszę teraz używać określonego adresu URL JDBC) - przepraszam za bałagan.

Gdybym uruchomić aplikację Grails pojawia się następujący błąd:

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

Z góry dziękuję za pomoc!

+0

Czy zdołałeś kiedyś rozwiązać problem @ bernd-h? –

+0

Niestety, nie. –

+0

@BerndH - A teraz ...? Próbując rozpocząć nowy projekt, jest to naprawdę denerwujące ... – bdparrish

Odpowiedz

0

Używam Grails 2.3.9, ale zrezygnowałem z tego i zakończyłem pisanie usługi używając instancji HttpBuilder do interakcji z interfejsem REST API. Chętnie udostępni źródło.