Pergunta

quando dizem que o controlador de acção no âmbito struts é multi threaded, que significa que existem várias instâncias do servlet tomar a solicitação e encaminhá-lo ao modelo. Ou isso significa que há uma única instância de tomar todos os pedidos? Quaisquer visuais será apreciado

Foi útil?

Solução

De acordo com a maioria dos outros servlets, um segmento separado é criado para processar cada solicitação. Você tem que implementar a interface SingleThreadedModel para obter uma nova instância do servlet para cada solicitação.

Outras dicas

http://struts.apache.org/1.x/ Userguide / building_controller.html

O controlador servlet Struts cria apenas uma instância de sua classe de Acção, e usa esse exemplo para atender a todas as solicitações. Assim, você precisa escrever as classes Action thread-safe. Siga as mesmas diretrizes que você usaria para escrever Servlets thread-safe. Aqui estão duas orientações gerais que irão ajudar você a escrever, aulas de Ação thread-safe escaláveis:

  • Apenas variáveis ??uso local - O princípio mais importante que ajuda na codificação thread-safe é usar apenas variáveis ??locais, variáveis ?? não da instância , na sua acção classe. As variáveis ??locais são criados em uma pilha que é atribuído (por sua JVM) para cada thread de solicitação, por isso não há necessidade de se preocupar com a compartilhá-los. Uma ação pode ser tidos em conta vários métodos locais, desde que todas as variáveis ??necessárias são passados ??como parâmetros do método. Esta segurança assegura fio, como a JVM lida com essas variáveis ??usando internamente a pilha de chamadas que está associado com um único segmento.

  • Recursos Conserve - Como regra geral, a alocação de recursos escassos e mantê-los nas solicitações do mesmo usuário (na sessão do usuário) pode causar problemas de escalabilidade. Por exemplo, se seu aplicativo usa JDBC e você alocar uma conexão JDBC separada para cada usuário, você provavelmente vai correr em alguns problemas de escalabilidade quando o seu site de repente aparece no Slashdot. Você deve se esforçar para usar piscinas e liberação de recursos (como conexões de banco de dados) antes de encaminhar o controle para o componente de visualização apropriada - mesmo se um método de feijão de ter chamado lança uma exceção.

struts 1 não é thread-safe; mas como para Strus 2, é uma instância por pedido.

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