FJ-31 - Java EE avançado e Web Services (Integral)
Rua do Ouvidor, 50 - Sobreloja 201 - Centro - Rio de Janeiro/Rio de Janeiro - Brasil
Descrição
Carga Horária: 40 horas aula
A tecnologia EJB é bastante rebuscada, que pode deixar o iniciante um pouco perdido em tantos recursos. Neste curso recém reformulado, vemos desde RMI e invocação remota de métodos e conceitos que são a base da remotabilidade dos EJBs. Focamos bastante na última versão da especificação, os EJBs 3.0, mostrando os Session Beans, Message-driven Beans e persistência com JPA.
É um curso avançado de Java EE que aborda JNDI, JMS, EJB3, SOA, Web Services e clusters, tudo praticado usando o JBoss Application Server. Veremos Web Services tanto standalone, usando o JAX WS do Java 6, quanto integrado com os EJBs, além de escrever um curto cliente em Ruby que consome nosso webservice.
Pré-requisitos:
Curso FJ-11 ou equivalente, FJ-21 recomendado. Recomendável conhecimentos básicos de JPA ou curso FJ-25. Faça aqui um pequeno teste para saber se você está apto a este curso.
Conteúdo detalhado:
Como aprender Java
- Falando em Java
- O curso
- Convenções de Código
- Sobre os exercícios
- Sobre os cursos
- Indicação de bibliografia extra
- Tirando dúvidas
Serialização e Persistência
- Serializando e Persistindo Objetos
- Implementando uma classe Serializable
- Compatibilidade (serialVersionUID)
- Serialização em Cascata
- Atributos Transientes
- Exercícios: Serialização
Introdução ao RMI
- Invocação remota de método
- Java RMI - Remote Method Invocation
- Colocando o objeto no Servidor
- Quem são os servidores?
- O Cliente
- E os stubs?
- Rodando a aplicação
- Exercícios: RMI
- Exercícios opcionais
- Erros comuns
- Para saber mais: em um projeto real
Introdução a Java EE
- Finalizando a compra
- Implementando o finalizaCompra(Cartao)
- Implementando os serviços
- Inversão de Controle
- Java EE - Java Enterprise Edition
- Servidor de aplicação
- Exercício com o Instrutor: Instalação do JBoss
- Diretórios do JBoss
- Em casa
- Exercício: Configurando o JBoss no WTP do Eclipse
Java Naming and Directory Interface - JNDI
- Motivação
- JNDI - Java Naming and Directory Interface
- Do ponto de vista da aplicação
- Configurando o provider do JBoss (jndi.properties)
- Configurando o provider do JBoss (programaticamente)
- Para saber mais: conectando com outros Serviços de Nome
- Exercícios
- Exercícios Opcionais
Introdução aos EJBs
- O problema
- Outros problemas
- Solução
- Cliente
- Como funciona por dentro
- Exercícios
- Um componente EJB3
Aplicação servidora e cliente - WTP
- Colocando as coisas nos devidos lugares
- Criando o EAR sem ajuda de plugins
- Usando o Eclipse WTP
- Exercício: Obrigatório (JBoss)
- Em casa: Preparando os projetos passo-a-passo
Ciclo de vida do Stateful Session Bean e métodos de callback
- O ciclo de vida do Stateful Session Bean
- newInstance()
- Injeção e @PostConstruct
- Construtor vs @PostConstruct
- O processo de passivação e ativação: @PrePassivate e @PostActivate
- Fim da vida: @Remove e @PreDestroy
- Controle da passivação, do cache e dos timeouts no JBoss
- Exercícios: callbacks, ciclo de vida e cache
Stateless Session Beans
- Problema: acessando serviços
- Solução
- Ciclo de vida de um Stateless Session Bean
- Atributos de instância de um stateless session bean
- Configurando o pool de instâncias do JBoss
- Stateful ou Stateless?
- Exercícios
Interfaces locais, injeção de dependência e agendamento de tarefas
- Interfaces Locais
- Injeção de dependências: @EJB, @Resource e outros
- O SessionContext
- Exercícios
- Agendamentos precisos com TimerService e @Schedule
- Exercícios opcionais
Entity Beans
- Dados
- Remotabilidade?
- Entity Beans no EJB 2.x
- Data Transfer Objects, Value Objects e Session Façades
- Entity Bean no EJB3
- Exercícios opcionais
Implementando Entity Beans com a Java Persistence API (JPA) no Servidor Java EE
- A necessidade
- JPA fora do container
- A configuração da conexão
- Transações no MySQL
- DataSource
- Datasource com MySQL
- Mapeando um Entity Bean
- EntityManager e EntityManagerFactory
- Vantagens da JPA no servidor: transações, gerenciamento e injeção
- Injeção com @PersistenceContext
- Persistindo um Livro
- Carregando livros
- Exercícios: JPA dentro de um servidor Java EE
- Callbacks para Entidades
- Listener Classes
- Exercício opcional - Callback nas entidades
JPA - Relacionamentos e Problemas comuns com a JPA no Servidor
- Relacionamentos
- TransientObjectException
- Fetch Mode: Lazy e Eager e a LazyInitializationException
- Exercícios
- Fazendo buscas
- Joins e produtos cartesianos
- Funções no JPQL: lower()
- Paginação
- Compondo Critérios de Busca: AND e OR
- Projeções
- Exercícios opcionais: Pesquisa com JPA
Transações e Exceções
- Transações
- Gerenciamento de transação: modo programático (BMT)
- Gerenciamento de transação: modo declarativo (CMT)
- Exceções
- System Exceptions
- Application Exceptions
- Exercícios
- Exercício opcional
- Para saber mais: PersistenceContextType.EXTENDED
Interceptadores
- Interceptadores Internos - ::Bean Interceptors::
- Interceptadores Externos - ::External Interceptors::
- Interceptadores Padrões - ::Default Interceptors::
- Excluindo Interceptadores
- Contexto de invocação - ::InvocationContext::
- Exercícios
- Exercícios Opcionais: Criando Default Interceptors
Java Message Service- JMS
- Assíncrono vs Síncrono
- Middleware Orientado a Mensagens (MOM)
- Modelos de entregas: Email ou Lista de Discussão?
- Criação de Queue's e Topic's no JMS
- Exercícios - Tarefa do Administrador
- Connection e ConnectionFactory
- Session e Message
- Procurando os Destination's
- Senders e Publishers
- Receiver's e Subscriber's
- MessageProducer e MessageConsumer
- Componentes do JMS
- Exercícios Fila
- Exercícios Tópico
- Para saber mais: Selecionando Mensagens
- Exercício opcional
- Para saber mais: Espiando as mensagens de uma Queue
- Exercício opcional
- Para saber mais: Mensagens complexas
- Exercícios opcionais
Mensagens de XML com JAX-B
- Mensagens - XML
- JAXB
- Exercícios - JAXB
- XML Schema Definition (XSD)
- Namespaces
- Exercícios de Schema e Namespaces
JMS integrado com EJB
- Session Bean como emissor de mensagens
- Mensagem no formato XML
- Message Driven Bean
- Exercícios
Web Services com JAX-WS
- Problema
- A solução
- SOAP - Simple Object Access Protocol
- Exercício Opcional
- WSDL: o contrato do seu webservice
- JAX-WS
- Exercícios - JAX-WS
- Exercício Opcional: Consumindo o webservice dos Correios
Adicionando Web Services à Livraria
- WebService no Servidor de Aplicação
- Combinando Web Services e EJB
- Exercícios
- Cliente em Ruby
- Exercício
- Para saber mais: acessando EJBs de outras maneiras
Web Services com JAX-RS
- REST - Representational State Transfer
- Uma alternativa - o estilo Arquitetural REST
- Diferentes representações
- Metodos HTTP
- Hipermídia
- Vantagens Restful
- Web-Services REST com JAX-RS
- Botando pra rodar
- Usando o JAX-RS
- Outros tipos de retorno
- Exercícios JAX-RS com Resteasy
- Buscando um recurso específico
- Exercícios: URI Templates
- Exercícios opcionais: Cliente Rest com HttpClient
- Inserindo dados
- Exercícios
- JAX-RS junto com EJB3
- Exercício opcional: Acessar um session bean com Resteasy
Apêndice - Aplicação Web
- Integrando um aplicação EJB com Servlet
- WTP
- Exercícios
- Para saber mais
- Integração com JSF
- Exercícios opcionais
- EJB Lite
- Exercícios Testando EJB Lite
Apêndice - Cluster
- Problema
- Cluster
- Cluster + JBoss
- Exercício
- Exercício Opcional com Glassfish
- Farming Deploy
- Load Balancing
- HA-JNDI
- Session Bean em Cluster
- Exercícios
- Para saber mais: Cache distribuído
Apêndice - Autenticação e Autorização com JAAS
- Modulo JAAS - Tarefa do administrador
- Autorização nos EJB's
- Exercício - Criando Tabelas para Autenticação
- Exercício - Testando JAAS com EJB3
- Tarefa do desenvolvedor da aplicação Web
- Autenticação
- Autorização na aplicação Web
- Exercício - JAAS na aplicação Web
- Exercício (Opcional) - Interceptador EJB3 de Segurança
- Exercício (Opcional) - Formulário de Login
Apêndice - Boas práticas no uso de tecnologias remotas
- Granularidade Grossa
- DTOs só entre Tiers, não layers
- DAOs podem aparecer com EJB3?
- Native Query
- Devo evitar o custo dos EJBs?
Apêndice - EJB 3.1 e Java EE 6
- Java EE 6
- Contexts and Dependency Injection for the Java EE Platform
- Java Server Faces
- Java Persistence API
- Enterprise JavaBeans
- Cadê a interface local?
- Novo tipo de EJB: Singleton beans
- Para saber mais: Singleton
- Empacotamento facilitado
- Chamadas assíncronas
* Os apêndices listados são conteúdos adicionais que não fazem parte do curso regular.
Localização:
Contato
Preencha os campos abaixo para enviar e-mail ao organizador.
