Java OO Middleware - JEE / EJB / RMI

60
Object oriented / Component Middleware (Java) Mateus Fernando Robson Piere Tiago Higino Vinicius Ponciano Yitzhak Stone PUC Minas - São Gabriel Sistemas de Informação - 7º Período Desenvolvimento de Aplicações Distribuídas

Transcript of Java OO Middleware - JEE / EJB / RMI

Page 1: Java OO Middleware - JEE / EJB / RMI

Object oriented / Component Middleware

(Java)

Mateus FernandoRobson PiereTiago Higino

Vinicius PoncianoYitzhak Stone

PUC Minas - São GabrielSistemas de Informação - 7º Período

Desenvolvimento de Aplicações Distribuídas

Page 2: Java OO Middleware - JEE / EJB / RMI

Roteiro

1. JEE ⇒ Java Enterprise Edition

2. JB ⇒ JavaBeans

3. EJB ⇒ Enterprise JavaBeans

4. RMI ⇒ Remote Method Invocation

5. Exemplo(s) prático(s)

a. RMI

Page 3: Java OO Middleware - JEE / EJB / RMI

JEE: Java Enterprise Edition Java Enterprise Edition

Page 4: Java OO Middleware - JEE / EJB / RMI

● Java EE ou Java Enterpise Edition é uma plataforma de desenvolvimento construída em cima da plataforma Java SE (Standard Edition).

● O foco dela é fornecer um ambiente robusto:○ Para desenvolvimento e execução de aplicações;○ Em grande escala;○ Multi camadas;○ Escaláveis;○ Confiáveis○ Seguras.

O que é JEE ?

Page 5: Java OO Middleware - JEE / EJB / RMI

http://docs.oracle.com/javaee/6/tutorial/doc/

De 1999 (JPE) Até 2016 (JEE 8)

Evolução do JEE

Page 6: Java OO Middleware - JEE / EJB / RMI

● Servlets - São componentes Java executados no servidor, para gerar conteúdo dinâmico na Web.

● Java Server Pages (JSP) - Servlets mais robustos e de fácil desenvovilmento.

● Java Server Faces (JSF) - Framework web com o padrão MVC para simplificar o desenvolvimento de UI.

● Java Persistence API (JPA) - APIde mapeamento objeto relacional, sendo utilizada para a persistência dos dados.

● Enterprise Java Beans (EJB) - Componentes que executam em um container de aplicação no lado do servidor.

Principais Componentes do JEE

Page 7: Java OO Middleware - JEE / EJB / RMI

● Para fornecer a comunicação entre componentes, APIs, persistência, serviços entre outros, o JEE oferece os containeres para abrigá-los.

● Os containeres são implementados pelos fornecedores de servidor de aplicativos JEE, que disponibilizam um container para cada tipo de componente como: Applet, cliente de aplicativo, web e EJBs.

Como JEE oferece os serviços?

Page 8: Java OO Middleware - JEE / EJB / RMI

● Para cada tipo de componete da plataforma é fornecido um conteiner e eles amarzenam os componetes e oferecem os seguintes serviços:○ Gerenciamento ciclo de vida;○ Segurança;○ Implementação;○ Comunicação com outros componentes;○ Ambiente com tempo de execução compatível.

Conteiners JEE

Page 9: Java OO Middleware - JEE / EJB / RMI

● Conectividade: É realizada pelos objetos distribuídos através de RMI

(Remote Method Invocation) e COBRA. Porém, todo o ciclo da conectividade

deve ser fornecido através dos protocolos HTTP e HTTPS.

● Serviços de Diretório: JNDI (Java Naming and Directory Interfaces), é uma

API que acessa serviço de diretórios, sendo que cada serviço deve fornecer

um provedor de serviços (Service Provider). Os servidores JEE são

obrigados a possuir esse tipo de serviço.

● JDBC: API JDBC (Java Database Connection), que fornece conexão aos

bancos de dados.

● JCA (Java Connector Architecture): Suporte à conexão de sistemas

legados e e integração de servidores legados.

Serviços oferecidos nos containers JEE

Page 10: Java OO Middleware - JEE / EJB / RMI

● Segurança: autenticação e autorização dos usuários através de

APIs como JAAS (Java Authentication and Authorization Service).

● XML: Operações e suporte a XML (eXtensible Markup Language.

● Transações: O conteiner é responsavel pela transação, mas pode-se

utilizar de API’s, como o JTA (Java Transaction API).

○ JTA (Java Transaction API): É uma API que permite trabalhar

com transações independentes do gerenciador.

● E-mail: Utiliza o JMS (Java Message Service), para troca de

mensagens. utilizando vários protocolos como: POP, SMTP e IMAP.

Serviços oferecidos nos containers JEE

Page 11: Java OO Middleware - JEE / EJB / RMI

● JMS (Java Message Service): É uma API que oferece o mecanismo

de criar, ler e armazenar mensagens. A JMS suporta dois tipos de

trocas de mensagem:

○ Ponto a ponto: Esse tipo acontece quando um aplicativo envia

uma mensagem para uma fila (destino preparado para receber as

mensagens) e após isso, um aplicativo coleta essa mensagem.

○ Publicação assinatura: Esse modelo exige que os aplicativos

clientes inscrevam-se para receber as informações sobre o

assunto desejado.

Serviços oferecidos nos containers JEE

Page 12: Java OO Middleware - JEE / EJB / RMI

Camadas JEE

● O JEE possui três camadas:

○ Camada de Negócio;

■ Encapsula os EJB’s, ou seja a lógica do negócio.

○ Camadas de Apresentação;

■ Contém as telas que serão exibidas para o usuário e faz a

comunicação com a lógica do negócio.

○ Camada Cliente

■ Essa camada suporta clientes web e portáteis que se comunicam

com o protocolo HTTP, porém outros conseguem usar SOAP e

outros tipos.

Page 13: Java OO Middleware - JEE / EJB / RMI

http://docs.oracle.com/javaee/6/tutorial/doc/

Exemplo de Arquitetura JEE

Page 14: Java OO Middleware - JEE / EJB / RMI

● Plataforma Robusta de Desenvolvimento, bem integrada e já

consolidada no mercado. Além disso faz-se uso de toda a

força da linguagem Java, além de proporcionar um ambiente

que contém várias API’s que facilitam a integração dos

componentes do sistema com outros sistemas.

● Independência de plataforma (Sistema Operacional e

Hardware).

Prós e Contras

Page 15: Java OO Middleware - JEE / EJB / RMI

● Utiliza apenas a linguagem Java para a escrita de códigos, pois a JVM só roda liguagem Java.

● Desempenho prejudicado por executar apenas sobre máquina virtual.

● Necessita de um time de desenvolvimento experiente.

Prós e Contras

Page 16: Java OO Middleware - JEE / EJB / RMI

JavaBeansModelo de Componente de Software

Page 17: Java OO Middleware - JEE / EJB / RMI

O que é JavaBeans?

● Definição

● Como funciona?

● Caracteristicas:

○ É uma classe

○ Reutilizável

○ Facilita a programação visual

○ descrição auto-contida

○ Objeto serializado

Page 18: Java OO Middleware - JEE / EJB / RMI

JavaBeans e suas convenções

● Nomenclatura de métodos

● Construtores

● Comportamento

Page 19: Java OO Middleware - JEE / EJB / RMI

Para quê servem os JavaBeans?

● São implementação de uma interface

● Blocos de componentes GUI

● Gerador de gráficos, relatórios e planilhas

● Calendários, relógios e agendas

● Display de Dados

● Drag & Drop

● java.io.Serializable persiste a restauração de um estado

Page 20: Java OO Middleware - JEE / EJB / RMI

Exemplo de um Bean

Page 21: Java OO Middleware - JEE / EJB / RMI

Propriedades● Simples: propriedades podem ser computadas;

● Indexadas: contém uma coleção de valores;

● Vinculadas: Usadas quando vários objetos precisam ser notificados de mudanças em um componente;

● Restritas: Uma mudança no valor da propriedade pode ser vetada (java.beans.PropertyVetoException);

Page 22: Java OO Middleware - JEE / EJB / RMI

EJB: Enterprise Java BeansComponente JEE

Page 23: Java OO Middleware - JEE / EJB / RMI

O que é EJB ?

● Enterprise JavaBeans (EJB) é um componente da plataforma JEE que roda em um container de um servidor de aplicação.

● Seu principal objetivo consiste em fornecer um desenvolvimento rápido e simplificado de aplicações Java, com base em componentes distribuídos, transacionais, seguros e portáveis.

Page 24: Java OO Middleware - JEE / EJB / RMI

Características

● Transações: A arquitetura EJB define um suporte sofisticado para utilização de transações. Esse suporte é integrado com a Java Transaction API (JTA) e oferece inclusive a possibilidade de realizar transações distribuídas.

● Segurança: Suporte para realizar autenticação e autorização de forma transparente. Os desenvolvedores das aplicações não precisam implementar a lógica de segurança pois ela faz parte da arquitetura EJB.

● Remotabilidade: Aplicações EJB podem ser acessadas remotamente através de diversos protocolos de comunicação. Consequentemente, é possível desenvolver aplicações clientes de diversos tipos. Por exemplo, aplicações EJB podem ser como Web Services.

Page 25: Java OO Middleware - JEE / EJB / RMI

Características● Multithreading e Concorrência: A arquitetura EJB permite que as

aplicações sejam acessados por múltiplos usuários simultaneamente de maneira controlada para evitar problemas de concorrência.

● Persistência: Facilidades para utilizar os serviços dos provedores de persistência que seguem a especificação JPA.

● Gerenciamento de Objetos: Mecanismos de injeção de dependências e controle de ciclo de vida são oferecidos aos objetos de uma aplicação EJB. O mecanismo de controle de ciclo de vida pode garantir a escalabilidade de uma aplicação.

● Integração: A arquitetura EJB é fortemente integrada com os componentes da plataforma Java EE. Podemos, por exemplo, facilmente integrar os recursos do JSF em uma aplicação EJB.

Page 26: Java OO Middleware - JEE / EJB / RMI

URL: http://www.thejavageek.com/wp-content/uploads/2015/01/application-architecture.png Fonte: http://www.thejavageek.com/2015/01/09/creating-jsf-ejb-jpa-application-using-eclipse-wildfly/

Arquitetura de uma Aplicação JSF / EJB / JPA

Page 27: Java OO Middleware - JEE / EJB / RMI

História/Versões do EJB● EJB 1.0 24/03/1998

● EJB 1.1 versão final 17/12/1999

● EJB 2.0 versão final 22/08/2001 (JSR 19)

● EJB 2.1 versão final 24/11/2003 (JSR 153)

● EJB 3.0 versão final 11/05/2006 (JSR 220)

● EJB 3.1 versão final 10/12/2009 (JSR 318)

● EJB 3.2 versão final 28/05/2013 (JSR 345)

Page 28: Java OO Middleware - JEE / EJB / RMI

Tipos de Beans do EJB● Entity Beans (removidos na versão 3)

● Session Beans

○ Stateless Session Beans

○ Stateful Session Beans

○ Singleton Session Beans (versão 3.1)

● Message Driven Beans

Page 29: Java OO Middleware - JEE / EJB / RMI

Interface

Fonte: Elaborador pelos Autores

Page 30: Java OO Middleware - JEE / EJB / RMI

Servidor

Page 31: Java OO Middleware - JEE / EJB / RMI

Cliente

Page 32: Java OO Middleware - JEE / EJB / RMI

URL: http://images.devshed.com/ds/stories/Teach%20Yourself%20J2EE/04fig01.jpgFonte: http://www.devshed.com/c/a/java/introduction-to-enterprise-javabeans/

Page 33: Java OO Middleware - JEE / EJB / RMI

RMI: Remote Method InvocationChamada de Métodos Remotos

Page 34: Java OO Middleware - JEE / EJB / RMI

Introdução ⇒ Visão geral● Sun → JDK 1.1 → 1998

● Paradigma: POO e computação distribuída

○ Abstração, Encapsulamento, Herança e Polimorfismo

○ “Coleção de computadores independentes que se apresenta ao

usuário como um sistema único e consistente”

● Modelo Cliente / Servidor

● Síncrono (“por natureza”)

● Java

○ Plataforma JEE

○ Integração com outras linguagens

■ RMI / IIOP → CORBA

Page 35: Java OO Middleware - JEE / EJB / RMI

Introdução ⇒ Motivação

● Programação de socket

○ Baixo nível (rede / transporte)

● Problemas com o RPC

○ Necessidade de aprender uma linguagem IDL

○ Suporte limitado para tipos de dados

● Fortalecimento das linguagens Orientadas a Objetos

● Foco na aplicação → Alto nível

Page 36: Java OO Middleware - JEE / EJB / RMI

Fonte: Distributed Objects Programming Using Java RMI. http://condor.depaul.edu/ichu/ds420/lecture/1002/rmi%3E1.doc

TCP/IP ⇔ RMI

Page 37: Java OO Middleware - JEE / EJB / RMI

Fonte: http://neoramon.blogspot.com.br/2009/11/tcp-udp-e-rmi-minhas-observacoes-sobre.html

Desempenho: RMI vs. TCP / UDP

Page 38: Java OO Middleware - JEE / EJB / RMI

Modelo RMI (1)

● O servidor define objetos que o cliente pode usar

remotamente.

● Os clientes podem invocar métodos nesse objeto remoto

como se ele estivesse executando localmente.

● O RMI esconde o mecanismo de transporte (via rede) de

argumentos dos métodos e valores de retorno.

Page 39: Java OO Middleware - JEE / EJB / RMI

Modelo RMI (2)

● Transparências:

○ Acesso: clientes com implementações diferentes se

conectam ao servidor da mesma maneira.

○ Localização: o cliente não precisa saber onde está o

servidor que hospeda o objeto remoto.

Page 40: Java OO Middleware - JEE / EJB / RMI

Arquitetura ⇒ Camadas

● Stub / Skeleton: interface entre cliente e objetos remotos

● Referência remota: registro de objetos remotos para

pesquisa na rede

○ rmiregistry

● Transporte: protocolo de rede (comunicação

cliente/servidor)

○ JRMP (Java Remote Method Protocol) → TCP/IP

Page 41: Java OO Middleware - JEE / EJB / RMI

Arquitetura

Fonte: http://www.argonavis.com.br/cursos/java/j100/java_20.pdf

Page 42: Java OO Middleware - JEE / EJB / RMI

CORBA ⇔ RMI

Fonte: http://www.argonavis.com.br/cursos/java/j100/java_20.pdf

Page 43: Java OO Middleware - JEE / EJB / RMI

Tópicos Adicionais

● Serviço de ativação RMI

○ rmid

● Segurança

○ SSL → Java Secure Socket Extension (JSSE)

○ Políticas de segurança (RMISecurityManager)

Page 44: Java OO Middleware - JEE / EJB / RMI

FARLEY, Jim; et.al. Java Enterprise in a Nutshell: A Desktop Quick Reference

Arquitetura RMI em Tempo de Execução

Page 45: Java OO Middleware - JEE / EJB / RMI

Anatomia da URL de um objeto remoto RMI

Em nosso exemplo:

rmi : // 192.168.0.1 : 1099 / CalculatorService

FARLEY, Jim; et.al. Java Enterprise in a Nutshell: A Desktop Quick Reference

Page 46: Java OO Middleware - JEE / EJB / RMI

Prós e Contras

● Multi-plataforma (que suportam a VM Java)

● Introduz novas implementações em JVMs remotas

● “Distributed Garbage Collector”

Page 47: Java OO Middleware - JEE / EJB / RMI

Prós e Contras● Só “roda” em plataformas com suporte a Java.

● Falhas de segurança na execução de métodos remotos.

● Limitações de funcionalidade forçadas pelas restrições de segurança

● Só opera em sistemas escritos em Java. Não há suporte para

sistemas legados (C++, Ada, Cobol, Fortram, ...)

● Limitado ao TCP/IP

Page 48: Java OO Middleware - JEE / EJB / RMI

Exemplo Prático:RMI

Adaptado de http://www.inf.ufsc.br/~bosco/ensino/ine5645/CalculadoraRMI.txt

Page 49: Java OO Middleware - JEE / EJB / RMI

Exemplo Prático● Definir uma interface que declara os métodos remotos

● O programa servidor:

○ deve incluir uma classe que implementa essa interface.

○ deve criar um objeto remoto e registrá-lo no serviço de

nomes (rmi registry)

● O programa cliente:

○ deve perguntar ao serviço de nomes pela referência do

objeto remoto.

○ deve invocar o método sobre o objeto remoto.

Page 50: Java OO Middleware - JEE / EJB / RMI

Interface

Page 51: Java OO Middleware - JEE / EJB / RMI

Exemplo Prático● Definir uma interface que declara os métodos remotos

● O programa servidor:

○ deve incluir uma classe que implementa essa interface.

○ deve criar um objeto remoto e registrá-lo no serviço de

nomes (rmi registry)

● O programa cliente:

○ deve perguntar ao serviço de nomes pela referência do

objeto remoto.

○ deve invocar o método sobre o objeto remoto.

Page 52: Java OO Middleware - JEE / EJB / RMI

Implementação da Interface

Page 53: Java OO Middleware - JEE / EJB / RMI

Exemplo Prático● Definir uma interface que declara os métodos remotos

● O programa servidor:

○ deve incluir uma classe que implementa essa interface.

○ deve criar um objeto remoto e registrá-lo no serviço

de nomes (rmi registry)

● O programa cliente:

○ deve perguntar ao serviço de nomes pela referência do

objeto remoto.

○ deve invocar o método sobre o objeto remoto.

Page 54: Java OO Middleware - JEE / EJB / RMI

Servidor

Page 55: Java OO Middleware - JEE / EJB / RMI

Exemplo Prático● Definir uma interface que declara os métodos remotos

● O programa servidor:

○ deve incluir uma classe que implementa essa interface.

○ deve criar um objeto remoto e registrá-lo no serviço de

nomes (rmi registry)

● O programa cliente:

○ deve perguntar ao serviço de nomes pela referência

do objeto remoto.

○ deve invocar o método sobre o objeto remoto.

http://aquilesburlamaqui.wdfiles.com/local--files/projeto-e-implementacao-de-middleware/03-RPC&RMI.ppt

Page 56: Java OO Middleware - JEE / EJB / RMI

Cliente

Page 57: Java OO Middleware - JEE / EJB / RMI

FARLEY, Jim at.al.. Java Enterprise in a Nutshell: A Desktop Quick Reference

Relações entre os componentes

Page 58: Java OO Middleware - JEE / EJB / RMI

Exemplo: Arquitetura de uma loja virtualFARLEY, Jim at.al.. Java Enterprise in a Nutshell: A Desktop Quick Reference

Page 59: Java OO Middleware - JEE / EJB / RMI

Referências● TANENBAUM, Andrew S.; STEEN, Maarten. Sistemas Distribuídos: Princípios e Paradigmas. 2ª

Edição.● FARLEY, Jim at.al.. Java Enterprise in a Nutshell: A Desktop Quick Reference● ROMAN, Ed; et al. Dominando Enterprise Javabeans. Bookman Editora, 2009● Integração de Sistemas com Webservices, JMS e EJB <http://www.k19.com.br>● Oracle; Documentação Oficial RMI <https://docs.oracle.com/javase/tutorial/rmi/>● UNICAMP; Curso POO Java <http://www.dca.fee.unicamp.br/cursos/PooJava/objdist/rmiact.html>● UFSC <http://www.inf.ufsc.br/~bosco/ensino/ine5645/CalculadoraRMI.txt>● <http://www.javacoffeebreak.com/articles/rmi_corba/index.html>● <http://neoramon.blogspot.com.br/2009/11/tcp-udp-e-rmi-minhas-observacoes-sobre.html>● <http://aquilesburlamaqui.wdfiles.com/local--files/projeto-e-implementacao-de-middleware/03-RPC&

RMI.ppt>

Page 60: Java OO Middleware - JEE / EJB / RMI

Dúvidas ?