sistemas distribuídos - comunicação distribuída - ejb (jboss 7)

Click here to load reader

Post on 06-Jun-2015

3.912 views

Category:

Technology

0 download

Embed Size (px)

TRANSCRIPT

  • 1. Comunicao Distribuda - EJBProf. Adriano Teixeira de Souza

2. Estratgias diferentes que permitem acomunicao entre aplicaes distribudas. Tipos distintos de comunicao em um sistemadistribudo: Sockets RMI - Remote Method Invocation CORBA Commom Object Request Broker Architecture EJB Enterprise Java Bean Web ServicesProf. Adriano Teixeira de Souza 3. Prof. Adriano Teixeira de Souza 4. Se utilizar a verso 7.0 do JBoss , no requerida uma instalao, basta apenasdescompactar o arquivo na sua mquina eadicionar a varivel de ambienteJBOSS_HOME; Prof. Adriano Teixeira de Souza 5. V em Iniciar -> Painel de controle -> Sistema ->Avanado ->Variveis de ambiente; Adicione as variveis JAVA_HOME e JBOSS_HOME,com os seguintes valores: JAVA_HOME = meu caminho do JDK JBOSS_HOME = meu caminho do Jboss Caso no tenha permisso, sete as variveis emtempo de console (abra uma console e digite): SET JAVA_HOME=diretorioJVM SET JBOSS_HOME=diretorio do JBOSS Em seguida, entre na pasta bin e digite RUN.BATProf. Adriano Teixeira de Souza 6. Prof. Adriano Teixeira de Souza 7. JEE: Acrnimo de Java Enterprise Edition Kit Plataforma Java voltada para aplicaes corporativas,no modelo de sistema distribudo. Voltada para aplicaes multi-camadas, baseadas emcomponentes que so executados em um servidor deaplicaes (JBoss, exemplo). A plataforma Java EE considerada um padro dedesenvolvimento, pois o fornecedor de software nestaplataforma deve seguir determinadas regrascompatveis com Java EE.Prof. Adriano Teixeira de Souza 8. A plataforma J2EE contm uma srie de especificaes, cada uma comfuncionalidades distintas. Entre elas, tem-se: EJBs (Enterprise Java Beans), utilizados no desenvolvimento decomponentes de software. Eles permitem que o programador seconcentre nas necessidades do negcio do cliente, enquanto questesde infra-estrutura, segurana, disponibilidade e escalabilidade soresponsabilidade do servidor de aplicaes. JPA (Java Persistence API), uma API que padroniza o acesso a bancode dados atravs de mapeamento Objeto/Relacional dos EnterpriseJava Beans JTA (Java Transaction API), uma API que padroniza o tratamento detransaes dentro de uma aplicao Java. JDBC (Java Database Connectivity), utilizado no acesso a bancos de dados; JCA (Java Connector Architecture), uma API que padroniza a ligao aaplicaes legadas. Servlets e JSP (Java Server Pages), utilizados para o desenvolvimento deaplicaes Web com contedo dinmico. E outros. Prof. Adriano Teixeira de Souza 9. Transaes gerenciadas Segurana Clustering Escalabilidade Alta Disponibilidade Comunicao Assncrona Integrao com Legado Persistncia etc Prof. Adriano Teixeira de Souza 10. Representa um objeto de entidade de negciosque existe no armazenamento persistente(banco de dados, por exemplo) Classes simplificadas, chamadas POJOS,mapeadas com JPA ; Flexveis para qualquer banco de dadosrelacional; To portveis, que podem ser usados tambmfora de um servidor de aplicao (aplicaodesktop); So agrupados em uma unidade depersistncia;Prof. Adriano Teixeira de Souza 11. Espelham objetos do mundo real; Possuem uma chave primria id(pode seruma classe ou um tipo primitivo); Identificado pela anotao @Entity; No necessitam de nenhuma interface; Gerenciados pelo EntityManager; Prof. Adriano Teixeira de Souza 12. Sistema de Cadastro de Cliente Prof. Adriano Teixeira de Souza 13. @Entity .@Table(name=cliente)public class Cliente implements Serializable {private static final long serialVersionUID = 1L;@Id@GeneratedValue(strategy=IDENTITY)private int id;private String nome;private String cpf;public Cliente() { }// gets e sets//equals e hashCode} // fim da entidadeProf. Adriano Teixeira de Souza 14. @Entity Indica ao provedor de persistncia que a Classe bean ser mapeada para umatabela de banco de dados e gerenciada por um Entity Maganer; @Table Informa ao container EJB para qual tabela do banco ser mapeada aclasse bean; @Column Informa ao container EJB para qual coluna da tabela a propriedade dobean ser mapeada; @Id Informa que atributo ser tratado como chave primria na tabela debanco de dados. @GeneratedValue - define que o valor do atributo id ser geradoautomaticamente no momento em que os objetos forem persistidos(inseridos na tabela). Prof. Adriano Teixeira de Souza 15. Implementar a interface java.io.Serializable no obrigatrio. Com Serializable possvel usar a mesma classetanto para persistncia, quanto para transferncia dedados (entre sistemas ou camadas). Assim como todo POJO, as propriedades de umEntity Bean so acessadas atravs dos mtodosgets e sets. Prof. Adriano Teixeira de Souza 16. Conjunto de todos os entity beans; Quem gerencia um servio de EntityManager; Cada unidade de persistncia deve estarassociada a um banco de dados; Todas essas informaes esto descritas emum arquivo chamado persistence.xml Localizado no diretrio META-INF da aplicao A unidade de persistncia identificada pelamarcao: Onde xxxx o nome a ser referenciado como a unidade de persisncia. Prof. Adriano Teixeira de Souza 17. O arquivo persistence.xml (definido com o datasource do banco de dados) java:jboss/datasources/TesteSQLiteDS Prof. Adriano Teixeira de Souza 18. Conjunto das classes gerenciadaspor um Entity Manager Define o banco de dados que serusado para esta implantao. No JBoss deve ser definido em umarquivo .xml chamadostandalone.xml. Prof. Adriano Teixeira de Souza 19. So componentes EJB do lado do servidor que podem seracessados utilizando vrios protocolos de objetosdistribudos; Para acessar uma aplicao que foi instalada no servidor(JBoss), a aplicao cliente invoca os mtodos do SessionBean. O Session Bean executa o trabalho para seu cliente,protegendo o cliente da complexidade atravs da execuode tarefas de negcio dentro do servidor. Suas atividades so geralmente transitrias (no tem umestado persistente); Prof. Adriano Teixeira de Souza 20. Stateless: No mantm estado; Cada mtodo completamente independente ; Stateful: Mantm estado; No compartilhado entre clientes; Todo Session Bean deve implementar uma interfacelocal ou remota. Local o cliente compartilha a mesma mquina(processador e memria) que o servidor Remoto o cliente acessa de forma remota (de outramquina), mesmo estando na mesma mquina que oservidorProf. Adriano Teixeira de Souza 21. Ser criado um session beans (componente)chamado ClienteFacade, que fornecer todos osservios/tarefas de um cadastro de clientes: Cadastrar um Cliente Listar os Clientes cadastrados Localizar um Cliente E outros que se tornarem necessrios.Por conveno, todos os componentes session beans tero no nome osufixo Facade.A classe interface ter o mesmo nome da classe session beans,adicionado com o sufixo Remote ou Local, dependendo do uso.Prof. Adriano Teixeira de Souza 22. @Stateless (mappedName =" ejb/ClienteBean")@LocalBeanpublic class ClienteFacade implements ClienteFacadeRemote{@PersistenceContextprivate EntityManager manager;public void cadastraCliente(Cliente cliente){manager.persist(cliente);}public Cliente localizaCliente(int id){return manager.find(Cliente.class, id);}}Prof. Adriano Teixeira de Souza 23. @Stateless: Mostra que o componente ClienteFacade nomantm o estado (objetos/dados em memria); @PersistenceContext Obtm o acesso a um servio EntityManager;Prof. Adriano Teixeira de Souza 24. Especifica quais mtodos de negcio um clientetem permisso para invocar no EJB; @Remote Instrui o container de que esta uma interface remotapara o ClienteFacadeProf. Adriano Teixeira de Souza 25. @Remotepublic interface ClienteFacadeRemote{public void cadastraCliente(Cliente cliente);public Cliente localizaCliente(int id);public List listaClientes();}Prof. Adriano Teixeira de Souza 26. Passo-a-passo 27. Considere um novo projeto para representar a aplicaoservidora do Sistema de Cadastro de Clientes. Crie um projeto do tipo EJB: File New Project ... EJBEm seguida, informe:a) O nome do projetob) O servidor para execuoc) A configurao do JPA Veja a seguir... Prof. Adriano Teixeira de Souza 28. a) Nome do projeto b) Servidor para execuo c) Configurao do JPAd) Pressione Next duas vezesProf. Adriano Teixeira de Souza 29. a) Defina a plataformab) Adicione a conexao c) Selecione o driver e) Pressione FinishProf. Adriano Teixeira de Souza 30. a) Selecione a conexo b) Marque a opo para listar classes no arquivo persistence.xml c) Marque a opo para criar o arquivo orm.xmlProf. Adriano Teixeira de Souza 31. Viso do projeto JPA(AULAJEE6-JPA), naperspectiva Java EE:rea (pasta) de cdigo fonte(source) Prof. Adriano Teixeira de Souza 32. As entidades utilizam anotaes presentes na biblioteca do JPA, JavaPersistence API. Considere a entidade Cliente apresentada anteriormente. Crie a classe Cliente.java no pacote modelo conforme figura abaixo.Prof. Adriano Teixeira de Souza 33. Aps importar as classes, adicione as refernciasdas entidade no arquivo persistence.xml. Use o recurso Generate Entities from Tables34 34. Adicione o nome da data-source (TesteSQLiteDS) no arquivopersistence.xml. Use a tag: java:jboss/datasources/TesteSQLiteDS Ou use o editor (assistente) na aba Connection. Informe em JTA_DataSource: java:jboss/datasources/TesteSQLiteDSProf. Adriano Teixeira de Souza 35. Diferente da configurao em aplicao desktop (console oustand-alone), uma aplicao no JBOSS fica responsvel peloacesso aos recursos de banco, que so gerenciados pela JTA Java Transaction API. 36 36. Abra o arquivo standalone.xml no diretrio configuration doJBOSS contendo o acesso ao banco de dados. O exemplo a seguir, mostra o DS (data-source) TesteSQLiteDS,que registra esse nome no servio de diretrio JNDI (Java Namingand Directory Interface). Arquivo standalone.xmlDiretrio:jboss-as-7.1.0.Finalstandaloneconfiguration Prof. Adriano Teixeira de Souza 37. Obs:1. Implantar o driver do MySQL no diretrio jboss-as-7.1.0.Finalmodulesorgsqlitemain Prof. Adriano Teixeira de Souza 38. Considere um novo pro