Você está na página 1de 22

Curso de Linguagem Java

EJB Enterprise JavaBeans

Referncia Bibliogrfica:

Enterprise JavaBeans 3.0 Bill Burke & Richard Monson Editora. Prentice Hall Tutorial do J2EE Bodoff Green Haase Jendrock - Pawlan Stearns Editora Campus Revista JavaMagazine edies 8, e 47 Tutorial da Sun sobre JavaEE http://java.sun.com/javaee/5/docs/tutorial/doc/

Aplicaes MultiCamadas
Camada Cliente Aplicao Desktop / Web
Camada Web
Request HttpServletRequest

Camada de Negcios

Camada EIS

Servidor de Aplicaes / Servidor Web

JCA

MainFrame

HTML XML JavaScript Applet

Servlet JSP

Response HttpServletResponse

JPA / JDBC EJB

Aplicaes Java Desktop

Bancos de Dados
3

EJB Enterprise JavaBeans

EJB Enterprise JavaBean


Componente de software padro executado no lado servidor (camada de negcios) que encapsula a lgica que atende s necessidades de um domnio de negcios. utilizado na criao de aplicaes corporativas distribudas desenvolvidas com a tecnologia Java.

Continer EJB
o ambiente responsvel por gerenciar o ciclo de vida das instncias das classes bean(objetos EJB) dentro de um servidor de aplicaes.

Servidor de Aplicaes JavaEE


Sistema que deve implementar os seguintes servios:

Enterprise JavaBeans (EJB) Continer EJB

Java Persistence (JPA)


Java Message Service (JMS) Java Transaction Service/Java Transaction API (JTS/JTA) Servlets e JavaServer Pages (JSP) Continer Web

Java Naming and Directory Interface (JNDI)


4

EJB Enterprise JavaBeans


Disponibiliza tambm entre outros recursos:

Pool de Instncias EJB Pool de Conexes a Bancos de Dados

Controle de Concorrncia
Conectividade Remota Gerenciamento de Segurana Autenticao (identificao do usurio) Autorizao (controle do que um usurio pode acessar) Comunicao (criptografia)

Quando usar EJB em suas aplicaes

Quando a aplicao deve ser escalvel, tanto por possuir um nmero crescente de usurios, como a aplicao pode estar distribuda em mltiplas mquinas.
Quando transaes so necessrias para garantir a integridade dos dados. Quando a aplicao possuir um alto nmero de clientes. Como a lgica de negcio fica nos componentes no lado servidor, a manuteno facilitada. 5

EJB Enterprise JavaBeans

Os trs tipos bsicos de Enterprise JavaBeans:

Beans de Entidadade Entity Beans (JPA-Entity)

So persistentes, representam o modelo persistente de dados. So gerenciados pelo servio EntityManager.

Beans de Sesso Session Beans

No so persistentes. So freqentemente utilizados para gerenciar as interaes entre os beans de entidade. Representam um fluxo de tarefa, um processo de negcio.

Beans baseados em mensagens Message Driven Beans

Recebem e processam mensagens assincronamente. So utilizados na interao com outros aplicativos atravs de um servio de mensagens (JMS). No possuem interfaces Local, nem Remota. Normalmente implementam a interface MessageListener, implementando assim o mtodo onMessage() onde se localiza a lgica de negcio.
6

EJB Enterprise JavaBeans

Beans de Sesso Session Beans

Stateful SessionBean (Beans de sesso com informaes de estado)

Mantm o estado conversacional entre as chamadas de um cliente para o servidor, o que permite manter dados especficos ao cliente entre invocaes de mtodo. uma extenso do aplicativo cliente. No so mantidos em um pool de instncias.

Stateless SessionBean (Beans de sesso sem informaes de estado)

No mantm nenhum estado conversacional entre o cliente e o servidor. So mantidos em um pool de instncias. Possuem um desempenho maior que os beans de sesso com informaes de estado. So utilizados para realizar tarefas que sejam realizadas em uma nica chamada de mtodo.
7

EJB Enterprise JavaBeans

Componentes de um aplicativo que utiliza SessionBean.

Interfaces Remota e/ou Local

Interface remota Anotada com @javax.ejb.Remote Define quais os mtodos que um cliente tem permisso para invocar. Interface local Anotada com @javax.ejb.Local Define quais os mtodos que um outro EJB pode invocar dentro da mesma JVM.

Classe do Bean

Anotada com @javax.ejb.Sateless ou @javax.ejb.Stateful Contm a lgica de negcio, implementando os mtodos descritos nas interfaces remota e/ou local e opcionalmente as interfaces de negcio.

Cliente Remoto

Aplicao que se conecta ao servidor EJB. Por meio da API JNDI, ele localiza a interface remota do EJB a ser utilizado e atravs da referncia dessa interface aciona os mtodos remotos do componente EJB. 8

Instalao e configurao do JBoss


Baixe o JBoss no site http://jboss.com/products/jbossas/downloads Para Windows, baixe o arquivo jems-installer-1.2.0.GA.jar e execute-o. Na tela de configurao do tipo de instalao, selecione a opo EJB3.

Instalao e configurao do JBoss

Nas demais telas, apenas clique em next, selecionando assim as opes padro. Para iniciar o servidor, basta executar o arquivo de lote run.bat na pasta bin do diretrio de instalao. Para encerrar o servidor, pressione <Ctrl><C> no prompt de comandos onde o servidor est sendo executado ou execute o arquivo de lote shutdown.bat com a opo -S. Acesso o endereo http://localhost:8080 para verificar a instalao. aconselhvel que se crie uma varivel de ambiente JBOSS_HOME contendo o caminho do diretrio de instalao do JBoss.

10

EJB Enterprise JavaBeans

Construo da aplicao exemplo usando JBoss

Crie um novo projeto Java e adicione no classpath os arquivos jboss-ejb3x.jar e ejb3-persistence que se encontram na pasta: %JBOSS_HOME%/client/ Torne a classe modelo.Aluno serializvel. Pois os objetos dessa classe iro trafegar pela rede. Crie no pacote negocio.ejb a Interface Remota AlunoRemote. Adicione o projeto que contm a classe modelo.Aluno no buildpath.

package negocio.ejb; import javax.ejb.*; import modelo.Aluno; @Remote public interface AlunoRemote { public int incluir(Aluno a); }

Interface Remota

11

EJB Enterprise JavaBeans


Crie no pacote negocio.ejb a classe do bean AlunoBean package negocio.ejb; import modelo.Aluno; Classe do Bean import javax.persistence.*; import javax.ejb.*;

@Stateless public class AlunoBean implements AlunoRemote { @PersistenceContext(unitName = "teste") private EntityManager em; public int incluir(Aluno a) { em.persist(a); return a.getId(); } }
12

EJB Enterprise JavaBeans


Crie no pacote cliente a classe ClienteAlunoEJB package cliente; import modelo.*; import negocio.ejb.*; Cliente import javax.naming.*; import java.util.*;

Remoto

public class ClienteAlunoEJB { public static void main(String[] args) { Configurao do Contexto JNDI (dependente do servidor) try { Properties prop = new Properties(); prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.NamingContextFactory"); prop.put(Context.PROVIDER_URL, "localhost:1099"); InitialContext jndiContext = new InitialContext(prop); Object ref = jndiContext.lookup("AlunoBean/remote"); AlunoRemote refBean = (AlunoRemote) ref; 13

EJB Enterprise JavaBeans


Aluno a = new Aluno(); a.setNome("Jos"); a.setRa(987654321); a.setMs1(7.5); a.setMs2(6.0); int id = refBean.incluir(a); System.out.println("Id do aluno inserido " + id); } catch (NamingException ex) { ex.printStackTrace(); } } }

14

EJB Enterprise JavaBeans

Implantao da aplicao. Os arquivos Aluno.class, AlunoBean.class, AlunoRemote.class e o persistence.xml sero empacotados em um arquivo .jar e implantados no diretrio de deploy do servidor JBoss.

Para se executar a aplicao, algumas configuraes devero ser efetuadas previamente:


Criao de uma Fonte de Dados para o Banco MySQL.

Criao do arquivo persistence.xml.


Criao de um arquivo de build (build.xml) para automatizar a implantao atravs do aplicativo Apache Ant.
15

EJB Enterprise JavaBeans

Configure o JBoss para fazer conexo com o MYSQL. Crie o arquivo testedb-ds.xml na pasta %JBOSS_HOME%/server/default/deploy

<?xml version="1.0" encoding="UTF-8"?> <datasources> Fonte de Dados <local-tx-datasource> <jndi-name>TesteDS</jndi-name> <connection-url> jdbc:mysql://localhost:3306/uniban </connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>admin</password> </local-tx-datasource> </datasources>

Configurao da

Copie o driver JDBC do MySQL para a pasta %JBOSS_HOME%/server/default/lib

16

EJB Enterprise JavaBeans


Crie o arquivo persistence.xml na pasta META-INF em seu projeto. Configurao do persistence.xml <persistence>

<persistence-unit name="teste"> <jta-data-source>java:/TesteDS</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit> </persistence>

17

EJB Enterprise JavaBeans

Crie o arquivo build.xml na pasta raiz do seu projeto. Criao do arquivo de build

<?xml version="1.0"?> <project name="ExemploAlunoEJB" default="ejbjar" basedir="."> <property environment="env"/> <property name="src.dir" value="${basedir}"/> <property name="jboss.home" value="${env.JBOSS_HOME}"/> <property name="build.dir" value="${basedir}/build"/> <property name="build.classes.dir" value="${build.dir}/classes"/> <!-- Local onde esto as classes persistentes --> <property name="modelo" value="/JavaProg/ProjetoJPA/modelo"/>

18

EJB Enterprise JavaBeans


<!-- Construo do classpath --> <path id="classpath"> <fileset dir="${jboss.home}/server/default/lib"> <include name="*.jar"/> </fileset> <fileset dir="${jboss.home}/server/default/deploy/ejb3.deployer"> <include name="*.jar"/> </fileset> <fileset dir="${jboss.home}/server/default/deploy/jboss-aop-jdk50.deployer"> <include name="*.jar"/> </fileset> <fileset dir="${jboss.home}/lib"> <include name="*.jar"/> </fileset> <fileset dir="${modelo}"> <include name="*.class"/> </fileset> <pathelement location="${build.classes.dir}"/> </path> <property name="build.classpath" refid="classpath"/>

19

EJB Enterprise JavaBeans


<!-- Prepara o diretrio de build --> <target name="prepare" > <mkdir dir="${build.dir}"/> <mkdir dir="${build.classes.dir}"/> <mkdir dir="${build.classes.dir}/modelo"/> <copy file="${modelo}/Aluno.class" todir="${build.classes.dir}/modelo"/> </target>

<!-- Compila os arquivos de cdigo fonte --> <target name="compile" depends="prepare"> <javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" deprecation="on" optimize="off" includes="**"> <classpath refid="classpath"/> </javac> </target>
20

EJB Enterprise JavaBeans


<!-- Cria o arquivo jar e o implanta no servidor de aplicaes--> <target name="ejbjar" depends="compile"> <jar jarfile="build/alunoEJB.jar"> <fileset dir="${build.classes.dir}"> <include name="modelo/*.class"/> <include name="negocio/ejb/*.class"/> </fileset> <fileset dir="${basedir}/"> <include name="META-INF/persistence.xml"/> </fileset> </jar> <copy file="build/alunoEJB.jar" todir="${jboss.home}/server/default/deploy"/> </target>

<!-- Executa o cliente --> <target name="run.client" depends="ejbjar"> <java classname="cliente.ClienteAlunoEJB" fork="yes" dir="."> <classpath refid="classpath"/> </java> </target>
</project> 21

EJB Enterprise JavaBeans


Abra uma janela do prompt de comando. Mude o diretrio corrente para a pasta raiz do seu projeto. Implante a aplicao digitando o comando. > ant Inicie o servidor de aplicaes JBoss executando o arquivo run.bat na pasta %JBOSS_HOME%/bin Execute o cliente remoto digitando o comando > ant run.client

22

Você também pode gostar