Sistemas de Middleware Avançados

MAC 5765 - Tópicos em Sistemas de Computação I - Segundo Semestre de 2002

Prof. Francisco Reverbel

. Informações gerais
. Descrição
. Assuntos tratados em aula
. Trabalhos propostos
        
. Leitura recomendada
. Bibliografia
. Lista de discussão da disciplina
. Recursos adicionais na Internet

At work icon Esta página estará em permanente construção até o final do semestre...

Informações Gerais

. Local: IME-USP, bloco A, sala 268
. Horário: segundas das 8:00 às 9:40, quartas das 10:00 às 11:40
. Pasta xerox CAMAT: número 5
. Avaliação: uma prova (no dia 13/11/2002), trabalhos práticos, monografia final

Descrição

MAC-5765 (Tópicos em Sistemas de Computação I) é uma disciplina que serve de "guarda-chuva" para o estudo de tópicos avançados relacionados ao desenvolvimento de sistemas de software numa variedade de áreas. No segundo semestre de 2002, o assunto geral vai ser "Sistemas de Middleware Avançados".

A disciplina será uma espécie de continuação de MAC-5759 (Sistemas de Objetos Distribuídos), voltada para alunos que já cursaram MAC-5759 ou MAC-5755 (Sistemas Operacionais Distribuídos) e que têm conhecimento sólido de Java. Dois tipos de middleware serão estudados: servidores de aplicações e sistemas de processamento de transações.

A área de processamento de transações é mais antiga e tradicional, enquanto que a de servidores de aplicações é bem recente. Um servidor de aplicações atua como um container no qual usuários implantam componentes que correspondem a aplicações ou a partes de aplicações executadas num ambiente distribuído. Por meio de um mecanismo de invocação remota de métodos, o servidor de aplicações disponibiliza para clientes remotos os serviços dos componentes nele implantados. Além disso, o servidor oferece a esses componentes um conjunto de serviços básicos, como persistência, transações e segurança. Os serviços de um servidor de aplicações se assemelham bastante aos de um sistema operacional. Alguns futurólogos (como o Gartner Group) estão prevendo que em muito poucos anos a maioria dos sistemas operacionais incluirá um servidor de aplicações.

A relação de tópicos não está completamente decidida, mas deve incluir os seguintes ítens (não necessariamente nessa ordem):

Pretendo enfatizar bastante a parte de implementação (o lado interno) de servidores de aplicações, na qual tenho trabalhado ultimamente como membro do projeto JBoss.

Assuntos Tratados em Aula

. 12/08: Apresentação. A evolução dos servidores de aplicação. Reflexão em Java. Carga dinâmica de classes. (Retomaremos este assunto na próxima aula.) Leitura recomendada.
. 14/08: A arquitetura de class loaders em Java. Leitura recomendada.
. 19/08: "Implantação quente" (hot deployment). O problema da inversão e o thread context class loader. Leitura recomendada.
. 21/08: Invocação reflexiva. Proxies dinâmicos. Introdução à arquitetura EJB. Leitura recomendada.
. 26/08: EJB: as interfaces home (ou local home) e remote (ou local) e a classe do componente (bean class). Exemplo de session bean com estado. O ciclo de vida de um session bean sem estado.
. 28/08: Tópico paralelo: XML. Exemplo de descritor de implantação de um session bean. Exemplo de cliente de um session bean. Uso da API JNDI por parte do cliente (para obter uma referência para a interface home do bean).
. 09/09: Entity beans. Persistência gerenciada pelo container (CMP). Relacionamentos gerenciados pelo container (CMR). Leitura recomendada.
. 11/09: Transações em EJB. O lado interno de um container EJB: a abordagem baseada em compilação e a abordagem baseada em reflexão.
. 16/09: A arquitetura JMX.
. 18/09: A arquitetura JMX (continuação). Uso de JMX no JBoss. Os invokers do JBoss: acesso remoto a MBeans através de diversos protocolos (JRMP, IIOP, SOAP, HTTP).
. 23/09: A estrutura comum a todos os invokers do JBoss. Exceção: o IIOP invoker, devido ao requisito de interoperabilidade com clientes escritos em outras linguagens. Proposta para o EP2: implementar um "Java IIOP invoker", com a mesma estrutura dos invokers voltados para clientes Java.
. 25/09: MBean services do JBoss: ciclo de vida, exemplo de implementação de MBean service, dependências entre serviços.
. 30/09: EJB: persistência gerenciada pelo bean (BMP) e beans dirigidos por mensagens (MDBs).
. 02/10: Conversa informal sobre arquiteturas para aplicações Web. Servlets.
. 14/10: Detalhes (para o EP2) sobre a estrutura dos invokers do JBoss. O código de um invoker.
. 16/10: Os interceptadores do JBoss: separação de aspectos (transações, segurança, persistência). Gerenciamento de transações: visão geral. Controle de concorrência: two-phase locking, níveis de isolação de transações no SQL-92.
. 21/10: Logging e recuperação de quedas num sistema centralizado.
. 23/10: Transações distribuídas: o protocolo two-phase commit (2PC).
. 28/10: Monitores de TP. Os padrões X/Open DTP (interfaces TX e XA) e CORBA OTS.
. 04/11: Descrição do trabalho final da disciplina. A arquitetura de class loaders do JBoss (unified class loaders).
. 06/11: Conversa sobre o trabalho final e outros assuntos (programação orientada a aspectos, benchmark J2EE x .NET no The Server Side).
. 13/11: Prova.
. 18/11: Aula sobre o artigo "An Efficient Component Model for the Construction of Adaptative Middleware".
. 20/11: Considerações finais e encerramento.

Trabalhos Propostos

. Primeiro exercício-programa (ps, pdf). Prazo: 23 de setembro
. Segundo exercício-programa (ps, pdf). Prazo: 21 de outubro.
. Trabalho final (ps, pdf). Prazo: 29 de novembro.

Leitura Recomendada

. Em 12/08:
. Dale Green, The Reflection API (para quem não conhecer a API de reflexão em Java).
. Ted Neward, Understanding Class.forName(), May 2001.
. Sheng Liang e Gilad Bracha, Dynamic Class Loading in the Java Virtual Machine, OOPSLA'98.
. Stuart Halloway, Class Loaders as a Namespace Mechanism, JDC Tech Tips, Oct. 2000.
. Em 14/08:
. Halloway, capítulo 2 (The Class Loader Architecture), até 2.7.
. Em 19/08:
. Halloway, de 2.8 a 2.11.
. Em 21/08:
. Halloway, 3.3 e 3.4.
. Em 09/09:
. Roman, capítulos 2, 3, 4, 5 e 7.

Bibliografia

. Stuart D. Halloway, Component Development for the Java Platform, Addison-Wesley, 2002. (O autor disponibiliza o livro completo como um conjunto de arquivos PDF não imprimíveis. A editora disponibiliza uma versão imprimível do capítulo 3.)
. S. Bodoff, D. Green, K. Haase, E. Hendrock, M. Pawlan e B. Stearns, The J2EE Tutorial, Addison-Wesley, 2002. Disponível para download nos formatos HTML e PDF.
. Richard Monson-Haefel, Enterprise JavaBeans, 3rd ed., O'Reilly, 2001.
. Ed Roman, Scott Ambler e Tyler Jewell, Mastering Enterprise JavaBeans, Second Edition, Wiley, 2002. Disponível para download como um arquivo PDF não imprimível.
. Floyd Marinescu, EJB Design Patterns - Advanced Patterns, Processes and Idions, Wiley, 2002. Disponível para download como um arquivo PDF não imprimível.
. Juha Lindfors, Marc Fleury e o JBoss Group, JMX: Managing J2EE with Java Management Extensions, SAMS, 2002.
. Jim Gray e Andreas Reuter, Transaction Processing: Concepts and Techniques, Morgan Kaufmann, 1993.

Recursos Adicionais na Internet

. Java 2 Platform, Enterprise Edition (J2EE)
. Java Management Extensions (JMX)
. TheServerSide.com
. JBoss.org


Valid CSS! Valid XHTML 1.0! Last modified: Fri Dec 13 01:25:27 EDT 2002
Francisco Reverbel
reverbel at ime.usp.br