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!
Czy zdołałeś kiedyś rozwiązać problem @ bernd-h? –
Niestety, nie. –
@BerndH - A teraz ...? Próbując rozpocząć nowy projekt, jest to naprawdę denerwujące ... – bdparrish