Vraptor 3 duas sessions factories  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
Edufa
JavaEvangelist
[Avatar]

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.
Lavieri
GUJ Master
[Avatar]

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/
[ICQ]
Edufa
JavaEvangelist
[Avatar]

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.
Lucas Cavalcanti
GUJ Hacker
[Avatar]

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

Paulo Silveira
Administrador
[Avatar]

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


[Email] [WWW]
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.
Lavieri
GUJ Master
[Avatar]

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/
[ICQ]
Edufa
JavaEvangelist
[Avatar]

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.
Lavieri
GUJ Master
[Avatar]

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/
[ICQ]
 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team