2013-08-31 70 views
6

Tôi đang cố triển khai ứng dụng grails (2.2.1) của mình trên tomcat 7.0.42. Vì vậy, tôi đã làm theo các bước như được nêu trong trang này link từ trang web grails. Nhưng khi tôi cố gắng để khởi động ứng dụng từ Tomcat Web Application Manager, tôi thấy các bản ghi lỗi sau trên tomcat console:Lỗi khi tạo bean có tên 'transactionManagerPostProcessor' trong khi triển khai ứng dụng grails trên 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. 

Ứng dụng này, khi chạy qua lệnh chạy ứng dụng (trong IntelliJ) hoạt động tốt.

Ngoài ra, nếu chúng ta thấy dòng này từ nhật ký: 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]), nó nói rằng cơ sở dữ liệu đang được sử dụng bởi một số quy trình khác. Tuy nhiên điều đó không thể xảy ra vì cơ sở dữ liệu là HSQLDB vốn là nội bộ với ứng dụng grails và không có DBMS bên ngoài nào khác đang được sử dụng.

Tôi chắc chắn sẽ upvote (và chấp nhận cũng nếu nó cuối cùng) bất kỳ giải pháp nào giải quyết (hoặc ít nhất đưa ra một hướng giải quyết) vấn đề trên.

EDIT: Đây là DataSource.groovy tôi

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

Hiển thị 'DataSource.groovy'. – dmahapatro

+0

@dmahapatro Xem chỉnh sửa. – rahulserver

+0

Bạn có ứng dụng grails khác được triển khai cho Tomcat với cùng cấu hình không? Bạn có thể thử thay đổi bộ nhớ 'prodDb' thành' prodDb1' chẳng hạn và sau đó triển khai tới Tomcat để sử dụng không? – dmahapatro

Trả lời

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

đề cập đến một cơ sở dữ liệu H2 file. Bạn có thể thử sử dụng trong bộ nhớ prodDb thay vào đó nếu ý định không đề cập đến cơ sở dữ liệu tệp?

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

Bạn đang đề cập đến url = "jdbc: h2: mem: prodDb; MVCC = TRUE; LOCK_TIMEOUT = 10000" ... 'mem' bị thiếu trong câu trả lời ở trên ... –

1

vì "grails chiến tranh" lệnh tạo ra tập tin chiến tranh sử dụng bởi mặc định sản xuất môi trường được quy định tại các DataSource.groovy. Có lẽ DB sản xuất chưa hoạt động, vì vậy bạn có thể thử chạy "thử nghiệm grails war" để xây dựng cuộc chiến với DB thử nghiệm của bạn.