Acesso à base SQL Server com Grails
29/11/2012 19:51
0
Galera, apanhei um bocado para resolver desta forma e não sei se é a correta. Peço desculpas antecipadamente de qualquer gafe, pois sou iniciante.

Precisei conectar minha aplicação ao SQL Server (2008 R2) e, ao rodar a aplicação, sempre acusava que não conseguia carregar a classe com.microsoft.sqlserver.jdbc.SQLServerDriver.

Depois de muito pesquisar, apenas funcionou depois que fiz o seguinte:
1. No arquivo BuildConfig.groovy, acrescentei a linha:
runtime 'com.microsoft.sqlserver.jdbc:sqljdbc:4.0'
2. No arquivo que baixei da microsoft e coloquei na pasta lib do projeto, alterei o nome dele de "sqljdbc4jar" "sqljdbc-4.0.jar"

A linha inserida nas dependências, fui "tateando" para saber a sintaxe, pois não encontrei nada explicando a respeito, foi no chute mesmo.
Tags: SQLServer


1
Seu problema é na realidade de classpath. O que deve estar acontecendo é o seguinte: em algum dos jars referenciados pelos eu projeto há uma classe com o mesmo nome (talvez presente em um plugin) que esteja lhe causando estes problemas.

Minha sugestão: gere um war do seu projeto de maneira convencional e em seguida o descompacte em uma pasta qualquer. Faça uma busca por classes que tenham o mesmo nome do driver do SQL Server. Se encontrar mais de uma, já sabe o que rolou: o class loader está encontrando a classe errada.

Se mesmo assim o problema persistir, minha sugestão é você usar uma ferramenta com o Tattletale, que analisa o seu classpath em busca de conflitos. Depois da uma lida na documentação do projeto que pdoe ser acessada neste link: http://www.jboss.org/tattletale


0
Agradeço a resposta Henrique. Bem esclarecedora.

Tentarei proceder da forma que você indicou.


0
Luciano, o problema está no
runtime 'com.microsoft.sqlserver.jdbc:sqljdbc:4.0'
em seu BuildConfig.groovy.
De onde você tirou essa configuração "com.microsoft.sqlserver.jdbc:sqljdbc:4.0"? Ela não existe. Tentei aqui e o Grails não a encontrou. Assim, retire isso do teu BuildConfig.groovy.

Logo, apenas usar o JAR na tua lib resolve. Não há necessidade de renomeá-lo.


1
Olha pessoal eu uso esta : runtime "net.sourceforge.jtds:jtds:1.2.4"

Funciona 100% ;-)
30/11/2012 13:26


1
Eita não tinha prestado atenção é SQL Server 2008 eu uso no 2005, não sei se rola no 2008, no site diz que roda mas não sei a partir de que versão, eu uso esta aí para acessar o 2005.


Mas já é um começo, agora é só ver a versão e mudar aí no seu BuildConfig, caso não funcione com esta, segue abaixo as conf do DataSource.


dataSource {
dialect = org.hibernate.dialect.SQLServerDialect
driverClassName = 'net.sourceforge.jtds.jdbc.Driver'
username = 'sa'
password = '******'
url = 'jdbc:jTDS:sqlserver://10.0.0.3/BANCO'
}
30/11/2012 13:30


0
Bacana, Pedro. :) Melhor sempre fazer assim do que colar JARs na pasta lib.

Luciano, sugiro usar essa do Pedro. Dai deve tirar os JARs que baixou da sua pasta "lib".



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