Академический Документы
Профессиональный Документы
Культура Документы
Definio
A arquitetura Enterprise JavaBeans uma arquitetura de componentes para o desenvolvimento e a implantao de aplicativos de negcio distribudos baseados em componentes. Aplicativos escritos utilizando a arquitetura Enterprise JavaBeans so escalonveis, transacionais e seguros com multiusurios. Esses aplicativos podem ser escritos uma vez e ento implantados em qualquer plataforma de servidor que suporta a especificao Enterprise JavaBeans Sun Microsystems
Definio simplificada
Definio simplificada: Modelo padro de componentes do lado do servidor para aplicativos de negcio distribudos Modelo prprio para a construo de componentes do lado do servidor que representam processos do negcio Componentes distribudos mquinas diferentes
J na JEE7.
Desde o EJB 3.0 a persistncia deixou de fazer parte da plataforma, passando a ser especificada a parte Java Persistence API JPA JPA uma abstrao superior API JDBC
Os objetos so mapeados em tabelas de banco dados, de modo que possam ser consultados, carregados, atualizados ou removidos sem que necessrio utilizar a API JDBC Mapeia objetos Java simples e comuns (POJOs Plain Old Java Objects) Beans de Entidade
Alm do suporte a objetos distribudos baseados em RMI, o EJB suporta tambm um sistema de mensagens assncronas
Uma mensagem um pacote autocontido de dados do negcio e cabealhos de roteamento de rede Mensagens assncronas podem ser transmitidas entre um aplicativo e outro em uma rede, utilizando o MessageOriented Middleware MOM MOM assegura tolerncia a falhas, escalabilidade, balanceamento de carga e suporte a transaes
Embora cada fornecedor de um MOM utilize formatos e protocolos diferentes, a semntica bsica a mesma e uma API Java utilizada para criar, enviar e receber mensagens O EJB integra a funcionalidade do MOM ao seu modelo de componentes A partir do EJB 3.0 existe o suporte ao sistema de mensagens assncronas por meio do Java Message Service JMS Bean Orientados a Mensagens (MDB)
Web Services
Tendncia na computao distribuda Aplicativos modulares autodescritos e autocontidos que podem ser publicados, localizados e invocados pela Web
Desde o EJB 3.0, permitido o desenvolvimento de Servios Web atravs da API JAX-WS
E no EJB 3.1 permite tambm o desenvolvimento de aplicaes REST atravs da API JAX-RS.
Bean de Entidade
Os beans de entidade na especificao Java Persistence 1.0 esto disponveis como POJOs e so mapeados para tabelas de bancos de dados As entidades podem ser alocadas, serializadas e enviadas pela rede, diferentemente dos EJBs Os beans de entidade espelham os objetos do mundo real
Bean de Entidade
Definir uma classe bean Qual atributo funcionar como identificador? Fornece um identidade classe bean Pode conter lgica do negcio, mas normalmente define as informaes necessariamente persistentes
Classe bean
Bean de Entidade
A classe bean um POJO que no tem de implementar nenhuma interface e nem mesmo ser serializvel Deve ser sinalizada com a anotao @javax.persistence.Entity Deve ter um campo ou mtodo getter que designado como a chave primria, com a anotao @javax.persistence.Id
Bean de Entidade
Para interagir com beans de entidade, a Java Persistence API fornece o EntityManager
Todo acesso s entidades passa por este servio Este, fornece uma API de consulta e mtodos de ciclo de vida para a entidade
Os beans de entidade so agrupados em um conjunto finito de classes chamado unidade de persistncia O servio EntityManager gerencia uma unidade de persistncia especfica Uma unidade de persistncia deve estar associada a um banco de dados particular Informaes essas armazenadas em um descritor de implantao (persistence.xml)
Acessados utilizando vrios protocolos de objetos distribudos (RMI-IIOP) So extenses do aplicativo que gerenciam processos ou tarefas
Processam mensagens assincronamente a partir de sistemas como o JMS
Interfaces
Define os mtodos do bean de sesso que so acessveis por aplicativos de fora do continer Define os mtodos do bean de sesso acessveis apenas por outros beans executando na mesma JVM Define os mtodos de negcio que so acessveis por aplicativos fora do continer por meio de SOAP
Beans de Sesso
EJB 3.1
Beans de Sesso
Contm a lgica de negcio Gerenciam as interaes entre os beans de entidade Metfora da pea de teatro
Beans de Sesso
Stateless
Bean sem estado conversacional @javax.ejb.Stateless
2.
Stateful
Bean com estado conversacional @javax.ejb.Stateful
3.
Singleton
Presente a partir do EJB 3.1 @javax.ejb.Singleton
Stateless
No mantm nenhum estado conversacional Pode ser compartilhado entre vrios clientes Todas as informaes necessrias a um mtodo so passadas por parmetros Como no guarda informao de estado no requer passivao e ativao A exceo regra, so as informaes obtidas do:
(1) SessionContext, (2) JNDI ENC, ou (3) referncias ao ambiente injetadas no bean.
Exemplo: ProcessPayment
Cenrio:
Utilizado primariamente para o pagamento de passagens num sistema de agncia de turismo Compartilhado por vrias aplicaes que cobram servios do cliente Os pagamentos so registrados em uma tabela do banco de dados chamada de PAYMENT Vrias formas de pagamento podem ser utilizadas: carto de crdito, cheque e dinheiro
Exemplo: ProcessPayment
Exemplo: ProcessPayment
Um bean de sesso sem informao de estado tem uma ou mais interfaces de negcio Uma interface de negcio pode ser remota ou local
Interfaces remotas so capazes de receber invocaes de mtodos de cliente da rede Interfaces locais esto disponveis dentro da mesma JVM Mtodos: byCredit(), byCash() e byCheck() Ter duas interfaces diferentes: uma local e uma remota
Exemplo: ProcessPayment
Exemplo: ProcessPayment
Exemplo: ProcessPayment
Cada mtodo de negcio do ProcessPayment EJB recebe um bean de entidade como um parmetro Como os beans de entidade so POJOs podem ser serializados pela rede desde que implementem a interface java.io.Serializable ou Externalizable.
Exemplo: ProcessPayment
Exemplo: ProcessPayment
Exemplo: CheckDO
Exemplo: ProcessPaymentBean
Exemplo: ProcessPaymentBean
Exemplo: ProcessPaymentBean
Exemplo: ProcessPaymentBean
Exemplo: ProcessPaymentBean
SessionContext
Fornece uma visualizao do ambiente do continer EJB interface com o continer EJB
Obter informaes sobre o contexto da chamada de invocao do mtodo Acesso vrios servios EJB
Stateful
uma extenso do Cliente; Realiza tarefas em favor de um s cliente e mantm o estado relacionado a ele; Esse estado chamado Conversacional pois representa uma conversa contnua entre o Cliente e o SB;
Stateful
Se o cliente no utilizar o SB antes dele expirar, sua instncia destruda e a referncia ele invalidada; Isso evita que o SB permanea por muito tempo depois que um cliente terminar de us-lo;
Does Not Exist : da mesma forma que no stateless; Method-Ready : quando o bean pode servir solicitaes de um cliente; Passivated: quando o bean est inativo no est servindo solicitaes do cliente;
@Remote public interface TravelAgentRemote{ public Customer findOrCreateCustomer(String first, String last); public updateAddress(Adress addr); public void setCruiseID(int creuise); public void setCabinID(int cabin); public TicketDO bookPassage(CreditCardDO card, double price) throws IncompleteConversationState; }
// imports @Stateful public class TravelAgentBean implements TravelAgentRemote{ @PersistenceContext(unitName = titan) private EntityManager entityManager; @EJB private ProcessPaymentLocal process; private Customer customer; private Cruise cruise; private Cabin cabin;
O mtodo seguinte bookPassage utiliza o estado conversacional acumulado pelos mtodos anteriores para processar a reserva do cliente. Utiliza o bean ProcessPayment e as entidades Reservation, Customer, Cabin e Cruise Realiza as seguintes operaes: (i) Cria um novo objeto Reservation, Persiste o objeto Reservation, debita no carto utiliazando o bean ProcessPayment EJB e gera um novo ticket.
Permite compartilhar estado entre mltiplas instncias de um componente enterprise bean ou entre mltiplos componentes enterprise bean na aplicao.
@Singleton public class PropertiesBean { private Properties props; private int accessCount = 0; public String getProperty(String name) { ... } public int getAccessCount() { ... } }
Necessrio controlar:
Dois mecanismos:
O container controla a concorrncia baseado em anotaes ao nvel de mtodo Container habilita acesso total a instncia e delega ao desenvolvedor a responsabilidade de controle
@Lock(READ)
@Lock(Write)
@AccessTimeout(value=1,unit=SECONDS)
Exemplo:
@DependsOn
Exemplo:
Uma classe de um session bean, ou mtodos individuais, podem ser anotados com @javax.ejb.Asynchronous Mtodos assncronos podem retornar void, ou uma instncia de java.util.concurrent.Future<V>.
O cliente pode consultar a instncia do Future procurando o resultado a qualquer momento posteriormente, mas o resultado da invocao devolvido imediatamente thread do cliente, e no bloqueia.
@javax.ejb.Stateless public CarHotelAndAirLineBookingServiceBean implements CarHotelAndAirLineBookingService { @javax.ejb.Asynchronous public Future bookCarHotelAndAirLine( Car rental, Hotel hotel, AirLine airLine) { /** ... */ }
Bibliografias
A Sampling of EJB 3.1 http://blogs.sun.com/enterprisetechtips/entry/a_samp ling_of_ejb_3 Enterprise JavaBeans 3.1 (EJB 3.1) Technology Overview TS-4605. http://developers.sun.com/learning/javaoneonline/j1s essn.jsp?sessn=TS-4605&yr=2009&track=javaee BURKE, Bill and MONSON, Richard. Enterprise Java Beans 3.0, 2007. JEE 6
http://www.oracle.com/technetwork/java/javaee/tech/index .html