Usando Contextos Java e Injeção de Dependência com o JAX-RS
Os provedores e recursos de raiz doJava™ API for RESTful Web Services (JAX-RS) podem ser usados em um web archive (WAR) ativado para Java Contexts and Dependency Injection (JCDI). Basta incluir um arquivo WEB-INF/beans.xml no seu arquivo WAR e quaisquer provedores e recursos de raiz do JAX-RS que sejam beans JCDI válidos podem usar a funcionalidade JCDI.
Sobre Esta Tarefa
Classes JAX-RS em um archive ativado para JCDI pode ter pontos de injeção @javax.inject.Inject anotados, participar em escopos de ciclo de vida JCDI, aumentar eventos ]JCDI, e ter interceptores de método e decoradores.
Classes de provedor e recurso de raiz JAX-RS devem ter um construtor de bean gerenciado ]JCDI válido. Em geral, se as suas classes possuem um construtor que tem um parâmetro anotado com uma anotação @javax.ws.rs.core.Contextou com qualquer anotação de parâmetro JAX-RS como @javax.ws.rs.QueryParam, você deve refatorar o seu código para usar as propriedades de bean anotado ou campos do JAX-RS em vez disso. É possível incluir um método anotado @javax.annotation.]PostConstruct para ajudar a construir o seu objeto.
Além disso, as classes de provedor e recursos de raiz JAX-RS devem ter um escopo especificado JCDI. Os escopos controlam o ciclo de vida de um bean gerenciado JCDI. Classes de recurso de raiz podem ter qualquer escopo válido como @javax.enterprise.context.RequestScoped, o que torna o comportamento da classe de recurso raiz JAX-RS o mesmo de um aplicativo ativado não ]JCDI. As subclasses javax.ws.rs.core.Application e os provedores JAX-RS devem ter a anotação @javax.enterprise.context.ApplicationScoped.
Você pode desejar usar o JCDI para desenvolver mais rápida e facilmente o seu aplicativo, assim como aumentar a possibilidade de teste do seu código. O JCDI possibilita técnicas de programação modernas como injeção de dependência, um modelo de programação baseado em evento e uma abordagem mais orientada para questões secundárias. Os desenvolvedores podem usar programação orientada para aspecto para claramente incluir funcionalidade que não faz parte da lógica de negócios principal para um método. Por exemplo, uma questão secundária é a criação de log. Alguns desenvolvedores precisam criar log da entrada e da saída sempre que um determinado método de negócios é chamado em um aplicativo. Agora os desenvolvedores podem usar a funcionalidade JCDI como interceptores e decoradores de método para incluir mais claramente essa funcionalidade. Os desenvolvedores podem usar injeção de dependência para inserir mais facilmente suas próprias implementações simuladas durante teste de unidade. O desacoplamento de dependências previamente codificadas permanentemente permite aos desenvolvedores testar componentes individuais mais facilmente.
Os beans JCDI podem injetar injeções Enterprise JavaBeans (EJBs) e usar injeções @javax.annotation.Resource para injetar recursos Java Platform, Enterprise Edition (Java EE). Os EJBs também podem ser beans JCDI. Os EJBs com anotações como @javax.ejb.Stateless também podem usar injeção de dependência JCDI e outros recursos JCDI. Os EJBs mantêm seus recursos transacionais e outros recursos EJB.
O Java Contexts and Dependency Injection (JCDI) é um novo recurso da Java Platform, Enterprise Edition (Java EE) 6. Ele pode mudar o modelo de programação para tornar os aplicativos mais fáceis de desenvolver enquanto aumenta a sustentabilidade. Os desenvolvedores JAX-RS podem usar recursos JCDI, como suporte @javax.inject.Inject, em classes do provedor e recurso raiz.
Procedimento
Resultados
Você ativou um enterprise bean para que os recursos JAX-RS com funcionalidade JCDI sejam expostos para consumo.