Spring Brasil User Group

Fortalecendo a comunidade Spring no Brasil

Olá pessoal

Sou oriundo do Spring MVC 2.5 onde nossos controllers eram todos singleton, não utilizavamos nenhum framework de VIEW a não ser o proprio Spring e isto funciona muito bem.

Agora estou criando uma aplicação JSF 2.0 + Spring 3.0  onde comecei a utilizar no lugar dos controllers tradicionais do Spring o padrão do JSF, tenho atributos na classe BackingBean que não podem ser compartilhados entre os usuários, ou seja meu controller não pode mais ser singleton, gostaria de saber quais são as anotações corretas para utilizar os controllers para JSF 2.0 e Spring 3.0.

Estou com as seguintes dúvidas:

@Scope("request") ou @Scope("session") ?

Se usar somente @Controller vai ser padrão singleton certo?

Desde já agradeço.

Exibições: 152

Responder esta

Respostas a este tópico

Olá André,

No caso dos controles para o Spring MVC, realmente seriam singletons, mas não podemos deixar de esquecer que estes devem armazenar dados específicos do cliente num escopo web (request ou session, por exemplo). Neste caso, os controles tem acesso aos objetos HttpServletRequest e HttpSession para tal propósito e não podem usar atributos para guardar dados específicos do usuário. Contudo, no caso dos Managed Beans para o JSF, o objeto inteiro já deve ser específico para cada usuário. Então, o objeto inteiro teria que ficar num dos escopos Web para ter nos atributos dados específicos do usuário. Como vc mesmo já observou, use o escopo request ou session com a anotação @Scope.

[]'s
Spock
Muito Obrigado Spook, estava no caminho certo então.

Quando usar request ou session é o mesmo padrão JSF, cuidar para não usar tudo session certo? Preferir utilizar request no lugar de session, estou certo?

Até



Dr. Spock disse:
Olá André,

No caso dos controles para o Spring MVC, realmente seriam singletons, mas não podemos deixar de esquecer que estes devem armazenar dados específicos do cliente num escopo web (request ou session, por exemplo). Neste caso, os controles tem acesso aos objetos HttpServletRequest e HttpSession para tal propósito e não podem usar atributos para guardar dados específicos do usuário. Contudo, no caso dos Managed Beans para o JSF, o objeto inteiro já deve ser específico para cada usuário. Então, o objeto inteiro teria que ficar num dos escopos Web para ter nos atributos dados específicos do usuário. Como vc mesmo já observou, use o escopo request ou session com a anotação @Scope.

[]'s
Spock

Caros, eu sei que o tópico é antigo, mas vou aproveitar para tirar uma dúvida.

 

Também estou desenvolvendo uma aplicaçãoc om JSF2 e Spring 3. Estou anotando meus beans @Scope e @Named.

@Named("testeBean")

@Scope("session")

public class TesteBeanimplements Serializable {

    ...

}

Tudo funciona perfeitamente, exceto na inicialização do servidor. Aqui no meu ambiente de desenvolvimento, sempre que reinicio o servidor, várias instância de TesteBean são criada e, depois de um tempo, destruídas. Me parece que o tomcat ou o spring, tem um cached de sessões, mas elas não são destruídas nunca.

 

Vocês tem alguma idéia do que pode ser?

 

Grato

Responder à discussão

RSS

© 2012   Criado por Dr. Spock.   Ativado por .

Badges  |  Relatar um incidente  |  Termos de serviço