SeamFramework.orgCommunity Documentation

Parte I. Utilizando objetos contextuais

A especificação Web Beans (JSR-299) define um conjunto de serviços para o ambiente Java EE, o que torna muito simples o desenvolvimento de aplicações. Web Beans adiciona um avançado ciclo de vida e um modelo interativo sobre os tipos de componentes Java existentes, incluindo os JavaBeans e Enterprise Java Beans. Como complemento ao tradicional modelo de programação Java EE, a Web Beans provê:

Injeção de dependência, juntamente com o gerenciamento contextual do ciclo de vida, livra o usuário de uma API desconhecida de ter de perguntar e reponders às seguintes questões:

Um Web Bean especifica apenas o tipo e a semântica de outros Web Beans dos quais que ele dependa. Ele não precisa ser consciente do próprio ciclo de vida, implementação concreta, modelo de threading ou outro cliente de qualquer Web Bean de que ele dependa.Melhor ainda: a implementação concreta, ciclo de vida e o modelo de threading do Web Bean de que ele dependa podem variar de acordo com o cenário de implantação, sem afetar qualquer cliente.

Eventos, interceptadores e decoradores permitem o fraco acoplamento que é inerente nesse modelo:

Mais importante, Web Beans oferece todas essas facilidades de uma maneira typesafe. Web Beans nunca utiliza identificadores baseados em strings para determinar o modo como os objetos se relacionam. XML continua a ser uma opção, mas raramente é utilizado. Em vez disso, Web Beans utiliza a informação de tipo que está disponível no modelo de objeto Java, juntamente com um novo padrão, chamado anotações de binding, para interconectar Web Beans, suas dependências, seus interceptadores e decoradores e seus consumidores de eventos.

Os serviços dos Web Beans são genéricos e aplicados aos seguintes tipo de componentes existentes no ambiente Java EE:

Web Beans provê ainda pontos de integração necessários para que outros tipos de componentes definidos pelas futuras especificações Java EE ou por frameworks não-padrão possam ser transparentemente integrados com a Web Beans, tirando proveito dos serviços da Web Beans e interagindo com qualquer outro tipo de Web Bean.

A Web Beans foi influenciada por inúmeros frameworks Java existentes, incluindo Seam, Guice e Spring. Entretanto, Web Beans tem suas prórias características: mais typesafe que o Seam, mais stateful e menos centrada em XML que o Spring, mais web e capaz para aplicações corporativas que o Guice.

O mais importante: Web Beans é um padrão do JCP, que se integra transparentemente com o Java EE e com qualquer outro ambiente Java SE em que o EJB Lite embutível esteja disponível.

Índice

1. Introdução a Web Beans
1.1. Seu primeiro Web Bean
1.2. O que é um Web Bean?
1.2.1. Tipos de API, tipos de binding e injeção de dependências
1.2.2. Tipos de publicação (deployment types)
1.2.3. Escopo
1.2.4. Nomes Web Beans e Unified EL
1.2.5. Tipos de interceptor binding
1.3. Que tipos de objetos podem ser Web Beans?
1.3.1. Web Beans Simples
1.3.2. Web Beans corporativos (Enterprise Web Beans)
1.3.3. Métodos produtores (producer methods)
1.3.4. JMS endpoints
2. Exemplo de aplicação web JSF
3. Getting started with Web Beans, the Reference Implementation of JSR-299
3.1. Utilizando o JBoss AS 5
3.2. Utilizando o Apache Tomcat 6.0
3.3. Utilizando o GlassFish
3.4. O exemplo numberguess
3.4.1. The numberguess example in Tomcat
3.4.2. The numberguess example for Apache Wicket
3.4.3. The numberguess example for Java SE with Swing
3.5. O exemplo translator
4. Injeção de Dependências
4.1. Anotações de ligação (binding annotations)
4.1.1. Binding annotations with members
4.1.2. Combinações de anotações de binding
4.1.3. Anotações de binding e métodos produtores
4.1.4. O tipo padrão de binding
4.2. Tipo de deploy
4.2.1. Ativando tipos de implantação (deployment types)
4.2.2. Precedencia dos tipos de deploy
4.2.3. Exemplo de tipos de deploy
4.3. Fixing unsatisfied dependencies
4.4. Proxies clientes
4.5. Obtendo um Web Bean via lookup programaticamente
4.6. Chamadas ao ciclo de vida, @Resource, @EJB e @PersistenceContext
4.7. O objeto InjectionPoint
5. Escopos e contextos
5.1. Tipos de escopo
5.2. Escopos pré-definidos
5.3. O escopo de conversação
5.3.1. Demarcação de contexto
5.3.2. Propagação de conversação
5.3.3. Timeout de conversação
5.4. O dependent pseudo-scope
5.4.1. A anotação @New
6. Métodos produtores
6.1. Escopo de um método produtor
6.2. Injeção em métodos produtores
6.3. Uso do @New em métodos produtores