Problemas em conexão PostgreSQL na migração para Grails 2.0
23/01/2012 18:20
0
Possuo um projeto no Grails 1.3.6 que utiliza uma base PostgreSQL.
Estou tentando migrá-lo para o Grails 2.0 mas recebo o seguinte erro ao tentar conectar no banco de dados (utilizando a conexão com um banco H2 funciona sem problemas):


[Thread-6] ERROR context.GrailsContextLoader - Error executing bootstraps: 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 'lobHandlerDetector' while setting bean property 'lobHandler'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lobHandlerDetector': 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 PoolableConnectionFactory (A tentativa de conexão falhou.
Exceção: java.net.SocketException: Network is unreachable: connect

(... e mais umas 800 linhas)


Estou usando o PostgreSQL 8.1, o jar postgresql-8.1-414.jdbc2ee e o DataSource está configurado desta forma:


dataSource {
pooled = true
driverClassName = "org.postgresql.Driver"
dialect = org.hibernate.dialect.PostgreSQLDialect
username = "usuario"
password = "senha"
dbCreate = "create-drop"
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
}

// environment specific settings
environments {
development {
dataSource {
dbCreate = "update"
url = "jdbc:postgresql://12.345.678.90/arquivo_postgre"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:h2:mem:testDb;MVCC=TRUE"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:postgresql://12.345.678.90/arquivo_postgre"
properties {
maxActive = -1
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
testOnBorrow=true
testWhileIdle=true
testOnReturn=true
validationQuery="SELECT 1"
}
}
}
}


Agradeço a quem puder ajudar ao resolver este problema.
Tags: Grails 2.0, PostgreSQL


0
Verifica a sua linha:
url = "jdbc:postgresql://12.345.678.90/arquivo_postgre"

'345' não é ip válido. vai ser algo entre 1 a 254. Ou coloca o hostname do servidor postgres.
Acredito que seja isso.
23/01/2012 19:54


0
Olá Castiel.
Este não é o IP verdadeiro e nem o username e password do banco são 'usuario' e 'senha'. É somente um exemplo para postar o código.

A conexão funciona corretamente no Grails 1.3.6 mas não estou conseguindo configurá-la no Grails 2.0.

O erro (descrito novamente abaixo) ocorre somente na conexão com o Postgresql. Cheguei a mudar o banco para o H2 padrão do Grails 2.0 e a aplicação rodou normal.


[Thread-6] ERROR context.GrailsContextLoader - Error executing bootstraps:
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 'lobHandlerDetector' while setting bean property
'lobHandler'; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'lobHandlerDetector':
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 PoolableConnectionFactory (A tentativa de conexão falhou.
Exceção: java.net.SocketException: Network is unreachable: connect
24/01/2012 02:46


0
tenta algo assim...

dataSource {
pooled = true
driverClassName = "org.hsqldb.jdbcDriver"
username = "sa"
password = ""
}
hibernate {
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.provider_class='net.sf.ehcache.hibernate.EhCacheProvider'
}
// environment specific settings
environments {
development {
dataSource {
//dbCreate = "create-drop" // one of 'create', 'create-drop','update'
//url = "jdbc:hsqldb:mem:devDB"

dbCreate = "update"
driverClassName = "org.postgresql.Driver"
username = "teste"
password = "senha"
url = "jdbc:postgresql://127.0.0.1/teste"

}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:mem:testDb"
}
}
production {
dataSource {
dbCreate = "update"
driverClassName = "org.postgresql.Driver"
username = "teste"
password = "senha"

url = "jdbc:postgresql://127.0.0.1/teste"
}
}


}
24/01/2012 16:00


0
Olá manthay.
Agradeço pelo código mas, infelizmente, não resolveu. A mensagem de erro continua a mesma.

24/01/2012 16:31


0
[RESOLVIDO]

Consegui a solução com a atualização do driver JDBC do PostgreSQL.
Não testei o driver antes porque ele estava funcionando na versão 1.3.6 do Grails.
Baixei o jar mais atual no link:
http://jdbc.postgresql.org/download.html
e a aplicação rodou no Grails 2.0
A versão do driver que estava usando era a postgresql-8.1-414.jdbc2ee e a atual é a postgresql-9.1-901.jdbc4.
24/01/2012 16:41



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto