Escolar Documentos
Profissional Documentos
Cultura Documentos
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
JCA
MainFrame
Servlet JSP
Response HttpServletResponse
Bancos de Dados
3
Continer EJB
o ambiente responsvel por gerenciar o ciclo de vida das instncias das classes bean(objetos EJB) dentro de um servidor de aplicaes.
Controle de Concorrncia
Conectividade Remota Gerenciamento de Segurana Autenticao (identificao do usurio) Autorizao (controle do que um usurio pode acessar) Comunicao (criptografia)
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
No so persistentes. So freqentemente utilizados para gerenciar as interaes entre os beans de entidade. Representam um fluxo de tarefa, um processo de negcio.
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
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.
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
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
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.
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
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
@Stateless public class AlunoBean implements AlunoRemote { @PersistenceContext(unitName = "teste") private EntityManager em; public int incluir(Aluno a) { em.persist(a); return a.getId(); } }
12
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
14
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.
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
16
<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
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
19
<!-- 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
<!-- Executa o cliente --> <target name="run.client" depends="ejbjar"> <java classname="cliente.ClienteAlunoEJB" fork="yes" dir="."> <classpath refid="classpath"/> </java> </target>
</project> 21
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