Mindmap
EJB - Temas de Discursivas
Inhalt der Mindmap
EJB - Temas de Discursivas
O que são?
- EJB é um dos principais componentes da plataforma Java EE. Eles são executados em um container EJB no lado do servidor. A principal característica do EJB é a rapidez em desenvolver soluções, pois, ele fornece um conjunto de componentes prontos, o que torna o desenvolvimento eficiente. Entretanto, nem sempre foi assim. Antes da versão 3.0 do EJB, existia uma grande dificuldade devido à complexidade na utilização desta tecnologia, com destaque para o uso de configurações em arquivos XML ao invés de anotações.
- EJB é um dos principais componentes da plataforma Java Enterprise Edition (Java EE) para desenvolvimento de sistemas corporativos. Com ele é possível criar aplicações modulares, separar suas funcionalidades e as reutilizar de forma simples e objetiva. Ao utilizar EJB é possível construir aplicações distribuídas, totalmente seguras e com um eficaz tratamento de transações.
- EJB é isso, um conjunto de soluções integradas e centralizadas para suprir os problemas de desenvolvimento de softwares. Utilizando EJB, o desenvolvedor pode se concentrar mais na regra de negócio e nas exigências do cliente, em vez de se preocupar com códigos de infraestrutura.
O que fornecem?
- O EJB fornece poderosas ferramentas que permitem desenvolver aplicações complexas e de alto desempenho, onde o desenvolvedor foca sua atenção na lógica de negócio ao invés de se preocupar tanto com situações periféricas, porém não menos importantes.
- O EJB oferece serviços de persistência de dados, controle de concorrência, envio de mensagens, serviço de agendamento, chamadas a métodos remotos e a web services.
- RMI
- RMI (Remote Method Invocation), uma das APIS integradas utilizadas pelo EJB, que faz acesso remoto a outros componentes de forma simples, sendo possível acessar componentes que estão em outros containers, em qualquer lugar do mundo.
- JTA
- O EJB também utiliza a JTA (Java Transaction API), uma poderosa API responsável por gerenciar as transações de forma transparente.
- JAAS
- A JAAS (Java Authentication and Authorization Service) é uma API que fornece serviço de segurança a aplicações Java EE, e o EJB também faz uso dela, de forma simples e intuitiva.
- Java Mail
- Com EJB também é possível utilizar a API Java Mail, que pode ser integrada ao servidor de aplicação para simplificar o envio de e-mails. Ademais, os componentes EJBs oferecem uma excelente integração com a camada web.
- JPA
- A JPA (Java Persistence API) é uma das mais importantes APIs que integram o framework e faz com que o EJB tenha um forte e poderoso mecanismo de persistência de dados.
Porque utilizar?
- Um bom motivo para utilizar EJB é o fato de o desenvolvimento ser simples e rápido, devido aos poderosos recursos disponíveis. Um EJB é basicamente um POJO (Plain Old Java Objects), ou seja, uma simples classe Java que recebe algumas anotações, e com isso se torna um importante componente. Para desenvolver um sistema utilizando EJBs, não existe a necessidade real de entender a fundo o que o EJB faz por trás das anotações, o desenvolvedor precisa saber apenas utilizá-las.
- Além disso, o EJB é mantido pela JCP (Java Community Process), o que torna a API do EJB pública e garante um longo futuro para a tecnologia. Existem ainda grandes empresas que dão apoio ao EJB, por exemplo, IBM, Oracle, JBoss, entre outras. Além do apoio, elas lançam no mercado diversas ferramentas que estimulam a concorrência e aumenta assim o valor do EJB no mundo corporativo.
Container EJB
- O container EJB é responsável por prover serviços e recursos especiais para seus componentes. A ação de colocar a aplicação EJB dentro de um container é chamada de implantação, ou deploy. Uma vez implantado e o servidor inicializado, os componentes passam a ter acesso aos diversos recursos oferecidos pelo container.
- Imagine um container EJB como uma JVM poderosa que fornece diversos serviços para as aplicações EJB.
Componentes EJB
- Os componentes EJB são classes Java onde são desenvolvidas as lógicas de negócio da aplicação. Estas classes, por sua vez, podem ser corporativas ou de persistência de dados. No EJB, existem três tipos de componentes: Beans de Sessão, MDB (Message-Driven Bean) e Entity. Os beans de sessão e os MDBs são responsáveis por conter as lógicas de negócio corporativas, enquanto as entities possuem toda a lógica de persistência.
- Session Beans
- Os beans de sessão são os componentes mais utilizados no EJB, pois são neles que a maioria da lógica corporativa é desenvolvida. Os beans de sessão podem ser acessados de duas formas: local ou remota; utilizando as anotações @Local ou @Remote, respectivamente. Quando o bean for anotado como @Local, significa que ele só poderá ser acessado por requisições originárias do próprio container em que o bean é executado. Já a anotação @Remote diz que o bean pode ser acessado de forma remota, ou seja, pode ser acessado por qualquer cliente, em qualquer container de qualquer parte do mundo.
- Stateless
- Os beans de sessão do tipo stateless são responsáveis por conter operações que não necessitam durar mais do que uma chamada. Eles devem ser invocados, processados e, se necessário, retornar o resultado para o chamador. Em outras palavras, como chamado no EJB, um bean de sessão sem estado.
- O container EJB controla a quantidade de instâncias do componente do tipo stateless automaticamente conforme a necessidade. As instâncias ficam em um pool de beans e são invocadas sempre que há uma solicitação. Após sua utilização ela volta para o pool e fica disponível para uma próxima chamada. É importante dizer que, uma vez que a instância do bean stateless esteja em uso, ela não pode ser utilizada ao mesmo tempo por outro usuário. Assim, somente após voltar para o pool, é que ela pode ser usada em outra solicitação.
- No dia a dia os beans de sessão stateless podem ser utilizados para o desenvolvimento de componentes úteis de conversão de dados, componentes que possuem métodos para manipulação de Strings, e componentes que executem chamadas para inserir ou realizar uma busca no banco de dados, por exemplo.
- Stateful
- Os beans de sessão do tipo stateful são responsáveis por conter operações que necessitam durar mais do que uma chamada, ou seja, que após a execução do componente o estado dos objetos modificados seja mantido. Em outras palavras, como é chamado no EJB, um bean de sessão com estado.
- A exemplo dos beans de sessão sem estado, o container EJB também controla as instâncias do bean com estado, porém com algumas diferenças. A primeira é que uma vez criada uma instância para um usuário, ela não é em nenhum momento utilizada por outras requisições de usuários diferentes, pelo simples motivo que o estado do componente é mantido, e se outro usuário tivesse acesso às mesmas instâncias, logo teria acesso também aos dados contidos nelas.
- No entanto, o EJB dispõe de um recurso que permite que o desenvolvedor libere a instância do componente ligado ao usuário, quando esta não for mais utilizada. Para fazer isso, basta colocar a anotação @Remove em um método. Assim, quando este método for invocado e concluído, a instância em questão será excluída pelo container EJB.
- Em situações reais para o uso do componente stateful, pode-se listar um site de compras, onde o usuário pode adicionar itens ao seu carrinho de compras e depois voltar a navegar pelo site e efetuar várias requisições que os itens escolhidos permanecem salvos no carrinho do usuário. Sem o uso do bean Stateful este recurso de salvar o item na memória não seria simples de ser desenvolvido.
- Singleton
- O bean de sessão do tipo Singleton foi uma das novidades da versão 3.1 do EJB. Como já citado, os beans do tipo Stateless duram apenas uma requisição e os Stateful duram várias requisições de um mesmo usuário. Já o tipo Singleton é criado apenas uma vez e disponível para todos os usuários do container EJB. Deste modo, qualquer alteração feita em um componente Singleton estará visível para todos os usuários da aplicação.
- Outra funcionalidade disponível nos beans de sessão Singleton são as anotações @ReadOnly e @ReadWrite, que dizem ao container se o bean é imutável ou se ele pode sofrer alterações, respectivamente.
- Imagine um sistema online, onde o administrador em determinadas ocasiões tem a necessidade de exibir mensagens para todos os usuários logados no sistema. Ao utilizar um componente singleton que contém uma lista de Strings, por exemplo, o administrador pode inserir as mensagens e todos os usuários terão acesso, pois haverá sempre uma única instância presente no container EJB.
- Entity Beans
- Message Driven Beans
O que é uma anotação?
- A grande melhoria que o EJB sofreu a partir de sua versão 3.0, foi a possibilidade de usar anotações ao invés de fazer toda a configuração em arquivos XML. Mas o que seria uma anotação e pra que ela serve? A anotação no EJB é uma forma de dizer para o container para fazer alguma coisa. Sempre que uma classe, interface, método ou atributo possuir alguma anotação, o container irá executar uma série de instruções de forma transparente para atender o seu propósito, lembrando que toda anotação é precedida de ‘@’. Por exemplo, para injetar um componente EJB, utiliza-se a anotação @EJB sobre o componente em questão. Quando o container ler a anotação @EJB, ele irá efetuar uma série de procedimentos como, por exemplo, ir até o pool de beans, obter um bean que esteja disponível e retorná-lo para a aplicação.
Injetando Componentes
- No desenvolvimento de aplicações Java, uma simples classe é instanciada com a utilização da palavra reservada new. No EJB é diferente! Não é necessário instanciar nenhum componente. Este trabalho pertence ao container EJB, que cria algumas instâncias de forma transparente e as deixa disponíveis no pool de beans, como já citado anteriormente. É necessário apenas injetar a instância no código, com a anotação @EJB. A partir do momento em que um componente é injetado, a aplicação pode usufruir-se, de forma transparente, de vários recursos importantes do EJB, como por exemplo, o controle de transações, concorrência, controle de memória, entre outros.
Métodos callback
- Os métodos callback do EJB são um grande aliado na construção de componentes distribuídos, pois permite ao desenvolvedor tomar ações em determinados momentos de seu ciclo de vida. Eles são invocados pelo container em situações específicas durante o ciclo de vida de um componente. Com eles é possível implementar lógicas de negócio em determinadas fases do componente, como por exemplo, abrir uma conexão com o banco de dados sempre que um componente for criado ou liberar um recurso sempre que uma instância for destruída pelo container. Para declarar um método callback a única coisa necessária é colocar uma anotação no método desejado. Os métodos callback são analisados a seguir.
- Os callbacks @PostConstruct e @PreDestroy podem ser usados para os três tipos de componentes do EJB: stateless, stateful e singleton.
- @PostConstruct
- O método que possuir a anotação @PostConstruct será invocado sempre que o container criar uma nova instância do componente EJB. Este método pode ser usado para abrir uma conexão com o banco ou inicializar determinado processo.
- @PreDestroy
- O método anotado com @PreDestroy será invocado pelo container EJB momentos antes da instância do componente ser destruída. Assim, é possível criar lógicas para liberação de recursos ou mesmo fechar uma conexão com o banco de dados.
- Métodos de Passivação
- Conforme mencionado anteriormente, uma instância de componente Stateful atende somente a um usuário e armazena todas as informações de sua sessão. Com isso, é acumulada uma grande quantidade de instâncias no servidor, o que sobrecarregará a memória. Para amenizar este problema, o container EJB, de forma totalmente transparente e automática, aplica um recurso chamado de passivação, que consiste em retirar um componente da memória que não esteja em uso e guardá-lo em disco, liberando memória no servidor. Se o usuário invocar qualquer método deste componente que se encontra passivado, o container imediatamente recupera a instância e a coloca de volta na memória.
- Os dois tipos de métodos callbacks a seguir são invocados durante este processo de passivação.
- Os callbacks @PrePassivate e @PostActivate podem ser usados somente para componentes do tipo stateful.
- @PrePassivate
- O método anotado com @PrePassivate será invocado antes do componente EJB sofrer o processo de passivação. Assim é possível implementar lógicas para liberar recursos ou executar alguma funcionalidade propícia.
- @PostActivate
- O método que possuir a anotação @PostActivate será invocado após um componente EJB ser resgatado do disco e voltar para a memória. Este processo também é chamado de ativação.
Bilder und Dateien der Mindmap
Informationen
- Beschreibung
- Concursos Públicos Desenvolvimento de Software (EJB e JDBC) Mindmap am EJB - Temas de Discursivas, erstellt von Luis Felipe Guariento am 01/12/2021.
- Erstellt von
- Luis Felipe Guariento
- Aufrufe
- 0
- Bewertung