user/pass como parametros p/ Datasource.groovy [RESOLVIDO]
31/07/2009 00:00
0
Comecei a usar o grails a pouco tempo, achei muito bom
mas me deparei com um probleminha agora e não consigo encontrar uma solução especifica nos tópicos.

É o seguinte, a aplicação que estamos desenvolvendo usa um database que possui um sistema de auditoria por tras, ou seja, quem efetua um insert, delete, update, etc., tem seu usuário, data, hora, armazanado em log no sistema de auditoria.

Eu preciso que, quando o usuario efetue login no sistema, por exemplo, o LoginController chame uma nova instancia do DataSource passando o login e senha que o usuario inseriu no form como parametro para a conexão.

O problema é que o username e password ficam pré-definido no DataSource.groovy, ja procurei nos tópicos e em outros sites e não acho nenhuma solução que se encaixe. Li um pouco sobre JNDI, colocar no resources.groovy, etc., mas nada que trate do username e password.



Obrigado desde já!

Everton Horn
Tags: Grails


0
erhon,

Eu já trabalhei com um sistema desse tipo, e não recomendo. Para cada usuario era criado um user no banco de dados, se estivessem 100 usuarios conectados ao mesmo tempo eram 100 conexões ao banco, se o usuario sai e entra novamente o banco precisa criar uma nova conexão, coisa que é muito dispendiosa para o banco.
Acho que eu vi alguma coisa a respeito em algum lugar, de ter varias ds simultaneamente, se achar te falo.

Herrera
31/07/2009 00:00


0
valeu Herrera pelo reply.

O problema é que o sistema já existe, não tem como fazer diferente disso.
O banco de dados é Sybase e não há possibilidade de mudar, a gente já perdeu um mês tentando adaptar o framework cakephp pra funcionar com o Sybase, até que testamos o Grails, que funcionou de primeira tudo certo, com scaffold e tal..

Conexões simultâneas ao banco não é problema, ele já trabalha com até 250 conexões e nunca ultrapassou mais que 200.

Eu tentei algo do tipo "Sql.newInstace('url','usuario','senha','drivername')" mas não funcionou. Ainda não me aprofundei no groovy e também não tenho muito conhecimento em java..

Vou continuar procurando, não tenho como fugir desse problema.
O grails foi o framework que funcionou melhor com o Sybase e não posso perder mais tempo procurando/testando outros.

Com certeza alguém já passou por esse problema quando se trata de auditoria do banco de dados.

Fico no aguardo.
Sem mais por enquanto.
Valeu..

Everton Horn
31/07/2009 00:00


0
veja se dá certo, :

... abrindo a sessao do browser ...
def dataSource
...
dataSource.url = 'jdbc:db://new_server/schema'
dataSource.username = 'new_username'
dataSource.password = 'new_password'


.....qdo fechar sessao browser

dataSource.close()
01/08/2009 00:00


0
obrigado pela atenção denovo Herrera!

inseri o codigo que você passou no meu LoginController
dentro de um if() que verifica se o login no banco foi aceito

quando eu faço o login, me retorna a seguinte Exception:
"Cannot set property 'url' on null object"

ou seja, não tem nada no def dataSource
03/08/2009 00:00


0
a sua def dataSource está dentro ou fora da action ?

Herrera
03/08/2009 00:00


0
Perfeito ehron,

Como disse o Heron, para fazer o teste, o def dataSource tem que estar fora de todas as actions, lá em cima no escopo de classe.

Mesmo assim, sou totalmente contra esse tipo de sistema, onde você tem que ter N conexoes, definitivamente isso não é a saída. O correto e usado em 99.9999% dos casos é que a aplicação tenha o seu usuário, e você utilize um outro mecanismo de auditoria, até como o plugin de auditoria já pronto para o grails:

http://docs.codehaus.org/display/GRAILS/Grails+Audit+Logging+Plugin

[]s,
03/08/2009 00:00


0
hmm valeu Herrera, valeu Lucas!

Vou testar assim então, eu tinha colocado mesmo dentro de uma action.
Não faz mais de uma semana que estou lidando com o grails então estou bem por fora ainda.

Esse esquema da auditoria esta complicado, é um sistema acadêmico que a gente esta migrando do php puro pra um framework,
e o banco já é utilizado a um tempão.
Meu supervisor já disse que não tem como utilizar somente um usuário porque joga fora todo sistema de auditoria deles.

Vou dar uma olhada nesse plugin e conversar com o pessoal.

Valeu!
Qualquer coisa eu "dou um grito"! ^^



<!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Razz" /><!-- s:P -->
03/08/2009 00:00


0
Voltando aqui pra agradecer..

Funcionou certinho, era exatamente o que eu precisava.
A conexão não fica persistente, perfeito! Valeu!!

Mostrei para o meu supervisor aqui e vai ficar assim mesmo, ele falou que não tem problema em haver N conexões, assim não precisa gastar tempo implementando outro esquema de auditoria.

Obrigado!
Até!
04/08/2009 00:00



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