Pergunta

feijão apátridas em Java não manter seu estado entre duas chamadas do cliente. Assim, em poucas palavras, poderíamos considerá-los como objetos com métodos de negócio. Cada método tem parâmetros e resultados de retorno. Quando o método é chamado algumas variáveis ??locais estão sendo criados na pilha de execução. Quando o método retorna os moradores estão removido da pilha e se alguns objetos temporários foram alocados são lixo coletado de qualquer maneira.

Da minha perspectiva, que não difere da chamada do método da mesma instância única por threads separados. Então, por que não pode um uso recipiente uma instância de um feijão em vez de reunir um número deles?

Foi útil?

Solução

Pooling faz várias coisas.

One, por ter um feijão por exemplo, você está garantido para ser tópicos de segurança (Servlets, por exemplo, não são thread-safe).

Dois, você reduzir qualquer tempo de inicialização potencial que um feijão pode ter. Enquanto Session Beans são "apátridas", eles só precisam de ser apátrida com relação ao cliente. Por exemplo, em EJB, você pode injetar vários recursos do servidor para um bean de sessão. Esse estado é privado para o feijão, mas não há nenhuma razão você não pode mantê-lo de invocação a invocação. Então, reunindo feijão-lo a reduzir essas pesquisas apenas acontecer quando o bean é criado.

Três, você pode utilizar a piscina de feijão como um meio para o tráfego do acelerador. Se você só tem 10 Feijão em uma piscina, você está indo só para obter a maioria dos 10 pedidos que trabalham simultaneamente, o resto vai ser na fila.

Outras dicas

Pooling melhora o desempenho.

Uma única instância manipulação de todos os pedidos / threads iria levar a um monte de contenção e bloqueio.

Uma vez que você não sabe qual instância será utilizada (e vários tópicos poderia usar uma única instância ao mesmo tempo), o feijão deve ser threadsafe.

O recipiente pode gerenciar o tamanho piscina com base na atividade real.

O transacionalidade do modelo Java EE usa o contexto do thread para gerir o ciclo de vida da transação.

Esta simplificação existe para que não é necessário para implementar qualquer interface específica para interagir com o objeto UserTransaction diretamente; quando a transação é recuperado do InitialContext (ou injetado no bean de sessão) que está vinculado a uma variável de segmento local para reutilização (por exemplo, se um método em seu bean de sessão sem chama outro bean de sessão sem que também usa uma transação injetado. )

Ciclo de vida dos beans de sessão Statelesss são doesnot existir, passiva e MethodReady (Passive ou Inativo) otimizar state.To em perormance, em vez de percorrer o feijão durante toda de criar o método de estado de pronto, contêiner gerencia o feijão entre ativo e estados passivos através das chamadas de retorno de contêineres -. ejbActivate () e ejbPassivate () existe por gerenciar o pool de feijão

sreenut

Métodos, por natureza, são thread-safe (incluindo estática). Por quê? Simples, porque todas as variáveis ??dentro do método é criado na memória de pilha, ou seja, todas as variáveis ??usadas dentro do método é criado por chamada (não é compartilhado). No entanto, os parâmetros não são parte da pilha.

No entanto, um método não é seguro se ele usa uma variável inseguro:

a) chamar um campo estático ou variável. No entanto, isso acontece em cada caso.

b) chamando um recurso que é compartilhado. Tal como o EntityManager.

c) passar um parâmetro que não é seguro.

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