1 análise e projeto orientados a objetos marcos mendes 1º semestre - 2008

23
1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

Upload: lorenzo-losada

Post on 07-Apr-2016

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

1

Análise e Projeto Orientados a Objetos

Marcos Mendes

1º Semestre - 2008

Page 2: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

2

EJB – Enterprise JavaBeans

Referência Bibliográfica: Enterprise JavaBeans 3.0 Bill Burke & Richard Monson Editora. Prentice Hall Tutorial do J2EE Bodoff – Green – Haase – Jendrock - Pawlan – Stearns Editora Campus Revista JavaMagazine edições 8, e 47 Tutorial da Sun sobre JavaEE

http://java.sun.com/javaee/5/docs/tutorial/doc/

Page 3: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

3

Aplicações MultiCamadasCamadaCliente

Camada Web Camada EIS

Bancos de Dados

RequestRequestHttpServletRequestHttpServletRequest

ResponseResponseHttpServletResponseHttpServletResponse

HTMLXMLJavaScriptApplet

Servlet JSP

MainFrame

Servidor de Servidor de Aplicações / Aplicações /

Servidor Servidor WebWeb

Aplicação Desktop / Web

JCA

EJB

Camada deNegócios

JPA / JDBC

Aplicações JavaDesktop

Page 4: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

4

EJB – Enterprise JavaBeans EJB – Enterprise JavaBean

Componente de software padrão executado no lado servidor (camada de negócios) que encapsula a lógica que atende às necessidades de um domínio de negócios. É utilizado na criação de aplicações corporativas distribuídas desenvolvidas com a tecnologia Java.

Contêiner EJBÉ o ambiente responsável por gerenciar o ciclo de vida das instâncias das classes bean(objetos EJB) dentro de um servidor de aplicações.

Servidor de Aplicações JavaEESistema que deve implementar os seguintes serviços:

Enterprise JavaBeans (EJB) – Contêiner EJB Java Persistence (JPA) Java Message Service (JMS) Java Transaction Service/Java Transaction API (JTS/JTA) Servlets e JavaServer Pages (JSP) – Contêiner Web Java Naming and Directory Interface (JNDI)

Page 5: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

5

EJB – Enterprise JavaBeansDisponibiliza também entre outros recursos:

Pool de Instâncias EJB Pool de Conexões a Bancos de Dados Controle de Concorrência Conectividade Remota Gerenciamento de Segurança

Autenticação (identificação do usuário) Autorização (controle do que um usuário pode acessar) Comunicação (criptografia)

Quando usar EJB em suas aplicações Quando a aplicação deve ser escalável, tanto por possuir um número

crescente de usuários, como a aplicação pode estar distribuída em múltiplas máquinas.

Quando transações são necessárias para garantir a integridade dos dados.

Quando a aplicação possuir um alto número de clientes. Como a lógica de negócio fica nos componentes no lado servidor, a manutenção é facilitada.

Page 6: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

6

EJB – Enterprise JavaBeans Os três tipos básicos de Enterprise JavaBeans:

Beans de Entidadade – Entity Beans (JPA-Entity)São persistentes, representam o modelo persistente de dados. São gerenciados pelo serviço EntityManager.

Beans de Sessão – Session BeansNão são persistentes. São freqüentemente utilizados para gerenciar as interações entre os beans de entidade. Representam um fluxo de tarefa, um processo de negócio.

Beans baseados em mensagens – Message Driven Beans Recebem e processam mensagens assincronamente. São utilizados na interação com outros aplicativos através de um serviço de mensagens (JMS). Não possuem interfaces Local, nem Remota. Normalmente implementam a interface MessageListener,MessageListener, implementando assim o método onMessage()onMessage() onde se localiza a lógica de negócio.

Page 7: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

7

EJB – Enterprise JavaBeans Beans de Sessão – Session Beans

Stateful SessionBean (Beans de sessão com informações de estado)Mantém o estado conversacional entre as chamadas de um cliente para o servidor, o que permite manter dados específicos ao cliente entre invocações de método. É uma extensão do aplicativo cliente. Não são mantidos em um pool de instâncias.

Stateless SessionBean (Beans de sessão sem informações de estado)Não mantém nenhum estado conversacional entre o cliente e o servidor. São mantidos em um pool de instâncias. Possuem um desempenho maior que os beans de sessão com informações de estado. São utilizados para realizar tarefas que sejam realizadas em uma única chamada de método.

Page 8: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

8

EJB – Enterprise JavaBeans Componentes de um aplicativo que utiliza

SessionBean. Interfaces Remota e/ou Local

Interface remotaAnotada com @[email protected] quais os métodos que um cliente tem permissão para invocar.

Interface localAnotada com @[email protected] quais os métodos que um outro EJB pode invocar dentro da mesma JVM.

Classe do BeanAnotada com @[email protected] ou @[email protected]ém a lógica de negócio, implementando os métodos descritos nas interfaces remota e/ou local e opcionalmente as interfaces de negócio.

Cliente RemotoAplicação que se conecta ao servidor EJB. Por meio da API JNDI, ele localiza a interface remota do EJB a ser utilizado e através da referência dessa interface aciona os métodos remotos do componente EJB.

Page 9: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

9

Instalação e configuração do JBoss Baixe o JBoss no site

http://jboss.com/products/jbossas/downloads Para Windows, baixe o arquivo jems-installer-jems-installer-

1.2.0.GA.jar1.2.0.GA.jar e execute-o. Na tela de configuração do tipo de instalção, selecione a

opção EJB3EJB3.

Page 10: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

10

Instalação e configuração do JBoss Nas demais telas, apenas clique em next, selecionando

assim as opções padrão. Para iniciar o servidor, basta executar o arquivo de lote

run.batrun.bat na pasta bin do diretório de instalação. Para encerrar o servidor, pressione <Ctrl><C><Ctrl><C> no prompt de comandos onde o servidor está sendo executado ou execute o arquivo de lote shutdown.batshutdown.bat com a opção --SS.

Acesso o endereço http://localhost:8080http://localhost:8080 para verificar a instalação.

É aconselhável que se crie uma variável de ambiente JBOSS_HOMEJBOSS_HOME contendo o caminho do diretório de instalação do JBoss.

Page 11: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

11

EJB – Enterprise JavaBeans Construção da aplicação exemplo usando JBoss

Crie um novo projeto Java e adicione no classpath os arquivos jboss-ejb3x.jarjboss-ejb3x.jar e ejb3-persistenceejb3-persistence que se encontram na pasta: %JBOSS_HOME%/client/%JBOSS_HOME%/client/

Torne a classe modelo.Alunomodelo.Aluno serializável. Pois os objetos dessa classe irão trafegar pela rede.

Crie no pacote negocio.ejbnegocio.ejb a Interface Remota AlunoRemoteAlunoRemote. Adicione o projeto que contém a classe modelo.Aluno no

buildpath.package negocio.ejb;import javax.ejb.*;import javax.ejb.*;import modelo.Aluno;@Remote@Remotepublic interface AlunoRemoteAlunoRemote {

public int incluirincluir(Aluno a);}

Interface Remota

Page 12: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

12

EJB – Enterprise JavaBeans Crie no pacote negocio.ejbnegocio.ejb a classe do bean AlunoBeanAlunoBeanpackage negocio.ejb;import modelo.Aluno;import javax.persistence.*;import javax.ejb.*;import javax.ejb.*;

@Stateless@Statelesspublic class AlunoBeanAlunoBean implements AlunoRemoteAlunoRemote {

@PersistenceContext(unitName = "teste")@PersistenceContext(unitName = "teste")private EntityManager em;private EntityManager em;public int incluirincluir(Aluno a) {em.persist(a);return a.getId();}

}

Classe do Bean

Page 13: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

13

EJB – Enterprise JavaBeans Crie no pacote clientecliente a classe ClienteAlunoEJBClienteAlunoEJBpackage cliente;import modelo.*;import negocio.ejb.*;import javax.naming.*;import javax.naming.*;import java.util.*;

public class ClienteAlunoEJB {public static void main(String[] args) {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);InitialContext jndiContext = new InitialContext(prop);Object ref = jndiContext.lookup("AlunoBean/remote");Object ref = jndiContext.lookup("AlunoBean/remote");AlunoRemote refBean = (AlunoRemote) ref;AlunoRemote refBean = (AlunoRemote) ref;

Cliente Remoto

Configuração do Contexto JNDI (dependente do servidor)

Page 14: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

14

EJB – Enterprise JavaBeansAluno 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();}

}}

Page 15: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

15

EJB – Enterprise JavaBeans Implantação da aplicação.

Os arquivos Aluno.classAluno.class, AlunoBean.classAlunoBean.class, AlunoRemote.classAlunoRemote.class e o persistence.xmlpersistence.xml serão empacotados em um arquivo .jar e implantados no diretório de deploy do servidor JBoss.Para se executar a aplicação, algumas configurações deverão ser efetuadas previamente:

Criação de uma Fonte de Dados para o Banco MySQLMySQL. Criação do arquivo persistence.xmlpersistence.xml. Criação de um arquivo de build (build.xml) para

automatizar a implantação através do aplicativo Apache AntApache Ant.

Page 16: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

16

EJB – Enterprise JavaBeans Configure o JBoss para fazer conexão com o MYSQL.

Crie o arquivo testedb-ds.xmltestedb-ds.xml na pasta %JBOSS_HOME%JBOSS_HOME%/server/default/deploy%/server/default/deploy

<?xml version="1.0" encoding="UTF-8"?>

<datasources> <local-tx-datasource> <jndi-name>TesteDSTesteDS</jndi-name> <connection-url>

jdbc:mysql://localhost:3306/unibanjdbc:mysql://localhost:3306/uniban </connection-url>

<driver-class>com.mysql.jdbc.Drivercom.mysql.jdbc.Driver</driver-class> <user-name>rootroot</user-name> <password>adminadmin</password> </local-tx-datasource></datasources> Copie o driver JDBC do MySQL para a pasta

%JBOSS_HOME%/server/default/lib%JBOSS_HOME%/server/default/lib

Configuração da Fonte de Dados

Page 17: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

17

EJB – Enterprise JavaBeans Crie o arquivo persistence.xmlpersistence.xml na pasta META-INFMETA-INF

em seu projeto.

<persistence><persistence-unit name="testeteste">

<jta-data-source>java:/TesteDSjava:/TesteDS</jta-data-source> <properties>

<property name="hibernate.hbm2ddl.auto" value="update"/>

</properties></persistence-unit>

</persistence>

Configuração do persistence.xml

Page 18: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

18

EJB – Enterprise JavaBeans Crie o arquivo build.xmlbuild.xml na pasta raiz do seu projeto.

<?xml version="1.0"?><project name="ExemploAlunoEJBExemploAlunoEJB" 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 estão as classes persistentes --><!-- Local onde estão as classes persistentes --> <property name="modelo"

value="/JavaProg/ProjetoJPA//JavaProg/ProjetoJPA/modelo"/>

Criação do arquivo de build

Page 19: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

19

EJB – Enterprise JavaBeans<!-- Construção do classpath --><!-- Construção 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"/>

Page 20: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

20

EJB – Enterprise JavaBeans<!-- Prepara o diretório de build --><!-- Prepara o diretório 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 código fonte --><!-- Compila os arquivos de código 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>

Page 21: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

21

EJB – Enterprise JavaBeans<!-- Cria o arquivo jar e o implanta no servidor de aplicações--><!-- Cria o arquivo jar e o implanta no servidor de aplicações--> <target name="ejbjar" depends="compile">

<jar jarfile="build/alunoEJB.jaralunoEJB.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.jaralunoEJB.jar"

todir="${jboss.home}/server/default/deploy"/> </target>

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

</project>

Page 22: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

22

EJB – Enterprise JavaBeans Abra uma janela do prompt de comando. Mude o diretório corrente para a pasta raiz do seu

projeto. Implante a aplicação digitando o comando.

> antant Inicie o servidor de aplicações JBoss executando o

arquivo run.batrun.bat na pasta %JBOSS_HOME%/bin%JBOSS_HOME%/bin Execute o cliente remoto digitando o comando

> ant run.clientant run.client

Page 23: 1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008

23

EJB – Enterprise JavaBeans Exemplo de Aplicação Swing com

EJB SessionBean e JPA-Entity