• Nenhum resultado encontrado

Sumário. Parte Um Visão geral Introdução... 23

N/A
N/A
Protected

Academic year: 2021

Share "Sumário. Parte Um Visão geral Introdução... 23"

Copied!
10
0
0

Texto

(1)

Sumário

Introdução ... 23

Parte Um

Visão geral ...

27

Capítulo 1 Visão geral ... 29

A motivação para o EJB ... 29

Dividir para conquistar ao extremo ... 30

Arquiteturas de componentes ... 35

Introdução aos Enterprise JavaBeans ... 36

Por que Java? ... 37

EJB como uma solução de negócio ... 37

O ecossistema EJB ... 39

O provedor de beans ... 39

O montador de aplicação ... 40

O instalador de EJB ... 40

O administrador de sistema ... 41

O provedor de contêiner e servidor ... 41

Os fornecedores de ferramenta ... 41

Resumo dos papéis ... 42

O Java 2 Platform, Enterprise Edition (J2EE) ... 43

As tecnologias do J2EE ... 44

Resumo ... 46

Capítulo 2 Os fundamentos do EJB ... 47

Enterprise beans ... 47

Tipos de beans ... 48

Objetos distribuídos: A fundação do EJB ... 49

Objetos distribuídos e middleware ... 50

Middleware explícito ... 50

Middleware implícito ... 52

O que constitui um enterprise bean? ... 53

A classe enterprise bean ... 53

O objeto EJB ... 54

O objeto home ... 57

As interfaces locais ... 60

Os descritores de instalação ... 62

Arquivos específicos do fornecedor ... 63

O arquivo Ejb-Jar ... 63

Resumo de termos ... 64

(2)

Capítulo 3 Como escrever seu primeiro bean ... 67

Como desenvolver um componente EJB ... 67

A interface remota ... 68

A interface local ... 68

A interface home ... 69

A interface home local ... 70

A classe bean ... 70

O descritor de instalação ... 74

Os arquivos específicos do fornecedor ... 76

O arquivo Ejb-jar ... 76

Instalação do bean ... 77

O arquivo JAR Client EJB opcional ... 77

Entenda como chamar beans ... 78

Como pesquisar um objeto home ... 79

Execução do sistema ... 80

A saída do lado do servidor ... 82

A saída do lado do cliente ... 83

Implementação de interfaces de componente ... 83

Uma solução ... 83

Resumo ... 84

Parte Dois A tríade dos beans ...

85

Capítulo 4 Introdução aos beans de sessão ... 87

Tempo de vida de bean de sessão ... 87

Os subtipos de bean de sessão ... 88

Beans de sessão com informações de estado ... 88

Beans de sessão sem informações de estado ... 88

Características especiais de beans de sessão com informações de estado ... 89

Como alcançar o efeito de pool com beans com informações de estado 89 As regras do estado conversacional ... 90

Chamadas de ativação e a passivação ... 91

Resumo de implementação de método ... 94

Um bean de sessão com informações de estado simples ... 94

Diagramas de ciclo de vida para beans de sessão ... 102

Resumo ... 104

Capítulo 5 Introdução aos beans de entidade ... 105

Conceitos de persistência ... 105

Serialização de objeto Java ... 105

Mapeamento objeto-relacional ... 106

Bancos de dados de objeto ... 107

O que é um bean de entidade ... 108

Sobre os arquivos que compõem um bean de entidade ... 109

Características dos beans de entidade ... 110

Beans de entidade sobrevivem a falhas ... 110

As instâncias de bean de entidade são uma visualização em um banco de dados ... 110

Várias instâncias de um bean de entidade podem representar os mesmos dados subjacentes ... 111

As instâncias de um bean de entidade podem ser organizadas em pool 112 Há duas maneiras de fazer beans de entidade persistirem ... 114

Criação e remoção de beans de entidade ... 115

Beans de entidade podem ser localizados ... 116

(3)

Contextos de entidade ... 118

getEJBLocalObject() / getEJBObject() ... 119

getPrimaryKey() ... 119

Resumo ... 120

Capítulo 6 Como escrever beans de entidade persistentes gerenciados por beans ... 121

Princípios básicos de codificação de bean de entidade ... 121

Localização de beans de entidade existentes: ejbFind() ... 122

Exemplo de persistência gerenciada por beans: Uma conta bancária ... 127

Account.java ... 127 AccountLocal.java ... 128 AccountHome.java ... 128 AccountLocalHome.java ... 129 AccountPK.java ... 130 AccountBean.java ... 133 AccountException.java ... 144 Client.java ... 147 Descritor de instalação ... 147

Descritor de instalação específico de contêiner ... 147

Configuração do banco de dados ... 148

Execução do programa cliente ... 149

Saída do lado do servidor ... 149

Saída do lado do cliente ... 150

Vamos juntar tudo: percurso do ciclo de vida de um bean de entidade BMP . 150 Resumo ... 152

Capítulo 7 Como escrever beans de entidade persistentes gerenciados por contêiner ... 153

Recursos de beans de entidade CMP ... 153

Beans de entidade CMP são definidos como subclasse ... 153

Beans de entidade CMP têm campos não-declarados ... 154

Métodos get/set CMP são definidos na subclasse ... 154

Beans de entidade CMP têm um esquema de persistência abstrato ... 157

Beans de entidade CMP têm uma linguagem de consulta ... 158

Beans de entidade CMP podem ter métodos ejbSelect() ... 159

Diretrizes de implementação para persistência gerenciada por contêiner ... 160

Exemplo de persistência gerenciada por contêiner: Uma linha de produto ... 163

Product.java ... 163 ProductLocal.java ... 164 ProductHome.java ... 164 ProductLocalHome.java ... 165 ProductPK.java ... 165 ProductBean.java ... 166 Descritor de instalação ... 173

Descritor de instalação específico de contêiner ... 173

Client.java ... 176

Execução do programa cliente ... 176

O ciclo de vida de um bean de entidade CMP ... 179

Resumo ... 180

Capítulo 8 Introdução aos beans baseados em mensagem ... 181

Motivação para utilizar os beans baseados em mensagem ... 181

O Java Message Service (JMS) ... 183

Domínios de troca de mensagens ... 183

A JMS API ... 184

(4)

O que é um bean baseado em mensagem ... 189

Desenvolvimento de beans baseados em mensagem ... 191

A semântica ... 191

Um exemplo simples ... 192

Conceitos avançados ... 197

Armadilhas de beans baseados em mensagem ... 199

Ordenamento de mensagem ... 199

Chamadas ejbRemove() perdidas ... 199

Mensagens malformatadas ... 200

Como retornar resultados aos produtores da mensagem ... 202

O futuro: Invocações de método assíncronas ... 206

Resumo ... 207

Capítulo 9 Adicione funcionalidade a seus beans ... 209

Como chamar beans a partir de outros beans ... 209

Pesquisas padrão de JNDI ... 209

Entenda as referências de EJB ... 210

Fábricas de recursos ... 212

Propriedades de ambiente ... 213

Entenda a segurança no EJB ... 215

Primeiro passo de segurança: Autenticação ... 216

Segundo passo de segurança: Autorização ... 225

Propagação de segurança ... 232

Entenda as alças ... 234

Alças home ... 235

Resumo ... 235

Parte Três Conceitos avançados de Enterprise

JavaBeans ... 237

Capítulo 10 Transações ... 239

Motivação para as transações ... 239

Operações atômicas ... 239

Falha de rede ou de máquina ... 240

Dados compartilhados por múltiplos usuários ... 241

Benefícios das transações ... 241

Propriedades ACID ... 242

Modelos transacionais ... 244

Transações planas ... 244

Transações aninhadas ... 246

Outros modelos transacionais ... 246

Como alistar transações com o Enterprise JavaBeans ... 247

Abstração do sistema de transação subjacente ... 247

Transações programáticas, declarativas e iniciadas pelo cliente ... 247

Escolha um estilo de transação ... 250

Transações gerenciadas por contêiner ... 252

Valores de atributo de transação EJB ... 253

Transações programáticas no EJB ... 257

Object Transaction Service (OTS) do CORBA ... 257

O Java Transaction Service (JTS) ... 258

A Java Transaction API (JTA) ... 258

Exemplo de transações programáticas versus declarativas ... 259

Transações a partir do código de cliente ... 262

Isolamento transacional ... 263

(5)

Isolamento e EJB ... 264

O problema da leitura suja ... 264

O problema da leitura não-repetível ... 266

O problema do fantasma ... 267

Resumo de isolamento de transação ... 267

Isolamento e EJB ... 267

Controle de concorrência otimista e pessimista ... 268

Transações distribuídas ... 269

A durabilidade e o protocolo de confirmação de duas fases ... 270

O protocolo de comunicação transacional e os contextos de transação 270 Como projetar conversas transacionais no EJB ... 272

Resumo ... 273

Capítulo 11 Relacionamentos com BMP e CMP ... 275

Diferença entre CMP e BMP ... 275 Cardinalidade ... 276 Relacionamentos 1:1 ... 276 Relacionamentos 1:N ... 281 Relacionamentos M:N ... 284 Direcionalidade ... 290

Implementação da direcionalidade com o BMP ... 291

Implementação da direcionalidade com o CMP ... 292

A direcionalidade pode não mapear para esquemas de banco de dados 293 Bidirecional ou unidirecional? ... 294

Carregamento retardado ... 295

Agregação versus composição e exclusões em cascata ... 295

Relacionamentos e EJB-QL ... 297

Relacionamentos recursivos ... 298

Relacionamentos circulares ... 298

Integridade referencial ... 299

Relacionamentos, integridade referencial e código do cliente ... 300

Resumo ... 302

Capítulo 12 Melhores práticas de persistência ... 303

Quando utilizar beans de entidade ... 303

Controle ... 303

A analogia da passagem de parâmetro ... 304

Procedural versus orientado a objetos ... 304

Armazenamento em cache ... 304

Imposição da independência de esquema ... 305

Facilidade de uso ... 305

Migração ... 305

Desenvolvimento rápido de aplicações ... 305

Como escolher entre CMP e BMP ... 306

Redução de código e desenvolvimento rápido de aplicações ... 306

Desempenho ... 306

Bugs ... 306

Controle ... 307

Servidor de aplicações e independência de banco de dados ... 307

Relacionamentos ... 307

Curva de aprendizagem e custo ... 308

Como escolher a granularidade certa para beans de entidade ... 308

Dicas e truques de persistência ... 309

Cuidado com a não-correspondência de impedância objeto-relacional . 309 SQL hard-coded versus soft-coded ... 309

Quando utilizar procedures armazenadas ... 310

(6)

Utilize seu modelo de objeto do EJB para orientar o modelo de dados . 312

Siga um bom processo de projeto de dados ... 313

Utilize chaves substitutas ... 313

Entenda os impactos de atualizações em banco de dados ... 314

Controle de versão dos componentes EJB ... 314

Como viver com um projeto de banco de dados legado ... 315

O tratamento de grandes conjuntos de resultados ... 320

Resumo ... 322

Capítulo 13 Melhores práticas e otimizações de desempenho em EJB ... 323

Quando utilizar informações de estado versus informações sem estado ... 323

Quando utilizar troca de mensagens versus RMI-IIOP ... 324

Como garantir um tempo de resposta com planejamento de capacidade ... 327

Como conseguir singletons com EJB ... 328

Empacote beans de entidade com beans de sessão ... 328

Como fazer o ajuste fino de beans de entidade ... 329

Escolha entre interfaces locais e remotas ... 330

Como depurar questões do EJB ... 331

Como particionar seus recursos ... 332

Como fazer a montagem dos componentes ... 332

Desenvolvimento de componentes que sejam reutilizáveis ... 333

Quando utilizar XML em um sistema de EJB ... 334

Integração de legados com o EJB ... 334

Resumo ... 336

Capítulo 14 Clusters ... 337

Visão geral de sistemas de larga escala ... 337

O que é um sistema de larga escala ... 337

Terminologia básica ... 338

Como particionar seus clusters ... 339

Instrumentalização de EJBs clusterizados ... 342

Como clusterizar EJBs ... 342

Conceito de idempotência ... 343

Clustering de beans de sessão sem informações de estado ... 344

Clustering de beans de sessão com informações de estado ... 346

Clustering de beans de entidade ... 347

Clustering de beans baseados em mensagem ... 350

Outras questões de clustering de EJB ... 351

Primeiro contato ... 351

Lógica de acesso inicial ... 351

Resumo ... 352

Capítulo 15 Inicie seu projeto com EJB de maneira correta ... 353

Faça um levantamento dos requisitos do negócio ... 353

Decida se o J2EE é apropriado ... 353

Decida se o EJB é apropriado ... 354

Monte a equipe do seu projeto ... 356

Projete seu modelo de objetos completo ... 357

Implemente uma fatia vertical simples ... 357

Escolha um servidor de aplicações ... 359

Divida a sua equipe ... 360

Invista em ferramentas ... 360

Invista em um processo de construção padrão ... 361

Próximos passos ... 362

(7)

Capítulo 16 Como escolher um servidor EJB ... 363

A marca J2EE 1.3 ... 363

JRE plugável ... 364

Ferramentas de conversão ... 364

Mapeamentos complexos ... 364

Suporte a driver de JDBC de fornecedores independentes ... 364

Carregamento retardado ... 364

Gravações de banco de dados diferidas ... 364

Provedores de persistência plugáveis ... 365

Cache de dados na memória ... 365

Suporte de camada integrada ... 365

Escalabilidade ... 365

Alta disponibilidade ... 366

Segurança ... 366

Integração com IDE ... 366

Integração com editores UML ... 367

Balanceamento de carga inteligente ... 367

Fail-over transparente sem informações de estado ... 367

Clustering ... 367

Java Management Extension (JMX) ... 368

Suporte administrativo ... 368

Instalação a quente ... 368

Pool de instâncias ... 368

Geração automática de EJB ... 368

Desligamento limpo ... 369

Instalação em tempo real ... 369

Transações distribuídas ... 369

Arquitetura de troca de mensagens superior ... 369

Componentes EJB fornecidos ... 370

J2EE Connector Architecture (JCA) ... 370

Serviços de Web ... 370 Fluxo de trabalho ... 370 Código-fonte aberto ... 371 Serviços especializados ... 371 Critérios não-técnicos ... 371 Resumo ... 372

Capítulo 17 Integração EJB-J2EE: Como construir uma aplicação completa ... 373

Problema do negócio ... 373

Uma visualização do site da Web final ... 374

Como determinar o escopo dos requisitos técnicos ... 377

O modelo de objetos para a camada da lógica do negócio ... 377

Modelo de objetos para a camada da apresentação ... 382

Exemplo de código ... 387

(8)

Parte Quatro Apêndices... 395

Apêndice A Tutorial de RMI-IIOP e JNDI ... 397

Java RMI-IIOP ... 397

Invocações de método remotas ... 398

A interface remota ... 399

A implementação de objeto remoto ... 400

Stubs e esqueletos ... 402

Serialização de objeto e passagem de parâmetro ... 403

Como passar por valor ... 403

Serialização de objeto ... 404

O que você deve tornar transitório? ... 405

Serialização de objeto e RMI-IIOP ... 405

A Java Naming and Directory Interface (JNDI) ... 408

Serviços de nomeação e de diretório ... 408

Problemas de nomeação e diretórios ... 409

Entra em cena a JNDI ... 410

Benefícios da JNDI ... 410

Arquitetura da JNDI ... 410

Conceitos de JNDI ... 411

Como programar com a JNDI ... 414

Integração entre RMI-IIOP e JNDI ... 416

Como vincular um servidor de RMI-IIOP com JNDI ... 417

Como pesquisar um servidor de RMI-IIOP com JNDI ... 417

Resumo ... 419

Apêndice B Interoperabilidade com o CORBA ... 421

O que é CORBA ... 421

O CORBA como base para o EJB ... 421

Por que devo me preocupar com o CORBA? ... 422

Desvantagens do CORBA ... 422

Entenda como o CORBA funciona ... 422

Object Request Brokers ... 423

A Interface Definition Language do OMG ... 423

A IDL OMG mapeia para linguagens concretas ... 425

Invocações estáticas do CORBA ... 425

Os muitos serviços do CORBA ... 427

A necessidade do RMI-IIOP ... 427

A necessidade da interoperabilidade de RMI-CORBA ... 427

Combinação entre RMI e CORBA ... 428

Passos para RMI e CORBA trabalharem juntos: Uma visão geral ... 432

Cliente de RMI-IIOP com uma implementação de objeto CORBA ... 432

Cliente de CORBA com uma implementação de objeto RMI-IIOP ... 432

Como inicializar com RMI-IIOP e CORBA ... 433

Visão geral: CORBA e EJB juntos ... 433

Exemplo de código ... 434

Resumo ... 435

Apêndice C Referência para descritores de instalação ... 437

Como ler uma DTD ... 437

O elemento header e root ... 438

Definição de beans de sessão ... 439

<session> ... 439

Definição de beans de entidade ... 441

<entity> ... 441

(9)

<query> ... 443

<query-method> ... 444

<method-params> ... 444

Definição de beans baseados em mensagem ... 445

<message-driven> ... 445

<message-driven-destination> ... 446

Definição de propriedades de ambiente ... 446

<env-entry> ... 447

Definição de referências de EJB ... 447

<ejb-ref> ... 448 <ejb-local-ref> ... 449 Definição da segurança ... 449 <security-role-ref> ... 449 <security-identity> ... 450 <run-as> ... 450

Definição das fábricas de recurso ... 450

<resource-ref> ... 451 <resource-env-ref> ... 451 Definição de relacionamentos ... 452 <relationships> ... 453 <ejb-relation> ... 453 <ejb-relationship-role> ... 453 <relationship-role-source> ... 454 <cmr-field> ... 454

Definição do descritor de assembly ... 455

<assembly-descriptor> ... 456 <security-role> ... 456 <method-permission> ... 456 <container-transaction> ... 457 <exclude-list> ... 457 <method> ... 458 <method-params> ... 458

Apêndice D A EJB Query Language (EJB-QL) ... 459

Visão geral ... 459

Um exemplo simples ... 459

O poder dos relacionamentos ... 461

A sintaxe de EJB-QL ... 461 A cláusula FROM ... 462 A cláusula WHERE ... 463 A cláusula SELECT ... 465 Tabelas verdade ... 468 Nota final ... 469 Resumo ... 469

Apêndice E Guia de referência rápida sobre o EJB ... 471

Diagramas de beans de sessão ... 471

Diagramas de beans de sessão sem informações de estado ... 472

Diagramas de bean de sessão com informações de estado ... 474

Diagramas de bean de entidade ... 477

Diagramas de bean controlado por mensagem ... 482

Referência de API EJB ... 484

EJBContext ... 484

EJBHome ... 485

EJBLocalHome ... 485

EJBLocalObject ... 486

(10)

EJBObject ... 487 EnterpriseBean ... 488 EntityBean ... 488 EntityContext ... 488 Handle ... 492 HomeHandle ... 492 MessageDrivenBean ... 492 MessageDrivenContext ... 493 SessionBean ... 493 SessionContext ... 495 SessionSynchronization ... 495

Referência para exceções ... 496

Referência para transação ... 497

Referências

Documentos relacionados

Resumo - A partir de dados físico – químicos de 15 amostras selecionadas de poços da área adjacente ao reservatório geminado Coremas – Mãe D’Água foram calculados

c) “Repercussões clínicas durante os primeiros cinco anos de pós-operatório de obesos mórbidos submetidos à gastroplastia em “Y de Roux”. d) “Ganho de peso após

A tu kompleta servisu instituisaun Polísia Nasional Timor Leste (PNTL) hodi bele hasa’e desempeñu servisu iha aspetu seguransa, parte Komando Jerál kompleta tan estrutura PNTL

- Num tempo específico (e.g.,12 de Setembro, 9:00 a.m.) - Após um certo período de tempo (e.g., dentro de 4 dias) - Em intervalos de tempo (e.g., cada 3

Dispõe sobre a obrigatoriedade para que os estabelecimentos de assistência técnica autorizada e similares situados no município fi xem em local visível placa com o disposto no

Esta tela também exibe um número de verificação da aderência ( ) usado pelo seu provedor de cuidados em domicílio para validar se os dados fornecidos por você são os dados

«Não procuro fazer um violino de formas perfeitas com modelos, isso não me interessa, o que me interes- sa é trabalhar com a madeira, conectar-me com ela para criar uma

Fica garantido pelos EMPREGADORES o fornecimento de VALE ALIMENTAÇÃO OU VALE REFEIÇÃO a todos os EMPREGADOS em atividade das categorias albergadas por esta CONVENÇÃO COLETIVA