Como o Struts2 ValueStack cuida de vários pedidos?
CompreendoValueStack
foi introduzido no Struts2 e mais uma mudança do modelo Struts1 é agora um novoActionObject
é instanciado para cada solicitação. Assim, podemos definir variáveis de instância sem se preocupar com problemas de multitarefa. A maneira como os interceptores e JSPs acessam as variáveis de instância doActionObjects
é através doValueStack
. Mas o caminhoValueStack
é implementado (ou pelo menos usado pelo framework Struts2) é porValueStack
. para facilitar o acesso, para que não precisemos percorrer toda a árvore de objetos. Eu tenho as seguintes perguntas.
E se eu tiver objetos incorporados (hierarquia múltipla de objetos)? como o mecanismo de acesso se comporta nesse caso?
Se dissermos que 2 clientes fizeram pedidos para a mesma atuação ao mesmo tempo e o resultado da execução da Ação é diferente porque os insumos fornecidos por 2 clientes retornaram com 2 resultados diferentes. Digamos que minha classe de ação tenha um método para obter o melhor preço e, com base na lógica do serviço de back-end, os resultados são 10 e 12 para duas solicitações diferentes. AgoraActionClass
tem uma variável de membro chamada preço na qual esse valor será armazenado e o JSP resultanteshowResults.jsp
acessará essa variável (usando uma tag lib) para mostrar o preço. Como o framework struts2 garante que o client1 e o client2 obtenham a resposta correta de volta e os preços não sejam misturados enquanto a resposta é mostrada na JSP porque pelo que entendi oValueStack
apenas entra em primeiro na primeira saída (lógica da pilha). Assim, pode acabar retornando 10 para ambas as solicitações do cliente, pois a mesma variável é armazenada duas vezes (com o mesmo nome) na pilha de valores, mas com valores diferentes.
Quando é que oValueStack
destruir o objeto da sua lista?