title: Error creating bean with name 'transactionManagerPostProcessor' while deploying grails application on tomcat
body: <p>I am trying to deploy my grails(2.2.1) application on tomcat 7.0.42. So I followed the steps as given in this <a href="http://grails.org/Deployment">link</a> from grails website. But when I try to start the application from Tomcat Web Application Manager, I see the following error log on the tomcat console:</p>
  
  <pre><code>    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.&lt;init&gt;(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.&lt;init&gt;(JdbcConnection.java:110)
          at org.h2.jdbc.JdbcConnection.&lt;init&gt;(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.&lt;init&gt;(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.&lt;init&gt;(JdbcConnection.java:110)
          at org.h2.jdbc.JdbcConnection.&lt;init&gt;(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.
  </code></pre>
  
  <p>The application, when run via run-app command(in intellij) works fine.</p>
  
  <p>Also if we see this line from the log:<code>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])</code>,it says that the database is being used by some other process. However that can not happen because the database is HSQLDB which is internal with the grails application and no other external DBMS is being used. </p>
  
  <p>I would surely upvote(and accept also if its the ultimate) any solution which solves(or atleast gives a direction to solve) the above issue.</p>
  
  <p><strong>EDIT:</strong>
  Here is my DataSource.groovy</p>
  
  <pre><code>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"
              }
          }
      }
  }
  </code></pre>