MAC 0462/5863 - Sistemas de Middleware Avançados

Segundo Semestre de 2006

Prof. Francisco Reverbel

. Informações gerais
. Ementa da disciplina
. Assuntos tratados em aula
. Trabalhos propostos
        
. 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

. Horário: terças e quintas, das 14:00 às 15:40
. Local: IME-USP, bloco B, sala 142
. Assistente de ensino: Ivan Neto (ivanneto arroba ime ponto usp ponto br)
. Pasta xerox CAMAT: número 64
. Avaliação: trabalhos práticos, uma prova (no dia 21 de novembro), apresentação opcional de um seminário

Assuntos Tratados em Aula

. 08/08: Apresentação. Evolução dos sistemas de informação distribuídos (Alonso, capítulo 1, até 1.2.4). Introdução aos servidores de aplicações.
. 10/08: Visão geral de Java EE. Evolução da arquitetura EJB. Exemplo de session bean sem estado baseado em EJB 2.1. Pooling de instâncias de um session bean sem estado.
. 15/08: EJB 3.0. Uso de anotações em EJB 3.0. Exemplo de session bean sem estado baseado em EJB 3.0. Session beans com estado. Cache de instâncias de session bean com estado, passivação e ativação de instâncias. Ciclo de vida de um session bean sem estado (pooling de instâncias) e de um session bean com estado (cache de instâncias).
. 17/08: EJB 3.0: lifecycle callbacks, injeção de dependências, interceptadores (EJB 3.0 Simplified API, capítulos 3, 4, 5 e 8).
. 22/08: Message-oriented middleware e message queueing (Alonso, seções 1.3 e 2.5): características, quando usar. O Java Message Service (JMS). Message-driven beans (MDBs).
. 24/08: EJB 3.0: a API de persistencia Java (JPA).
. 29/08: JPA (continuação).
. 31/08: Uso de entidades por session beans sem estado (contexto de persistência com escopo de transação) e por session beans com estado (contexto de persistência com escopo estendido). Os níveis de isolação de transações no SQL (Ramakrishnan e Gehrke, 18.3.3, 18.4, 19.3.1 e 19.4, até 19.4.1). Alternativas para acesso concorrente a entidades: travamento otimista (@Version), locking explícito via JPA, ou uso de um nível de isolação alto (repeatable read ou serializable) no banco de dados. Entidades com objetos embutidos, relacionamentos entre entidades.
. 12/09: Componentes web: servlets e noções de JSP.
. 14/09: Introdução à arquitetura de carga de classes em Java (Halloway, capítulo 2).
. 19/09: Arquitetura de class loaders em Java (Halloway, capítulo 2). Leitura adicional: Liang e Bracha.
. 21/09: Class loading (final). Conceitos de reflexão computacional: instrospecção e adaptação; adaptação comportamental e adaptação estrutural. Introspecção e invocação reflexiva em Java (Halloway, capítulo 3, até 3.3). Proxies dinâmicos em Java (Halloway, 3.4).
. 26/09: Proxies dinâmicos em Java (Halloway, 3.4). A arquitetura JMX (Fleury e Reverbel, seções 1 e 2). Transparências (vimos até a transparência 14 dessa apresentação).
. 28/09: Componentes de middleware no JBoss: MBeans de serviço (service MBeans) e MBeans implantáveis (deployable MBeans), dependências entre MBeans implantáveis, implantação dinâmica. Carga de classes em servidores de aplicação: o esquema "loader per deployment" e a arquitetura de unified class loaders do JBoss. Uso de proxies dinâmicos no JBoss. (Fleury e Reverbel, seção 3.) Transparências (vimos as transparências 15 a 30 dessa apresentação).
. 03/10: Arquitetura de unified class loaders do JBoss (continuação). Meta-nível de uma arquitetura para EJBs generalizados (Fleury e Reverbel, seção 4). Transparências (vimos as transparências 31 a 42 dessa apresentação).
. 05/10: Suporte para IIOP no JBoss: os MBeans CorbaORBService, CorbaNamingService e IIOPInvoker. Relacionamento entre invokers e proxy factories. Configurações de container EJB. Arquitetura do IIOPInvoker. (Reverbel, Burke e Fleury, seções 3, 4 e 5.) Transparências.
. 17/10: Revisão sobre transações num sistema não distribuído: logging e recuperação de quedas. (Referência: livro de bancos de dados do Ramakrishnan. Slides do Ramakrishnan sobre logging e recuperação de quedas.)
. 19/10: Transações distribuídas: o protocolo two-phase commit (2PC). (Referência: livro de bancos de dados do Ramakrishnan. Slides do Ramakrishnan sobre 2PC.) O padrão X/Open DTP e a interface XA. O serviço de transações CORBA (OTS). Apresentação sobre OTS.
. 24/10: OTS (continuação). Transações num servidor de aplicações: uso implícito do OTS, criação automática de objetos Coordinator e Resource para cada transação, registro automático dos Resources com o Coordinator. Interposição de coordenadores. Noções gerais sobre transações em ambiente Web Services: as especificações WS-Coordination e WS-AtomicTransaction.
. 31/10: Transações distribuídas envolvendo múltiplos TMs: logging e recuperação de quedas. Conversa sobre o trabalho final.
. 07/11: Conversa sobre o trabalho final. Conceitos de AJAX.
. 09/11: Clustering em servidores de aplicações. Clustering no JBoss.
. 21/11: Prova.
. 23/11: Seminário 1: Padrões Arquiteturais para Sistemas Baseados em Componentes Reconfiguráveis (Rafael Ferreira)
Seminário 2: JBoss Seam (Tiago Motta Jorge)
. 28/11: Seminário 3: OSGi -- Um Sistema Dinâmico de Módulos para Java (Raoni Kulesza)
Seminário 4: JBoss Cache (Helves Humberto Domingues)
. 30/11: Seminário 5: Gerenciamento de Sistemas com JMX (Ivan F. Martinez)
Seminário 6: Google Web Toolkit (Cleiton Cabral)
. 05/12: Seminário 7: XML11 (Rodrigo Ferro)
Seminário 8: O Framework Spring (Daniel Creão)
. 07/12: Prova substitutiva (para quem não compareceu à prova de 21/11 e justificou a falta).

Trabalhos Propostos

. Primeiro trabalho: Utilização de EJB 3.0 e da API de Persistência Java (ps, pdf). Prazo: 18 de setembro.
. Segundo trabalho: Invocador Java/IIOP para o JBoss (ps, pdf, componentes EJB 2.1 para testes). Prazo: 27 de outubro.
. Trabalho final: Implementação de software ou apresentação de seminário.

Bibliografia

. Stuart D. Halloway, Component Development for the Java Platform, Addison-Wesley, 2002.
. Sheng Liang e Gilad Bracha, Dynamic Class Loading in the Java Virtual Machine, OOPSLA'98.
. Fabio Kon, Fábio Costa, Roy Campbell e Gordon Blair, The Case for Reflective Middleware, Communications of the ACM, Vol. 45, No. 6, pp. 33-38, June, 2002.
. Marc Fleury e Francisco Reverbel, The JBoss Extensible Server, in Middleware 2003 - ACM/IFIP/USENIX International Middleware Conference, vol. 2672 of LNCS, pp. 344-373, Springer-Verlag, 2003.
. Francisco Reverbel, Bill Burke e Marc Fleury, Dynamic Deployment of IIOP-Enabled Components in the JBoss Server, in Component Deployment: Second International Working Conference (CD 2004), vol. 3083 of LNCS, pp. 65-80, Springer-Verlag, 2004.
. Richard Monson-Haefel e Bill Burke, Enterprise JavaBeans 3.0, 5th ed., O'Reilly, 2006.
. Rima Patel Sriganesh, Gerald Brose e Micah Silverman, Mastering Enterprise JavaBeans 3.0, Wiley, 2006.
. Floyd Marinescu, EJB Design Patterns - Advanced Patterns, Processes and Idioms, Wiley, 2002.
. 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.
. Raghu Ramakrishnan e Johannes Gehrke, Database Management Systems, Second Edition, McGraw-Hill, 2000.
. Gustavo Alonso, Fabio Casati, Harumi Kuno e Vijay Machiraju, Web Services Concepts, Architectures and Applications, Springer-Verlag, 2004.

Recursos Adicionais na Internet

. Página de SOD de 2006
. Página de SMA de 2004
. Página de SMA de 2003
. Página de SMA de 2002
. Java Platform, Enterprise Edition (Java EE)
. Java Management Extensions (JMX)
. JBoss.org


Valid CSS! Valid XHTML 1.0! Last modified: Wed Dec 20 16:19:17 BRST 2006
Francisco Reverbel