Trocar o Banco de dados com a aplicação rodando
11/01/2013 10:47
0
Feliz 2013 Pessoal


Estou pensando em fazer uma aplicação porém gostaria de criar uma opção de mudar o bando de dados.
Ex: inicia a aplicação o banco de dados padrão é
url = "jdbc:postgresql://127.0.0.1:5432/empresaA"
ai quero mudar para
url = "jdbc:postgresql://127.0.0.1:5432/empresaB"

porém isso sem reiniciar a aplicação é possível?

Abraços
Fernando
Tags: Trocar, Bando de dados, Conexão, postgresql


0
Olá Fernando.

Qual versão do Grails você está utilizando?

Você gostaria de alterar o banco de dados único da aplicação ou que cada usuário (Empresa A, Empresa B) que acessasse a aplicação utilizasse um banco de dados diferente?
11/01/2013 14:15


0
Olá Arisales


A 2° Opção


Pois vou ter uma unica aplicação rodando porem dependendo do login da empresa ele trabalha com um banco de dados diferente


0
Uso o Grails 2.2


0
dá uma olhada na documentação oficial... pareceu bem sussa

http://www.grails.org/doc/latest/guide/single.html#multipleDatasources
17/01/2013 17:13


0
Mussatto

Obrigado pela resposta mas não é bem isso que eu preciso vou tentar explicar melhor..

Tenho uma aplicação já desenvolvida, esta por sua vez será usada por vários clientes (empresa A, B, C....) Então como vai ter muita informação gerada, gostaria que cada uma delas tivesse seu próprio banco de dados. Pensei em algo assim http:\ip:8080\nomeEmpresa\Controller mas ai fica a pergunta de como setar o DataSource.groovy dependendo da empresa que esta logando. sem ter que por um .war no servidor para cada empresa.

Agradeço


0
Então,

Eu pensei que pudesse fazer alguma coisa do tipo:

Lá no model (usando mesmo do exemplo do site do grails)

class ZipCode {
String code

static mapping = {
datasources(['lookup', 'auditing'])
}
}


Dae no servico


def findById(String nomeDaEmpresa, id){
def dataSource =""
if(nomeDaEmpresa=="empresaA")
dataSource = "lookup"
else if(nomeDaEmpresa=="empresaB")
dataSource = "auditing"

ZipCode.dataSource.findById(id)
}
21/01/2013 12:02


0
Poderia também colocar o nomeDaEmpresa na sessão do cara quando ele loga

Quando tinha que lidar com multiplos dataSources (não era em grails, mas a idéia é a mesma) unificamos o banco de login separado e lá tinha uma tabela que dizia para qual banco o usuário ia
Uma tabela de/para

mas aí vai da lógica que você implementar
21/01/2013 12:06


0
Mussatto

Então a sua ideia até funciona mas imagine que para cada novo cliente eu teria que refazer um novo deploy da aplicação não seria muito funcional e o código ficaria meio "ruim" concorda.

são mais de 100 empresas não seria legal encher de ifs :)


se eu conseguisse algo do tipo alterar o DataSource via rum time tipo assim

No controller de autenticação guardaria a variável na sessão ai

faria algo assim url = "jdbc:postgresql://127.0.0.1:5432/"+variável


porém não sei se é possível


0
ah tá

entendi

os datasources não são definidos também...........

aí complica
putz, não sei dizer nesse caso
21/01/2013 15:56


0
Talvez com um banco de config.... e um serviço de criar o dataSource =P

mas tem q pesquisar como injetar o datasource
21/01/2013 15:57



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