1. O que é EJB?
O EJB (Enterprise Java Beans) é uma tecnologia de componentes de aplicativos comerciais em Javaee e é um dos três principais componentes de Javaee (Servlet, JSP, EJB). O EJB fornece uma estrutura para permitir que os clientes usem objetos distribuídos remotos, simplificando bastante o desenvolvimento de aplicativos de nível corporativo com boa escalabilidade. A estrutura do componente EJB é uma estrutura de computação distribuída com base em componentes e é um componente em um sistema de aplicação distribuído.
O EJB é uma especificação da estrutura de serviço do lado do servidor Java e define uma especificação técnica para o sistema de componentes do lado do servidor. Esta especificação pode fornecer uma arquitetura padrão, distribuída e orientada a objetos. Ele bloqueia implementações funcionais subjacentes no nível do sistema complexas para desenvolvedores e usuários de componentes, permitindo que os desenvolvedores se concentrem na implementação da lógica de negócios, e alguns dos serviços complexos subjacentes são responsáveis pelos contêineres EJB. O EJB pode ser expandido de acordo com o crescimento do aplicativo, e o servidor EJB fornece funções de balanceamento de carga, bem como controle de acesso a recursos.
2. Comunicação entre contêiner EJB e componentes
Os contêineres EJB fornecem um ambiente operacional para os componentes EJB. A maneira como os contêineres EJB gerenciam EJBs é semelhante à forma como os contêineres da web gerenciam servlets. Os EJBs devem ser executados em contêineres EJB. Os contêineres EJB gerenciam principalmente a persistência do EJB, o gerenciamento do ciclo de vida, o gerenciamento de segurança, o gerenciamento de transações, a conexão remota, o processamento simultâneo, o agrupamento e o balanceamento de carga. O contêiner gerencia instâncias de componentes EJB, permitindo que os componentes EJB obtenham o máximo de desempenho e utilização da memória. O contêiner pode ativar e passar os componentes EJB, gerenciar pools de instância, etc. Os contêineres são responsáveis pelo gerenciamento de problemas complexos do processamento de transações distribuídas, gerenciando problemas de comunicação de baixo nível para conexões remotas e ocultando problemas de comunicação para desenvolvedores e clientes de componentes de EJB. Portanto, os desenvolvedores de componentes do EJB podem se concentrar em encapsular a lógica de negócios, e os contêineres são responsáveis por lidar com todas as outras transações. O EJB interage com os contêineres através de mecanismos como EJBContent, JNDJ, funções de retorno de chamada.
O JBoss é um contêiner e servidor que gerencia o EJB, suporta as especificações EJB1.1, EJB2.0 e EJB3 e geralmente está ligado ao tomcat ou ao cais.
Consulte a Figura 1 (o esquema de trabalho do contêiner EJB):
Figura 1: Princípio de trabalho do contêiner EJB
Um componente EJB é um objeto distribuído que, quando instanciado, pode se comunicar com aplicativos em outros espaços de endereço. A instância EJB é encapsulada em um objeto esqueleto, que se comunica com o cliente através de um objeto Stub. O stub não inclui lógica de negócios, mas implementa uma interface de negócios. Sempre que um método comercial na interface comercial do Stub é chamado, o stub envia uma mensagem de rede para a estrutura e informa quais métodos ele chamou. A estrutura chama o método correspondente da instância EJB e envia os resultados retornados pela instância do EJB para o stub, e o stub retorna esses resultados ao aplicativo correspondente. Através dos dois objetos intermediários, stubs e estruturas, o complexo processo de comunicação entre objetos distribuídos é bloqueado. A estrutura é implementada por contêineres, enquanto os stubs são gerados automaticamente por ferramentas de desenvolvimento, nenhuma das quais requer código de gravação. Por favor, veja a Figura 2 (esquema de comunicação de componentes EJB):
Figura 2: Princípio da comunicação entre os componentes EJB
3. Classificação EJB
Os componentes EJB podem ser divididos em dois tipos: feijão de sessão e feijão orientado a mensagens. O feijão da sessão encapsula a lógica de negócios. O cliente pode chamar os métodos de bean sessões por meio de serviços locais, remotos e da Web para acessar os aplicativos implantados no servidor, chamando assim os métodos de outros feijões. O feijão da sessão não é persistente, ou seja, seus dados não são salvos no banco de dados. Entre eles, o feijão da sessão inclui três tipos: feijão de sessão com estado, feijão de sessão sem estado e feijão de sessão de peça única. Os grãos orientados a mensagens são frequentemente usados como ouvintes para tipos específicos de mensagens, permitindo que o Javaee lide com mensagens assíncronas, e os clientes não acessam os grãos orientados a mensagens através de interfaces.
A seguir, apresentará o Bean Stateful Session, o feijão de sessão sem estado, o feijão de sessão de peça única e o feijão de sessão orientado por mensagens.
4. Bean de sessão sem estado
Os feijões de sessão sem estado fornecem apenas a lógica de negócios para os clientes e não mantêm o estado da sessão para os clientes. Quando o cliente chama o método de um feijão de sessão sem estado, as propriedades do feijão de sessão correspondente descreverão o status de chamada, mas manterão apenas esse status durante a chamada do método. Quando a chamada do método é concluída, o estado é liberado.
O ciclo de vida de um feijão de sessão sem estado é controlado pelo contêiner. Quando o contêiner EJB recebe a solicitação de um cliente para um feijão de sessão sem estado, se o EJB não existir, o contêiner criará uma instância do feijão, injetará os recursos necessários no componente e, em seguida, o contêiner chama de volta o método pós -construção e o componente é criado. Neste momento, o feijão transita do estado "não existe" para o estado da "existência". Quando a chamada do cliente é concluída, o contêiner chama de volta o método PREDESTROY e o feijão será destruído. Neste momento, o feijão será convertido do estado "existente" para o estado "não existente". Por favor, veja a Figura 3 (o ciclo de vida de um feijão de sessão sem estado):
Figura 3: Ciclo de vida de um feijão de sessão sem estado
5. Bean de sessão com estado
Um feijão de sessão com estado mantém um estado de sessão para o usuário. Ele não pode ser colocado no pool de componentes para que diferentes usuários compartilhem como um feijão de sessão sem estado. Para um feijão de sessão com estado, desde que um cliente envie uma solicitação, o contêiner cria uma instância correspondente ao cliente e um cliente corresponde a uma instância. Durante a vida inteira, o Bean de sessão com estado mantém as informações do usuário e, quando a sessão termina, o ciclo de vida da sessão com estado também termina.
Um feijão de sessão com estado tem três estados ativos: inexistência, ativa e passivação. Quando o feijão de sessão com estado estiver ativo por um período de tempo, se a solicitação do cliente externo ainda não for recebida, a fim de salvar os recursos do sistema, o contêiner serializará as informações do estado no feijão de sessão com estado no espaço de armazenamento temporário e removerá o feijão de sessão com estado da memória. Esse processo é chamado de "passivação". O contêiner chama de volta o método Preassivate antes da passivação. Quando o contêiner recebe uma solicitação de um feijão de sessão com estado que foi passivado, ele reinicializa a instância do feijão de sessão com estado e tira as informações de status do espaço temporário para devolvê -lo ao estado ativo. Esse processo é chamado de "ativação". Após a ativação, o contêiner chama de volta o método Proative. Quando a sessão com estado de Estado passar por um período de tempo, o contêiner limpará completamente a instância e relembra o método predestroy. Por favor, veja a Figura 4 (o ciclo de vida de um feijão de sessão com estado):
Figura 4: Ciclo de vida de um feijão de sessão com estado
6. Bean de sessão de sala única
Um feijão de sessão de peça única é instanciada uma vez para cada aplicativo e está sempre presente durante todo o ciclo de vida do aplicativo. Um feijão de sessão de peça única foi projetada para cenários específicos, e os clientes podem acessar esta instância EJB exclusiva em um modo compartilhado e simultâneo.
Um feijão de sessão de peça única é muito semelhante a um feijão de sessão sem estado. A diferença é que um feijão de sessão de peça única tem apenas uma instância no aplicativo, enquanto um feijão de sessão sem estado pode ter muitas instâncias, cada instância é colocada no pool de componentes para os usuários compartilharem.
Um feijão de sessão de peça única é como um feijão de sessão sem estado, nunca passivado. Seu ciclo de vida contém apenas dois tipos de corpos: "inexistência" e "existência". Por favor, veja a Figura 5 (o ciclo de vida de um feijão de sessão de peça única):
Figura 5: Ciclo de vida de um feijão de sessão de peça única
7. Bean acionado por mensagem
Os grãos orientados a mensagens são componentes projetados para lidar com solicitações baseadas em mensagens especificamente. Os grãos orientados a mensagens integram as funções do Java Message Service (JMS) e Enterprise Beans. O cliente não pode obter diretamente sua referência e chamar o método, mas só pode ser iniciado por mensagens do sistema.
Os contêineres EJB geralmente criam um pool de componentes de feijão acionado por mensagem. Semelhante aos grãos de sessão sem estado, os grãos orientados a mensagens nunca são passivados e seu ciclo de vida contém apenas dois estágios: inexistência e existência.
A classe de feijão orientada a mensagens deve implementar a interface Messagelistener. Quando o contêiner detecta uma mensagem na fila de que o feijão está ouvindo, ele chama o método onMessage () e passa a mensagem como um parâmetro.
O entendimento abrangente acima do EJB básico do J2EE é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.