Objetos e Componentes Distribuídos: EJB

Documentos relacionados
Objetos e Componentes Distribuídos: EJB e CORBA

Padrões Arquitetônicos

RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Java para Web & EJB. Teoria, prática e questões Módulo Introdução e Servlets

Web Services REST. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Java RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Introdução a Computação em Nuvem

JAVA PARA WEB E EJB APLICAÇÕES WEB, SERVIDORES DE APLICAÇÃO, CONTAINERS WEB

Microsoft Visual Studio Community 2013

Introdução a Sistemas Distribuídos

Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Introdução ao Desenvolvimento de

Introdução a Computação em Nuvem

JBoss Seam. Vinicius Senger Co-fundador Globalcode Alberto J Lemos (Dr. Spock) Instrutor Globalcode. Globalcode Open4Education

Acesso a Banco de Dados usando C#

Sistemas Distribuídos

Web Services REST e JSON

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

JBoss Seam Um framework para Java EE 5. [ Tiago Motta Jorge ]

Prof. Me. Sérgio Carlos Portari Júnior

Nuvem e Virtualização Redes Programáveis

CBSE. Independência e Padronização. Características da CBSE. Fundamentos da CBSE. Middleware e Processo 22/05/2013

Sistemas Distribuídos

Revisão de conceitos Tópicos Avançados em TI Prof. Rossano Pablo Pinto Fevereiro/ v0.1

Arquitetura em Camadas

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Serviços Web: Introdução

Injeção de Dependências e Spring

Sistemas Distribuídos Aspectos de Projeto de SD. Aspectos de Projeto em SD. Transparência 14/03/12. ! Transparência; ! Abertura; !

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

Frameworks funcionais para JSF que proporciona o desenvolvimento de aplicações computacionais WEB

Aula 1: Apresentação, Computação Corporativa

INTRODUÇÃO À TECNOLOGIA SERVLETS

Arquitetura de Sistemas Distribuídos

Desenvolvimento de Aplicações Distribuídas

Reuso de Software Aula Maio 2012

UFG - Instituto de Informática

Sistemas Distribuídos

Rede de computadores Cliente- servidor. Professor Carlos Muniz

Sistemas Distribuídos

O que é um sistema distribuído?

Desenvolvimento de Aplicações Distribuídas

Características de Sistemas Distribuídos

Sistema Operacional. Prof. Leonardo Barreto Campos. 1/30

Módulo II Arquitetura em Camadas

SIDs: ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

Características de Sistemas Distribuídos

Tipos de Clusters. Introdução. Introdução 21/03/12

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

ÍNDICE. Redes de Computadores - 1º Período de Cap 12 - Fls. 1

UFG - Instituto de Informática

Modelo de Componentes CORBA

Programação Distribuída. Arquiteturas

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

RecyclerView. Programação de Dispositivos Móveis. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

REVISÃO DE CONCEITOS DE ORIENTAÇÃO A OBJETOS

MAPEAMENTO OBJETO RELACIONAL COM HIBERNATE EM APLICAÇÕES JAVA WEB

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

SISTEMA DE INFORMAÇÃO GEOGRÁFICA APLICADA À GESTÃO PÚBLICA

PCS3413 Engenharia de Software e Banco de Dados

Sistemas Distribuídos

Desenvolvimento de Aplicações Distribuídas

Bancos de Dados Notas de Aula Introdução Prof. Dr. Daniel A. Furtado

Sistema de Software Distribuído

Tipos de Sistemas Distribuídos (Pervasivos)

Framework.NET. Linguagem de Programação III. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento Acadêmico de Informática Campus Monte Castelo

Transcrição:

: EJB Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão

Objetivos Nesta aula iremos apresentar a solução baseada em middleware para programação em um ambiente distribuído usando objetos e componentes.

Plano de Aula Objetos e Componentes Distribuídos: EJB De Objetos a Componentes Essência dos Componentes Componentes e Sistemas Distribuídos Enterprise JavaBeans Modelo de Componentes EJB POJOs e anotações Contêineres EJB

De Objetos a Componentes O CORBA tem um papel fundamental na história dos Sistemas Distribuídos; Ele apresentou uma solução viável para os principais problemas na programação de Sistemas Distribuídos: Heterogeneidade; Portabilidade e operação conjunta de software de sistemas distribuídos; A definição de vários Serviços CORBA também foi fundamental (segurança, confiabilidade, etc); Porém apontamos na aula passada alguns problemas enfrentados pelo desenvolvedor ao usar o CORBA;

De Objetos a Componentes Problemas do Middleware Orientado a Objetos Dependências Implícitas Requisito: Há necessidade clara de não apenas especificar as interfaces oferecidas por um objeto, mas também as dependências desse objeto com relação a outros na configuração distribuída. Interação com o Middleware Requisito: Há uma necessidade evidente de simplificar a programação de aplicações distribuídas para apresentar uma clara separação de preocupações entre código relacionado à operação em uma estrutura de middleware e código associado a aplicação, e de permitir que o programador se concentre exclusivamente neste último. Falta de separação de aspectos relacionados à distribuição Requisito: A separação de aspectos mencionados anteriormente também devem abranger o tratamento dos diversos serviços do sistema distribuído e, quando possível, as complexidades do tratamento de tais serviços devem ficar ocultas do programador. Falta de suporte para distribuição Requisito: As plataformas de middleware devem fornecer suporte intrínseco para a distribuição, para que o software distribuído possa ser instalado e implantado da mesma maneira que um software para uma máquina, com as complexidade de distribuição ocultas ao usuário. Objetos e Componentes Distribuídos

De Objetos a Componentes Esses quatro requisitos levam ao surgimento de estratégias baseadas em componentes para o desenvolvimento de sistemas distribuídos, junto ao surgimento de middleware baseado em componentes, incluindo o estilo de middleware chamado de servidores de aplicação.

Essência dos Componentes Definição de componentes segundo Szyperki: Um componente de software é uma unidade de composição com interfaces especificadas por contratos e somente dependências contextuais explícitas. Importante: Toda dependência contextual deve ser explícita; As dependências também são representadas como interfaces; Um componente de software é especificado em termos de um contrato, o qual inclui: Um conjunto de interfaces fornecidas As interfaces que o componente oferece como serviços para outros componentes; Um conjunto de interfaces exigidas As dependências que esse componente tem em termos de outros componentes que devem estar presentes e conectados a ele para que ele funcione corretamente.

Componentes e Sistemas Distribuídos Diversas tecnologias baseadas em componentes vem surgindo: Enterprise JavaBeans CCM (CORBA Component Model) O Middleware baseado em componentes adiciona suporte significativo para o desenvolvimento e implementação de sistemas distribuídos; Na visão dos middlewares baseados em componentes dois pontos são fundamentais: O conceito de Contêineres (fundamental para Middlewares baseados em Componentes) Suporte para a distribuição.

Contêineres Os contêineres suportam um padrão comum, geralmente encontrado em aplicações distribuídas: Um cliente front-end (frequentemente web) Um contêiner contendo um ou mais componentes que implementam a lógica de negócio/aplicação; Serviços de sistema que gerenciam os dados associados no armazenamento persistente. As tarefas de um contêiner são: Fornecer um ambiente hospedeiro no lado do servidor gerenciado para os componentes; Fornecer a separação de aspectos, isto é os componentes tratam das necessidades da aplicação e o contêiner trata de problemas dos sistemas distribuídos e do middleware.

Contêineres

Contêineres O Middleware que suporta o padrão contêiner e a separação de aspectos por esse padrão é conhecido como servidor de aplicação; Esse estilo de programação distribuída esta sendo amplamente utilizada no ambiente corporativo; Atualmente existem diversos servidores de aplicativos: IBM WebSphere Application Server (EJB) Red Hat Jboss (EJB) Oracle GlassFish (EJB) Apple WebObjects para MacOS Zope Application Server para Python.

Suporte para Distribuição O Middleware baseado em componentes fornece suporte para a distribuição de configurações de componentes; São usados descritores de distribuição (DD) (geralmente em XML), que descrevem completamente como a configuração deve ser implantada em um ambiente distribuído; Lembrando: Os componentes são distribuídos em contêineres; Os contêineres interpretam os DDs, geralmente usando alguma ferramenta associada; Os DDs auxiliam na conexão dos componentes, a fornecer o nível de segurança correto, suporte para transações, etc.

Enterprise JavaBeans EJB é uma especificação de arquitetura de componentes gerenciada no lado do servidor; Os componentes conhecidos como beans do EJB, oferecem suporte direto a arquitetura de três camadas apresentadas anteriormente; O EJB é gerenciado. O Contêiner responde por vários serviços, tais como: Transação, Segurança e Ciclo de Vida; O EJB é uma arquitetura de componente pesada : Sobrecarga de complexidade pelo gerenciamento do contêiner; Tem como objetivo, manter uma forte separação entre as várias funções envolvidas no desenvolvimento de aplicações distribuídas. Objetos e Componentes Distribuídos

Modelo de Componentes do EJB No EJB um bean é um componente que oferece um ou mais interfaces de negócio para clientes; Estas interfaces podem ser remotas ou local; Esta interface de negócio é nossa interface fornecida; As interfaces exigidas são apresentadas através de injeção de dependências; Um bean é representado pelo conjunto de interfaces de negócio remotas e locais, junto a uma classe de bean associada que implementa as interfaces; Inicialmente vamos discutir dois estilos de bean: Bean de Sessão: usam a invocação remota ou local. Bean baseado em mensagem: usam JMS.

POJOs e anotações Programar em EJB ficou mais fácil devido ao uso EJBs POJOs (Plain Old Java Objects objetos Java puros) junto a anotações EJB; As anotações foram introduzidas no Java 1.5 como um mecanismo para associar metadados a pacotes, classes, métodos, parâmetros e variáveis; Por exemplo, anotações são usadas para indicar se as interfaces de negócio de um EJB são Remotas ou Locais: @Remote public interface Pedidos{...} @Local public interface Frete{...} Vamos perceber na implementação que anotações são usadas por todo o EJB.

Contêineres EJB O gerenciamento do EJB como sistema distribuído é feito de forma implícita usando interceptação; Os contêineres fornecem políticas em áreas que incluem: Gerenciamento de Transação; Segurança; Persistência; Ciclo de Vida, etc. Geralmente os contêineres são previamente configurados com as políticas padrões; O Contêiner usa a injeção de dependência, com a qual um agente externo (contêiner) é responsável por gerenciar e solucionar as relações entre um componente e suas dependências (interfaces exigidas).

Contêineres EJB

Dúvidas Página do Professor Mauro: http://www.dai.ifma.edu.br/~mlcsilva

Próxima Aula Prática de Laboratório: EJB

Referências Sistemas Distribuídos - Conceitos e Projeto, George Coulouris, 4ª Edição - Editora Bookman, 784 páginas.