Use o código e tenha 10% de desconto!

Microsserviços e EJB Escale sua aplicação, não a complexidade

Gilliard Cordeiro

*Você terá acesso às futuras atualizações do livro.

Conteúdo

Seja no modelo tradicional ou de microsserviços, separar nossa aplicação em partes menores facilita a escalabilidade, a manutenção, dentre outras qualidades que buscamos nos nossos projetos. Para desenvolver um bom back-end, não basta seguir uma receita pronta. É preciso realmente entender as ferramentas para tirar o máximo delas sem comprometer o desempenho. Em java, dentre as tecnologias para atingir esse objetivo, temos CDI, JPA e principalmente EJBs e JAX-RS.

Neste livro, Gilliard Cordeiro ensina como escalar uma aplicação sem aumentar sua complexidade. Você verá como sair do básico, seja com microsserviços, seja em uma arquitetura mais tradicional. A primeira parte do livro é dedicada ao Thorntail, pensada principalmente em quem precisa rapidamente aprender como fazer um back-end, construindo uma API Rest com as tecnologias do Java EE (Jakarta EE). Já a segunda parte é focada em mostrar realmente como os EJBs funcionam por dentro. Ao fim do livro, você saberá como melhorar a performance de operações pesadas através de paralelismo, incluindo entre as técnicas a programação reativa.

Saiba o que você vai aprender

 

Sumário

Parte 1: Início rápido

  • 1 Microsserviços e Java EE
  • 1.1 Por que microsserviços?
  • 1.2 Thorntail ou Spring Boot?
  • 1.3 Criando primeiro serviço com JAX-RS
  • 1.4 Adicionando persistência de dados
  • 1.5 EJBs e Java EE no geral não são muito complexos para microsserviços?
  • 2 Serviços REST com JAX-RS
  • 2.1 Escalando serviços REST através do uso de Cache
  • 2.2 Revalidando o cache com GETs condicionais
  • 2.3 Cliente usando GET condicional
  • 2.4 Server-Sent Events (SSE) como alternativa ao cache
  • 2.5 Enviando dados (POST) através do cliente REST
  • 2.6 Criando uma interface Java do lado cliente para servir de proxy
  • 2.7 Enviando dados através de um POST condicional
  • 2.8 Como o desenvolvimento de microsserviços se relaciona com o restante do livro

Parte 2: Conhecendo de forma mais profunda

  • 3 Sendo reapresentados aos EJBs
  • 3.1 Por que usar EJB hoje em dia?
  • 3.2 O que vamos usar para criar nossa aplicação?
  • 3.3 Fazer o código na mão, utilizar Wizards, ou o JBoss Forge?
  • 3.4 Baixando o servidor e criando o projeto
  • 3.5 Criando um EJB simples
  • 4 Os Sessions Beans por estado
  • 4.1 EJB Stateless
  • 4.2 EJB Stateful
  • 4.3 Removendo um EJB Stateful
  • 4.4 Removendo um bean Stateful via timeout
  • 4.5 Lidando com Stateful Session Beans removidos e NoSuchEJBException
  • 4.6 Remoção automática de beans Stateful associados a um contexto CDI
  • 4.7 EJB Singleton
  • 5 Os Sessions Beans por interface
  • 5.1 EJBs Remotos
  • 5.2 Desenvolvendo um EJB remoto
  • 5.3 Criando um cliente de EJB remoto
  • 5.4 EJBs Locais
  • 5.5 EJBs sem interface
  • 5.6 Revisão geral sobre exposição de interfaces dos EJBs
  • 6 Integrando EJB e JPA
  • 6.1 Iniciando com a JPA
  • 6.2 Primeiras diferenças entre JPA puro e seu uso com EJBs
  • 6.3 Usar o padrão DAO, Service Bean + Controller, ou tudo junto?
  • 6.4 Usando JSF para construir as telas
  • 6.5 Lidando com LazyInitializationException ou equivalente
  • 6.6 Evitando LazyInitializationException com EJB Stateful
  • 7 Gerenciando transações com EJBs
  • 7.1 Executando commit em uma transação
  • 7.2 Executando rollback em uma transação
  • 7.3 Exceções de sistema e exceções de aplicação
  • 7.4 EJB Stateful e o rollback de transações
  • 8 Lidando com mais de uma transação
  • 8.1 As opções de transações com @TransactionAttribute
  • 9 Testando nossos serviços
  • 9.1 Criando testes de integração com Mockito
  • 9.2 Criando testes de integração com o contêiner
  • 9.3 Utilizando o Arquillian para testes de integração
  • 9.4 Configurando o Arquillian na nossa aplicação
  • 9.5 Criando um teste "hello world"
  • 9.6 Criando um teste real
  • 9.7 Usando mocks nos testes com Arquillian
  • 10 Criando WebServices com JAX-RS
  • 10.1 JAX-RS: Transformando um EJB em um serviço REST que devolve JSON
  • 10.2 Retornando um XML através do serviço REST
  • 10.3 Retornando diferentes formatos com o mesmo serviço REST
  • 10.4 Criando um cliente de serviço REST
  • 10.5 Criando um cliente JS para um serviço REST
  • 10.6 Acessar diretamente a camada de negócios a partir da visualização é uma boa?
  • 11 Server-Sent Events ou SSE (JAX-RS 2.1, Java EE 8)
  • 11.1 Reactive Client API (JAX-RS 2.1, Java EE 8)
  • 11.2 A diferença entre Future e CompletionStage
  • 11.3 Como usar o CompletionStage?
  • 12 Métodos assíncronos e paralelismo para aumento de performance
  • 12.1 O uso de @Asynchronous para não bloquear o usuário
  • 12.2 Recuperando o retorno de uma execução em segundo plano
  • 12.3 Executando código em paralelo com @Asynchronous
  • 12.4 Paralelizando a persistência no banco de dados
  • 12.5 Pós-créditos
  • 13 Utilizando a Concurrency Utilities for Java EE
  • 13.1 Criando um novo Managed Executor Service
  • 13.2 Criando um Executor Service programaticamente
  • 14 Conclusão

Autor

Gilliard Cordeiro

Gilliard Santos Cordeiro é Analista de Sistemas pela UFMS e especialista em Engenharia de Software pela Uniderp. É também tomador de tereré, tirador de foto, pescador e karateca amador. Iniciou tomando tereré desde muito cedo, como todo sul-mato-grossense, mas na programação só teve o primeiro contato na faculdade, em 2002. O início profissional foi em 2003, onde, como estagiário, programou em Lotus Script e um ano depois começou a desenvolver em Java. Algum tempo depois, junto com outros amigos fundou o JUGMS, que hoje organiza anualmente o Javaneiros, o maior evento de desenvolvedores de Mato Grosso do Sul. O gosto pela pesca e pelo karatê veio depois de "velho", aos 28 anos. Foi coordenador de novas tecnologias (P&D) no Tribunal de Justiça de MS, onde atualmente é diretor da área de desenvolvimento de sistemas. Ele mantém um blog em http://gilliard.eti.br.

Dados do produto

Número de páginas:
378
ISBN:
978-65-86110-38-8

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter