| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2009 09:54:01
|
Edufa
JavaEvangelist
![[Avatar]](/images/avatar/5747a0021eb349e9c8d3667cf1a5e9ec.jpg)
Membro desde: 18/04/2006 10:20:03
Mensagens: 315
Localização: Curitiba, PR
Online
|
Tenho o seguinte código
Repositorio
Funciona ok, porém minha aplicação agora tem de acessar uma segunda base. Então eu teria duas SessionFactory, algo assim
Gostaria de saber se:
a) tem uma maneira de fazer isso já prevista?
b) caso contrário, quando o objeto 'CategoriasImpl' é criado o vraptor chama duas vezes o método getInstance, certo? Eu tenho como saber quem está chamando? se eu souber eu teria como retornar o SessionFactory certo...
[]s
PS. não fico feliz com isso, mas eu tenho de usar duas bases
|
Edufa
Curitiba, PR
--
"O estado sou eu". - Luís XIV
"O estado somos nós."- Lênin
"O estado somos eu." - Lula
--
O mundo é deles mas a amazônia é nossa
O petróleo é nosso, mas o gás é deles.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2009 10:00:31
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
provavlmente não tem.... tenta esse approche
mesma ideia para as sessions.... e assim por diante
This message was edited 1 time. Last update was at 20/10/2009 10:02:46
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2009 10:24:11
|
Edufa
JavaEvangelist
![[Avatar]](/images/avatar/5747a0021eb349e9c8d3667cf1a5e9ec.jpg)
Membro desde: 18/04/2006 10:20:03
Mensagens: 315
Localização: Curitiba, PR
Online
|
Funcionou
Valeu pela idéia não tinha visto essa possibilidade.
Criei um SessionFactoryCollection e um SessionCollection e usando o ComponentFactory do vraptor, injeto os dois no meu Factory [que cria os meus repositorios], e assim o factory passa as sessions para quem precisa de uma ou das duas e não precisei mexer em nada nos repositorios e todo mundo ficou feliz, ficou bem transparente.
[]s
|
Edufa
Curitiba, PR
--
"O estado sou eu". - Luís XIV
"O estado somos nós."- Lênin
"O estado somos eu." - Lula
--
O mundo é deles mas a amazônia é nossa
O petróleo é nosso, mas o gás é deles.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2009 12:26:55
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
Olá Edufa,
está programado pra gente fazer um jeito de ter duas componentFactories pro mesmo componente...
mas fica meio difícil decidir algo que fique usável (sem ter que anotar parâmetros de construtor, por exemplo)
De qualquer forma essa solução é boa =)
[]'s
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2009 14:35:18
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
|
Esta aqui:
http://github.com/caelum/vraptor/issues#issue/89
mas sera que solucoes como essa ja nao sao suficientes?
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2009 16:15:38
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
lucascs wrote:Olá Edufa,
está programado pra gente fazer um jeito de ter duas componentFactories pro mesmo componente...
mas fica meio difícil decidir algo que fique usável (sem ter que anotar parâmetros de construtor, por exemplo)
De qualquer forma essa solução é boa =)
[]'s
Nesse caso eu vejo uma solução bem mais simples. Ele pode criar uma classe wrapper para injetar a session que ele quiser. Até porque nesse exemplo do Lavieri sempre serão enjetados as duas. Pode haver casos que ele precise apenas de uma.
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2009 16:27:41
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
garcia-jj wrote:
lucascs wrote:Olá Edufa,
está programado pra gente fazer um jeito de ter duas componentFactories pro mesmo componente...
mas fica meio difícil decidir algo que fique usável (sem ter que anotar parâmetros de construtor, por exemplo)
De qualquer forma essa solução é boa =)
[]'s
Nesse caso eu vejo uma solução bem mais simples. Ele pode criar uma classe wrapper para injetar a session que ele quiser. Até porque nesse exemplo do Lavieri sempre serão enjetados as duas. Pode haver casos que ele precise apenas de uma.
na verdade não é injetado nenhuma das 2... é injetado um "Facade" de onde pode ser acessado a factory que desejar... factorys são ApplicationScoped, então tanto faz instanciar...
Quando chegar nas Session, é preciso só instanciar quando alguem der um getSession1() ou getSession2()
This message was edited 1 time. Last update was at 20/10/2009 16:28:46
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2009 16:46:42
|
Edufa
JavaEvangelist
![[Avatar]](/images/avatar/5747a0021eb349e9c8d3667cf1a5e9ec.jpg)
Membro desde: 18/04/2006 10:20:03
Mensagens: 315
Localização: Curitiba, PR
Online
|
@lucascs, @garcia-jj, @Paulo Silveira, @Lavieri
Realmente funcionou e resolveu o problema, mas no meu caso eu preciso ter as duas Sessions em quase todas as vezes, pq uma delas é para um base de logs então quase tudo é logado sendo assim em todas as requisições eu uso as duas sessions.
Já em outros casos não sei se essa saida resolverei tão bem e tão elegantemente.
Pensando alto, as situações.
[1] Situação:
Preciso sempre ou quase sempre de duas implementações e eu sei quando eu preciso de uma ou de outra,
Solução:
A solução do @Lavieri funciona.
[2] Situação:
Tenho de decidir se uso um ou outra implementação e isso será constante para o escopo
Solução:
no cookbook tem como fazer.
http://vraptor.caelum.com.br/cookbook/componentfactory-como-seletor-de-implementacoes/
[3] Situação
Tenho de decidir se uso um ou outra implementação e isso muda dentro do escopo
Solução:
não achei um exemplo, de qq forma acho q as duas soluções acima resolvem a maioria dos casos.
Nesse caso o getInstance(), tem de resolver se entrega uma ou outra implementação, ele teria de saber mais sobre quem está pedindo, com anotações por exemplo, sei lá, para poder instanciar a implementação correta .. pensando alto, rs
Não sou nenhum especialista no vraptor, se falei alguma besteira desconsiderem, rs
[]s
|
Edufa
Curitiba, PR
--
"O estado sou eu". - Luís XIV
"O estado somos nós."- Lênin
"O estado somos eu." - Lula
--
O mundo é deles mas a amazônia é nossa
O petróleo é nosso, mas o gás é deles.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2009 16:57:32
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
sabendo ou não sabendo, eu escreveria a Session assim
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
|
|