Я пытаюсь подключить приложение Grails к базе данных Firebird.Шаги по использованию базы данных Firebird в Grails
Я использую:
- Grails 2.2.1
- JDK 1.7
- Firebird 2.5.2
- Jaybird 2.2.2
До сих пор, это то, что я сделали:
- Я загрузил Jaybird-2.2.2JDK_1.7.zip от http://www.firebirdsql.org/en/jdbc-driver/
- Я распаковал этот файл и скопировал jaybird-2.2.2.jar в папку с папкой моего приложения.
- В BuildConfig.groovy я добавил
runtime "org.firebirdsql.jdbc:jaybird:2.2.2"
в раздел зависимостей. - Я отредактировал DataSource.groovy, как описано ниже.
Секция DataSource:
dataSource {
pooled = false
driverClassName = "org.firebirdsql.jdbc.FBDriver"
dialect = "org.hibernate.dialect.FirebirdDialect"
username = "SYSDBA"
password = "masterkey"
}
Раздел Hibernate:
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'org.firebirdsql.pool.FBSimpleDataSource'
}
(Я также имел cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory
и cache.provider_class = 'com.opensymphony.oscache.hibernate.OSCacheProvider'
в приведенном выше разделе, посвященном отдельных случаях, но ни один из каких-либо различий.)
При запуске приложения Grails запуск запускается с огромной ошибкой, которая сводится к минимуму на следующее сообщение:
java.lang.IllegalStateException: Could not load JDBC driver class [org.firebirdsql.jdbc.FBDriver]
Я искал в Интернете далеко и широко, но я не могу найти пример рабочего Grails/Firebird конфигурации в любом месте. Существует исправление, плавающее вокруг, которое включает в себя копирование minij2ee.jar, но это для другого сообщения об ошибке. Кроме того, люди предложили опорожнить папку .grails - я пробовал это, но безрезультатно.
Может ли кто-нибудь проконсультироваться, как я могу заставить Grails работать с Firebird?
Здесь весь исключение, хотя, кажется, повторить несколько раз во время запуска:
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 138 | run in java.util.concurrent.FutureTask
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run in ''
^ 662 | run . . in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'sessionFactory':
Cannot resolve reference to bean 'dataSource' while setting bean property 'data
Source'; nested exception is org.springframework.beans.factory.BeanCreationExcep
tion: Error creating bean with name 'dataSource': Cannot resolve reference to be
an 'dataSourceUnproxied' while setting constructor argument; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean wi
th name 'dataSourceUnproxied': Error setting property values; nested exception i
s org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessE
xceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException:
Property 'driverClassName' threw exception; nested exception is java.lang.Illega
lStateException: Could not load JDBC driver class [org.firebirdsql.jdbc.FBDriver
]
Запуск --stacktrace с --verbose:
| Error Error running script --stacktrace --verbose: Cannot invoke method findAl
l() on null object
java.lang.NullPointerException: Cannot invoke method findAll() on null object
at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:7
7)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaC
lassSite.java:45)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:45)
at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.j
ava:32)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:45)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMeta
MethodSite.java:55)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:116)
at org.codehaus.groovy.grails.cli.ScriptNameResolver.resolvesTo(ScriptNa
meResolver.groovy:30)
at org.codehaus.groovy.grails.cli.GrailsScriptRunner.getPotentialScripts
(GrailsScriptRunner.java:489)
at org.codehaus.groovy.grails.cli.GrailsScriptRunner.executeScriptWithCa
ching(GrailsScriptRunner.java:429)
at org.codehaus.groovy.grails.cli.GrailsScriptRunner.executeScriptWithCa
ching(GrailsScriptRunner.java:416)
at org.codehaus.groovy.grails.cli.GrailsScriptRunner$executeScriptWithCa
ching.call(Unknown Source)
at org.codehaus.groovy.grails.cli.interactive.InteractiveMode.parseAndEx
ecute(InteractiveMode.groovy:280)
at org.codehaus.groovy.grails.cli.interactive.InteractiveMode$parseAndEx
ecute.callCurrent(Unknown Source)
at org.codehaus.groovy.grails.cli.interactive.InteractiveMode.run(Intera
ctiveMode.groovy:133)
at org.codehaus.groovy.grails.cli.interactive.InteractiveMode$run.call(U
nknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:112)
at RunApp$_run_closure7_closure11.doCall(RunApp:127)
at RunApp$_run_closure7_closure11.doCall(RunApp)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(Refl
ectiveInterceptor.java:1243)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1082)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1106)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:906)
at groovy.lang.Closure.call(Closure.java:412)
at groovy.lang.Closure.call(Closure.java:406)
at groovy.lang.Closure.run(Closure.java:490)
at java.lang.Thread.run(Thread.java:662)
| Error Error running script --stacktrace --verbose: Cannot invoke method findAl
l() on null object
Вот блок репозиториев из моего BuildConfig.groovy
файла:
repositories {
inherits true // Whether to inherit repository definitions from plugins
grailsPlugins()
grailsHome()
grailsCentral()
mavenLocal()
mavenCentral()
// uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories
mavenRepo "http://snapshots.repository.codehaus.org"
mavenRepo "http://repository.codehaus.org"
mavenRepo "http://download.java.net/maven/2/"
mavenRepo "http://repository.jboss.com/maven2/"
}
'cache.provider_class = 'org.firebirdsql.pool.FBSimpleDataSource'', вероятно, также неверен,' FBSimpleDataSource' не является поставщиком кеша. –
Спасибо. Любая идея, чем должен быть класс поставщика? Другое значение, которое я видел в Интернете, это 'com.opensymphony.oscache.hibernate.OSCacheProvider', но я честно даже не знаю, действительно ли это так. – Stephan
Поставщик кэширования кэшей, проверьте документацию спящего режима; Я считаю, что он использует значение по умолчанию, если вы его не укажете. –