SeamFramework.orgCommunity Documentation
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ê:
um ciclo de vida melhorado para componentes stateful, vinculados a contextos bem definidos,
uma abordagem typesafe para injeção de dependência,
interação via notificação de eventos, e
uma melhor abordagem para associar interceptadores a componentes, juntamente com um novo tipo de interceptador, chamado de decorador, que é mais adequado para utilização na resolução de problemas de negócio.
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:
qual o ciclo de vida desse objeto?
quantos clientes simultâneos eu posso ter?
é multithread?
de onde posso obter um?
eu preciso explicitamente destruí-lo?
onde devo manter minha referência quando não estou usando-o diretamente?
como posso adicionar uma camada de indireção, de modo que a implementação desse objeto possa variar em tempo de implantação?
como compartilhar esse objeto entre outros objetos?
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:
notificadores de eventos desacoplam os produtores de eventos dos consumidores dos eventos,
interceptadores desacoplam questões técnicas da lógica de negócios, e
decoradores permitem que questões de negócios sejam compartimentadas.
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:
todos JavaBeans,
todos EJBs, e
todos os Servlets.
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