2013-08-31 21 views
6

Sto tentando di distribuire l'applicazione Grails (2.2.1) su tomcat 7.0.42. Così ho seguito i passaggi come indicato in questo link dal sito web di Grails. Ma quando provo ad avviare l'applicazione da Tomcat Web Application Manager, vedo il seguente log degli errori sulla console Tomcat:Errore durante la creazione di bean con nome 'transactionManagerPostProcessor' durante la distribuzione dell'applicazione Grails su 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. 

L'applicazione, quando eseguito tramite comando di run-app (in IntelliJ) funziona bene.

Anche se vediamo questa riga dal registro: 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]), si dice che il database sia utilizzato da qualche altro processo. Tuttavia ciò non può accadere perché il database è HSQLDB che è interno all'applicazione Grails e non viene utilizzato nessun altro DBMS esterno.

Vorrei sicuramente revocare (e accettare anche se è il massimo) qualsiasi soluzione che risolva (o almeno fornisca una direzione per risolvere) il problema di cui sopra.

EDIT: Ecco il mio 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

Mostra 'DataSource.groovy'. – dmahapatro

+0

@dmahapatro Vedi modifica. – rahulserver

+0

Hai altre applicazioni Grails distribuite su Tomcat con la stessa configurazione? Puoi provare a cambiare il 'prodDb' in memoria in' prodDb1' per esempio e poi distribuirlo a Tomcat per l'uso? – dmahapatro

risposta

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

si riferisce ad una banca dati file H2. Puoi provare a usare nella memoria prodDb invece se l'intenzione non era quella di fare riferimento a un database di file?

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

Ti stai riferendo a url = "jdbc: h2: mem: prodDb; MVCC = TRUE; LOCK_TIMEOUT = 10000" ... 'mem' manca nella risposta sopra ... –

1

perché il "graal guerra" comando generare file guerra utilizzando di default il produzione ambiente che è definito nel DataSource.groovy. Forse il DB di produzione non funziona ancora, quindi puoi provare a eseguire "Grails test war" per costruire una guerra con il tuo DB di test.

Problemi correlati