UM ESTUDO UTILIZANDO O ENTERPRISE JAVABEANS (EJB) Matheus Cardoso A.Silva1, Jaime William Dias1 1 Universidade Paranaense (UNIPAR) – Paranavaí – PR – Brasil [email protected], [email protected] Resumo. Este artigo constitui de uma descrição de como funciona o componente Enterprise JavaBeans, abordando suas principais características e os benefícios que ele propõe ao desenvolvedor. O EJB é um componente que auxilia o desenvolvedor em aplicações por possuir nele lógica de negócio, e também por ser portável podendo reutiliza-lo em outras aplicações. 1. Introdução O Enterprise JavaBeans (EJB) é um componente da plataforma J2EE e foi desenvolvida pela Sun Microsystens, e tem como função de encapsular a lógica de negócio de uma aplicação na camada web de um contêiner EJB [ORACLE, 2012]. Os benefícios gerados com a utilização do EJB em uma aplicação é que além dele ser portável o desenvolvedor não precisa desenvolver a lógica de negócio ou banco de dados, por que o EJB já contém lógica de negócio [ORACLE, 2012]. Session beans representa um conjunto de processos da lógica de negócio. Existem três tipos de session: stateful, stateless e singleton. O stateful mantem seu estado aberto enquanto durar a sessão EJB/cliente, pois o cliente interage com EJB, assim determinado estado de conversação, no stateless ele não mantem um estado conversacional com o cliente, pois dura somente enquanto ele estiver sendo executando um método, o singleton é instanciado apenas uma vez por aplicação, sendo muito parecido com o stateful [ORACLE, 2012]. O message-draven bean é um tipo de EJB que permite aplicações J2EE processar mensagens assincronamente, parecido com um listener, ele é acessado através de um serviço de mensagens Java Message Service (JMS) mediante ao recebimento de uma mensagem vinda do cliente assincronamente via stateless [ORACLE, 2012]. O objetivo deste artigo visa mostrar como o funciona o componente Enterprise JavaBeans, empregada no desenvolvimento de uma aplicação web. 2. O que é Enterprise JavaBeans? Enterprise JavaBeans (EJB) é um componente da plataforma J2EE e foi desenvolvida pela Sun Microsystens, sendo uma arquitetura de componentes de um servidor que encapsula a lógica de negócio de uma aplicação. A logica de negócio é um código que preenche os objetivos da aplicação na camada web de um contêiner EJB [ORACLE, 2012]. A Figura1: mostra a como funciona as características do Enterprise JavaBeans. Figura 1. Mostra detalhadamente as funcionalidades do EJB [MINDPROD, 2013]. 3. Benefícios do Uso de EJBs Os benefícios do uso do EJB implicam diretamente no desenvolvimento de uma aplicação assim: [ORACLE, 2012] O desenvolvedor se concentra em resolver problemas de negócio. O contêiner EJB faz os serviços de gestão como transações e autorizações de segurança; O desenvolvedor da aplicação pode concentrar na apresentação, pois o EJB contém a lógica de negócios assim não precisando desenvolver regras de negócio ou banco de dados de acesso, tornado a aplicação mais leve; O EJB é portável, assim podendo reutilizar em outras aplicações. 4. Session Beans Session beans representa um conjunto de processos de lógica de negócio que pode ser chamada por um cliente de maneira local, remota ou via web service. Existem três tipos de session bean sendo: [ORACLE, 2012] Stateful: as instâncias do session bean tem um estado de conversação que são mantidos nos métodos e operações. Stateless: as instâncias do session bean não contem nenhuma conversação entre os métodos qualquer instância pode ser usada para qualquer usuário. Singleton: a instância do session bean é única e é compartilhado entre todos os usuários e suporta acesso simultâneo. 4.1 Session Stateful O session stateful mantem as informações de um estado entre um cliente e o EJB, mantendo-se aberto enquanto durar a conexão entre eles, assim determinando um estado de conversação. Então: [ORACLE, 2012]. O estado de um determinado EJB mantem interação entre o EJB e um usuário somente enquanto a conexão estiver aberta; O EJB necessita manter as informações do usuário entre a chamada dos métodos. A Figura2: mostra como o cliente1 no primeiro método de negócio recebe „A1‟ até o cliente completar a chamada do método, a sessão ira usar a mesmo bean instanciado trabalho em seu estado. Figura2. Mostra um exemplo de como funciona do session stateful [THEOPENTUTORIALS, 2012]. 4.2 Session Stateless Este EJB não mantem não matem informações de uma sessão ou usuário na chamada de um método. Dessa forma o stateless proporciona melhor desempenho que o stateful, porque cada instância do session stateless pode ter vários usuários e o stateful um de cada vez. Este tipo de session se sobressai melhor em aplicações que requerem um número grande de clientes. Assim: [ORACLE, 2012] Faz uma única chamada de métodos, assim o EJB realiza uma tarefa para todos os clientes; O EJB implementa um web service; A Figura3 mostra como vários clientes pode obter a mesma instância, porém não ao mesmo tempo. Por exemplo, o cliente3 pode instanciar „A3, após a conclusão o pedido do cliente4 também pode ser atribuído „A3‟. Figura3. Mostra um exemplo de como funciona o session stateless [ THEOPENTUTORIALS, 2012]. 4.2 Session Singleton Foi criado somente na versão 3.1 do EJB, ele é instanciado apenas uma vez por aplicação que existe durante o seu ciclo de vida. Foi desenvolvido para quanto uma única instância do EJB é compartilhada e concorrentemente acessada por clientes. É parecido com um o EJB session stateful, porem a instancia é única. É utilizado quando: [ORACLE, 2012] O estado tem que ser mantido durante a execução da aplicação; Um único EJB precisa ser acessado por múltiplos threads concorrentemente A Figura4 mostra o singleton recebendo uma requisição somente depois de ler e atualizar esta uma requisição, sendo instanciado uma única vez. Figura 4. Mostras mostra o singleton sendo instanciado uma única vez [OREILLY, 2010]. 5. Message-draven Bean São EJBs que permitem a aplicações J2EE processar mensagens assincronamente parecido com um listener, porém ele não recebe um evento e sim mensagens da aplicação [ORACLE, 2012]. O Massage-draven Bean é acessado através de um serviço de mensagens (JMS), enviando mensagens ao messageListener. Eles são mediante ao recebimento de uma mensagem vinda do cliente assincronamente via stateless [ORACLE, 2012]. Quando uma mensagem chega ao contêiner chama o método onmessage do message-driven bean, depois chama os métodos auxiliares helper methods processando de maneira transacional, esse tipo de EJB não é acessado via interface como session beans, possuindo apenas uma classe bean [ORACLE, 2012]. 6. Metodologia A metodologia do trabalho apresentado foi realizada através de pesquisa bibliográfica onde foram levantadas as informações sobre o conhecimento, desempenho e eficiência do framework EJB. 7. Conclusão O componente EJB supre suficientemente no desenvolvimento de uma aplicação por torna-la mais fácil, não necessitando desenvolver regras de negócio por já vim em conjunto com componente. Este artigo abordou como funcionam o componente EJB e quais são os seus benefícios de sua utilização, assim conclui-se que este componente contribuiu no desenvolvimento da aplicação tornando a mais fácil por ser conter a lógica de negócio e ser portável e flexível em sua utilização. O objetivos do sistema foram suprido devido aos benefícios gerados com a utilização da tecnologia Enterprise JavaBeans, pois o tempo economizado no controle das transações contribuirão para o sucesso do sistema, assim superando as expectativas do mesmo. Referencias ORACLE “Understanding Oracle WebLogic Server” disponível http://docs.oracle.com/cd/E24329_01/web.1211/e24446/ejbs.htm#CIHEFECG em MINDPROD (2012) “Enterprise Java Beans” http://mindprod.com/jgloss/ejb.html acessado em 15 de julho de 2013. THEOPENTUTORIALS, 2012 “session stateful” http://theopentutorials.com/wpcontent/uploads/stateful-session-bean-state-management_1946/stateful-session-beanstate-management.jpg?5b264b acessado 15 de julho de 2013. THEOPENTUTORIALS, 2012 “session stateless” http://theopentutorials.com/wpcontent/uploads/stateless-session-bean-pooling_1983/stateless-session-beanpooling.jpg acessado em 15 de julho de 2013. OREILLY, 2010 “session stateless” http://answers.oreilly.com/uploads/monthly_10_2010/post-2018-128828011196.jpg acessado em 26 de julho de 2013.