2013-08-31 18 views
6

Próbuję zainstalować moją aplikację Grails (2.2.1) na tomcat 7.0.42. Więc poszedłem za krokami podanymi w tym link ze strony grails. Ale gdy próbuję uruchomić aplikację z Tomcat Web Application Manager widzę następujący dziennik błędów na konsoli tomcat:Błąd podczas tworzenia komponentu bean o nazwie "transactionManagerPostProcessor" podczas wdrażania aplikacji Grails na tomcat

Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Cannot resolve reference to bean 'hibernateProperties' while setting bean 
property 'hibernateProperties'; nested exception is org.springframework.beans.fa 
ctory.BeanCreationException: Error creating bean with name 'hibernateProperties' 
: Cannot resolve reference to bean 'dialectDetector' while setting bean property 
'properties' with key [hibernate.dialect]; nested exception is org.springframew 
ork.beans.factory.BeanCreationException: Error creating bean with name 'dialectD 
etector': Invocation of init method failed; nested exception is org.springframew 
ork.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaDat 
a; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create 
PoolableConnectionFactory (Database may be already in use: "Locked by another p 
rocess". Possible solutions: close all other connection(s); use the server mode 
[90020-164]) 
org.springframework.beans.factory.BeanCreationException: Error creating bean wit 
h name 'transactionManagerPostProcessor': Initialization of bean failed; nested 
exception is org.springframework.beans.factory.BeanCreationException: Error crea 
ting bean with name 'transactionManager': Cannot resolve reference to bean 'sess 
ionFactory' while setting bean property 'sessionFactory'; nested exception is or 
g.springframework.beans.factory.BeanCreationException: Error creating bean with 
name 'sessionFactory': Cannot resolve reference to bean 'hibernateProperties' wh 
ile setting bean property 'hibernateProperties'; nested exception is org.springf 
ramework.beans.factory.BeanCreationException: Error creating bean with name 'hib 
ernateProperties': Cannot resolve reference to bean 'dialectDetector' while sett 
ing bean property 'properties' with key [hibernate.dialect]; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean wi 
th name 'dialectDetector': Invocation of init method failed; nested exception is 
org.springframework.jdbc.support.MetaDataAccessException: Error while extractin 
g DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNestedExcepti 
on: Cannot create PoolableConnectionFactory (Database may be already in use: "Lo 
cked by another process". Possible solutions: close all other connection(s); use 
the server mode [90020-164]) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:615) 
     at java.lang.Thread.run(Thread.java:722) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati 
ng bean with name 'transactionManager': Cannot resolve reference to bean 'sessio 
nFactory' while setting bean property 'sessionFactory'; nested exception is org. 
springframework.beans.factory.BeanCreationException: Error creating bean with na 
me 'sessionFactory': Cannot resolve reference to bean 'hibernateProperties' whil 
e setting bean property 'hibernateProperties'; nested exception is org.springfra 
mework.beans.factory.BeanCreationException: Error creating bean with name 'hiber 
nateProperties': Cannot resolve reference to bean 'dialectDetector' while settin 
g bean property 'properties' with key [hibernate.dialect]; nested exception is o 
rg.springframework.beans.factory.BeanCreationException: Error creating bean with 
name 'dialectDetector': Invocation of init method failed; nested exception is o 
rg.springframework.jdbc.support.MetaDataAccessException: Error while extracting 
DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNestedException 
: Cannot create PoolableConnectionFactory (Database may be already in use: "Lock 
ed by another process". Possible solutions: close all other connection(s); use t 
he server mode [90020-164]) 
     ... 3 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati 
ng bean with name 'sessionFactory': Cannot resolve reference to bean 'hibernateP 
roperties' while setting bean property 'hibernateProperties'; nested exception i 
s org.springframework.beans.factory.BeanCreationException: Error creating bean w 
ith name 'hibernateProperties': Cannot resolve reference to bean 'dialectDetecto 
r' while setting bean property 'properties' with key [hibernate.dialect]; nested 
exception is org.springframework.beans.factory.BeanCreationException: Error cre 
ating bean with name 'dialectDetector': Invocation of init method failed; nested 
exception is org.springframework.jdbc.support.MetaDataAccessException: Error wh 
ile extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQL 
NestedException: Cannot create PoolableConnectionFactory (Database may be alread 
y in use: "Locked by another process". Possible solutions: close all other conne 
ction(s); use the server mode [90020-164]) 
     ... 3 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati 
ng bean with name 'hibernateProperties': Cannot resolve reference to bean 'diale 
ctDetector' while setting bean property 'properties' with key [hibernate.dialect 
]; nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'dialectDetector': Invocation of init method faile 
d; nested exception is org.springframework.jdbc.support.MetaDataAccessException: 
Error while extracting DatabaseMetaData; nested exception is org.apache.commons 
.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Database may 
be already in use: "Locked by another process". Possible solutions: close all ot 
her connection(s); use the server mode [90020-164]) 
     ... 3 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati 
ng bean with name 'dialectDetector': Invocation of init method failed; nested ex 
ception is org.springframework.jdbc.support.MetaDataAccessException: Error while 
extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNes 
tedException: Cannot create PoolableConnectionFactory (Database may be already i 
n use: "Locked by another process". Possible solutions: close all other connecti 
on(s); use the server mode [90020-164]) 
     ... 3 more 
Caused by: org.springframework.jdbc.support.MetaDataAccessException: Error while 
extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNes 
tedException: Cannot create PoolableConnectionFactory (Database may be already i 
n use: "Locked by another process". Possible solutions: close all other connecti 
on(s); use the server mode [90020-164]) 
     ... 3 more 
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableCon 
nectionFactory (Database may be already in use: "Locked by another process". Pos 
sible solutions: close all other connection(s); use the server mode [90020-164]) 

     at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFacto 
ry(BasicDataSource.java:1549) 
     at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSou 
rce.java:1388) 
     at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource 
.java:1044) 
     ... 3 more 
Caused by: org.h2.jdbc.JdbcSQLException: Database may be already in use: "Locked 
by another process". Possible solutions: close all other connection(s); use the 
server mode [90020-164] 
     at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) 
     at org.h2.message.DbException.get(DbException.java:169) 
     at org.h2.message.DbException.get(DbException.java:146) 
     at org.h2.store.FileLock.getExceptionAlreadyInUse(FileLock.java:439) 
     at org.h2.store.FileLock.lockFile(FileLock.java:336) 
     at org.h2.store.FileLock.lock(FileLock.java:128) 
     at org.h2.engine.Database.open(Database.java:542) 
     at org.h2.engine.Database.openDatabase(Database.java:222) 
     at org.h2.engine.Database.<init>(Database.java:217) 
     at org.h2.engine.Engine.openSession(Engine.java:56) 
     at org.h2.engine.Engine.openSession(Engine.java:159) 
     at org.h2.engine.Engine.createSessionAndValidate(Engine.java:138) 
     at org.h2.engine.Engine.createSession(Engine.java:121) 
     at org.h2.engine.Engine.createSession(Engine.java:28) 
     at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.jav 
a:305) 
     at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:110) 
     at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94) 
     at org.h2.Driver.connect(Driver.java:72) 
     at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(Driv 
erConnectionFactory.java:38) 
     at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(Poolable 
ConnectionFactory.java:582) 
     at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(Bas 
icDataSource.java:1556) 
     at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFacto 
ry(BasicDataSource.java:1545) 
     ... 5 more 
2013-08-31 19:17:32,185 [http-apr-8081-exec-4] ERROR context.GrailsContextLoader 
    - Error initializing Grails: Error creating bean with name 'transactionManager 
PostProcessor': Initialization of bean failed; nested exception is org.springfra 
mework.beans.factory.BeanCreationException: Error creating bean with name 'trans 
actionManager': Cannot resolve reference to bean 'sessionFactory' while setting 
bean property 'sessionFactory'; nested exception is org.springframework.beans.fa 
ctory.BeanCreationException: Error creating bean with name 'sessionFactory': Can 
not resolve reference to bean 'hibernateProperties' while setting bean property 
'hibernateProperties'; nested exception is org.springframework.beans.factory.Bea 
nCreationException: Error creating bean with name 'hibernateProperties': Cannot 
resolve reference to bean 'dialectDetector' while setting bean property 'propert 
ies' with key [hibernate.dialect]; nested exception is org.springframework.beans 
.factory.BeanCreationException: Error creating bean with name 'dialectDetector': 
Invocation of init method failed; nested exception is org.springframework.jdbc. 
support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested 
exception is org.apache.commons.dbcp.SQLNestedException: Cannot create Poolable 
ConnectionFactory (Database may be already in use: "Locked by another process". 
Possible solutions: close all other connection(s); use the server mode [90020-16 
4]) 
org.springframework.beans.factory.BeanCreationException: Error creating bean wit 
h name 'transactionManagerPostProcessor': Initialization of bean failed; nested 
exception is org.springframework.beans.factory.BeanCreationException: Error crea 
ting bean with name 'transactionManager': Cannot resolve reference to bean 'sess 
ionFactory' while setting bean property 'sessionFactory'; nested exception is or 
g.springframework.beans.factory.BeanCreationException: Error creating bean with 
name 'sessionFactory': Cannot resolve reference to bean 'hibernateProperties' wh 
ile setting bean property 'hibernateProperties'; nested exception is org.springf 
ramework.beans.factory.BeanCreationException: Error creating bean with name 'hib 
ernateProperties': Cannot resolve reference to bean 'dialectDetector' while sett 
ing bean property 'properties' with key [hibernate.dialect]; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean wi 
th name 'dialectDetector': Invocation of init method failed; nested exception is 
org.springframework.jdbc.support.MetaDataAccessException: Error while extractin 
g DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNestedExcepti 
on: Cannot create PoolableConnectionFactory (Database may be already in use: "Lo 
cked by another process". Possible solutions: close all other connection(s); use 
the server mode [90020-164]) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:615) 
     at java.lang.Thread.run(Thread.java:722) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati 
ng bean with name 'transactionManager': Cannot resolve reference to bean 'sessio 
nFactory' while setting bean property 'sessionFactory'; nested exception is org. 
springframework.beans.factory.BeanCreationException: Error creating bean with na 
me 'sessionFactory': Cannot resolve reference to bean 'hibernateProperties' whil 
e setting bean property 'hibernateProperties'; nested exception is org.springfra 
mework.beans.factory.BeanCreationException: Error creating bean with name 'hiber 
nateProperties': Cannot resolve reference to bean 'dialectDetector' while settin 
g bean property 'properties' with key [hibernate.dialect]; nested exception is o 
rg.springframework.beans.factory.BeanCreationException: Error creating bean with 
name 'dialectDetector': Invocation of init method failed; nested exception is o 
rg.springframework.jdbc.support.MetaDataAccessException: Error while extracting 
DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNestedException 
: Cannot create PoolableConnectionFactory (Database may be already in use: "Lock 
ed by another process". Possible solutions: close all other connection(s); use t 
he server mode [90020-164]) 
     ... 3 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati 
ng bean with name 'sessionFactory': Cannot resolve reference to bean 'hibernateP 
roperties' while setting bean property 'hibernateProperties'; nested exception i 
s org.springframework.beans.factory.BeanCreationException: Error creating bean w 
ith name 'hibernateProperties': Cannot resolve reference to bean 'dialectDetecto 
r' while setting bean property 'properties' with key [hibernate.dialect]; nested 
exception is org.springframework.beans.factory.BeanCreationException: Error cre 
ating bean with name 'dialectDetector': Invocation of init method failed; nested 
exception is org.springframework.jdbc.support.MetaDataAccessException: Error wh 
ile extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQL 
NestedException: Cannot create PoolableConnectionFactory (Database may be alread 
y in use: "Locked by another process". Possible solutions: close all other conne 
ction(s); use the server mode [90020-164]) 
     ... 3 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati 
ng bean with name 'hibernateProperties': Cannot resolve reference to bean 'diale 
ctDetector' while setting bean property 'properties' with key [hibernate.dialect 
]; nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'dialectDetector': Invocation of init method faile 
d; nested exception is org.springframework.jdbc.support.MetaDataAccessException: 
Error while extracting DatabaseMetaData; nested exception is org.apache.commons 
.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Database may 
be already in use: "Locked by another process". Possible solutions: close all ot 
her connection(s); use the server mode [90020-164]) 
     ... 3 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati 
ng bean with name 'dialectDetector': Invocation of init method failed; nested ex 
ception is org.springframework.jdbc.support.MetaDataAccessException: Error while 
extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNes 
tedException: Cannot create PoolableConnectionFactory (Database may be already i 
n use: "Locked by another process". Possible solutions: close all other connecti 
on(s); use the server mode [90020-164]) 
     ... 3 more 
Caused by: org.springframework.jdbc.support.MetaDataAccessException: Error while 
extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNes 
tedException: Cannot create PoolableConnectionFactory (Database may be already i 
n use: "Locked by another process". Possible solutions: close all other connecti 
on(s); use the server mode [90020-164]) 
     ... 3 more 
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableCon 
nectionFactory (Database may be already in use: "Locked by another process". Pos 
sible solutions: close all other connection(s); use the server mode [90020-164]) 

     at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFacto 
ry(BasicDataSource.java:1549) 
     at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSou 
rce.java:1388) 
     at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource 
.java:1044) 
     ... 3 more 
Caused by: org.h2.jdbc.JdbcSQLException: Database may be already in use: "Locked 
by another process". Possible solutions: close all other connection(s); use the 
server mode [90020-164] 
     at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) 
     at org.h2.message.DbException.get(DbException.java:169) 
     at org.h2.message.DbException.get(DbException.java:146) 
     at org.h2.store.FileLock.getExceptionAlreadyInUse(FileLock.java:439) 
     at org.h2.store.FileLock.lockFile(FileLock.java:336) 
     at org.h2.store.FileLock.lock(FileLock.java:128) 
     at org.h2.engine.Database.open(Database.java:542) 
     at org.h2.engine.Database.openDatabase(Database.java:222) 
     at org.h2.engine.Database.<init>(Database.java:217) 
     at org.h2.engine.Engine.openSession(Engine.java:56) 
     at org.h2.engine.Engine.openSession(Engine.java:159) 
     at org.h2.engine.Engine.createSessionAndValidate(Engine.java:138) 
     at org.h2.engine.Engine.createSession(Engine.java:121) 
     at org.h2.engine.Engine.createSession(Engine.java:28) 
     at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.jav 
a:305) 
     at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:110) 
     at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94) 
     at org.h2.Driver.connect(Driver.java:72) 
     at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(Driv 
erConnectionFactory.java:38) 
     at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(Poolable 
ConnectionFactory.java:582) 
     at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(Bas 
icDataSource.java:1556) 
     at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFacto 
ry(BasicDataSource.java:1545) 
     ... 5 more 
Aug 31, 2013 7:17:32 PM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Error listenerStart 
Aug 31, 2013 7:17:32 PM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Context [/BskDPP2013ExcelImportToDatabase-0.1] startup failed due to pre 
vious errors 
Aug 31, 2013 7:17:32 PM org.apache.catalina.loader.WebappClassLoader clearRefere 
ncesJdbc 
SEVERE: The web application [/BskDPP2013ExcelImportToDatabase-0.1] registered th 
e JDBC driver [org.h2.Driver] but failed to unregister it when the web applicati 
on was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unre 
gistered. 

Aplikacja po uruchomieniu poprzez polecenia run-app (w IntelliJ) działa prawidłowo.

Również jeśli widzimy tę linię z dziennika: Cannot create PoolableConnectionFactory (Database may be already in use: "Locked by another process". Possible solutions: close all other connection(s); use the server mode [90020-164]), to mówi, że baza danych jest używana przez jakiś inny proces. Nie może się to jednak zdarzyć, ponieważ bazą danych jest HSQLDB, która jest wewnętrzna z aplikacją grails i nie jest używany żaden inny zewnętrzny DBMS.

Z pewnością zabrałbym (i przyjmuję także, jeśli to jest ostateczne) jakiekolwiek rozwiązanie, które rozwiązuje (lub przynajmniej daje kierunek do rozwiązania) powyższy problem.

EDIT: Oto moja DataSource.groovy

dataSource { 
    pooled = true 
    driverClassName = "org.h2.Driver" 
    username = "sa" 
    password = "" 
} 
hibernate { 
    cache.use_second_level_cache = true 
    cache.use_query_cache = false 
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' 
} 
// environment specific settings 
environments { 
    development { 
     dataSource { 
      dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', '' 
      url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000" 

     } 
    } 
    test { 
     dataSource { 
      dbCreate = "update" 
      url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000" 
     } 
    } 
    production { 
     dataSource { 
      dbCreate = "update" 
      url = "jdbc:h2:file:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000" 
      pooled = true 
      properties { 
       maxActive = -1 
       minEvictableIdleTimeMillis=1800000 
       timeBetweenEvictionRunsMillis=1800000 
       numTestsPerEvictionRun=3 
       testOnBorrow=true 
       testWhileIdle=true 
       testOnReturn=true 
       validationQuery="SELECT 1" 
      } 
     } 
    } 
} 
+0

Pokaż 'DataSource.groovy'. – dmahapatro

+0

@dmahapatro Zobacz edycję. – rahulserver

+0

Czy masz zainstalowane inne aplikacje Grails w tej samej konfiguracji? Czy możesz spróbować na przykład zmienić plik 'prodDb' na' prodDb1', a następnie wdrożyć go na serwerze Tomcat? – dmahapatro

Odpowiedz

1
url = "jdbc:h2:file:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000" 

odnosi się do H2 file bazie. Czy można spróbować użyć w pamięci prodDb, jeśli intencją nie było odwoływanie się do bazy danych plików?

url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000" 
+0

Czy odwołujesz się do adresu url = "jdbc: h2: mem: prodDb; MVCC = TRUE; LOCK_TIMEOUT = 10000" ... 'mem' brakuje w powyższej odpowiedzi ... –

1

ponieważ „Grails wojna” polecenie generuje plik war korzystając domyślnie z produkcyjną środowisko, które jest zdefiniowane w DataSource.groovy. Może DB produkcji jeszcze nie działa, więc możesz spróbować uruchomić "Grails Test War", aby zbudować wojnę z Test DB.