Pergunta

quero criar um objeto sinlgetom cujo escopo seja basicamente apenas a solicitação. Isso será usado para coletar os erros e precisamos enviar o erro sempre que enviarmos uma resposta de volta.posso fornecer dicas sobre isso?eu também estou usando a primavera.

tentei usar a sessão ou solicitação de escopo de objeto singleton do contêiner Spring, mas ainda assim o objeto mu está mantendo valores da solicitação anterior

estou usando este objeto de erro com AspectJ..isso pode causar problemas na ligação estática

Foi útil?

Solução

Eu não tenho certeza de que Singleton é o que você quer aqui - se duas solicitações chegarem simultaneamente, compartilhariam o objeto Singleton, e seus erros serão misturados.

É possível criar um objeto para manter os erros e colocar isso em um objeto ThreadLocal.O escopo do objeto será restrito pela solicitação, e o acesso a ele no objeto ThreadLocal é facilmente alcançado a partir de dentro de sua inscrição sem ter que passar uma referenciamento ao objeto ao redor.

Outras dicas

que tal

//sync this code
if(request.getAttribute("someKey") == null){
     // create object and set it
}

Se você definir o ciclo de vida do objeto no recipiente de mola para ser por solicitação, então só deve existir para esse httPrequest.

Geralmente para recipientes de injeção direta como a mola quando você define o ciclo de vida do objeto ou escopo de objeto para ser por solicitação, então deve criar uma nova instância do objeto para cada solicitação HTTP que ele recebe.

Se não estiver fazendo isso, então eu suporia que é mais do que provável que algo a ver com sua configuração.

singleton é o Defualt para o recipiente de mola ao criar feijão, acho que você tem que definir especificamente o escopo de objeto para por solicitação.

escopos de feijão http://static.springsource.org/spring/docs/2.5.x / referência / beans.html

Você pode usar threadlocal .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top