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

  1. Configure o ambiente de desenvolvimento.
    1. Antes de iniciar o desenvolvimento de aplicativos JAX-RS, é necessário configurar o ambiente de desenvolvimento incluindo as bibliotecas JAX-RS no caminho de classe.
  2. Definir os recursos nos aplicativos da Web JAX-RS.
    1. Os recursos são o bloco de construção básico de um serviço RESTful. Os recursos podem conter dados estáticos ou atualizados dinamicamente. Os exemplos de recursos a partir de um aplicativo de armazenamento de manual online incluem um manual, uma ordem de um armazenamento e uma coleta de usuários. Ao identificar os recursos no seu aplicativo, poderá tornar seu serviço mais útil e fácil de desenvolver.
  3. Configure o aplicativo JAX-RS.

    É possível configurar aplicativos JAX-RS de várias formas dependendo de suas necessidades. Para aproveitar a funcionalidade Java Platform, Enterprise Edition (Java EE) 6, é possível usar os recursos de varredura de anotação. Ao usar a varredura de anotação, é possível omitir uma subclasse JAX-RS javax.ws.rs.core.Application ou ter uma subclasse javax.ws.rs.core.Application minimamente definida. Como alternativa, é possível especificar o servlet ou filtro do IBM® JAX-RS se quiser usar a funcionalidade disponível no servlet e filtro do IBM JAX-RS.

    Usando um dos métodos de configuração do JAX-RS Versão 1.1, é possível omitir uma subclasse javax.ws.rs.core.Application em seu aplicativo ou ter uma subclasse javax.ws.rs.core.Application que retorne um conjunto vazio de classes para informar o ambiente de tempo de execução do JAX-RS para localizar e usar todas as classes JAX-RS no aplicativo. É possível que você queira usar este método quando não quiser ter que incluir manualmente cada classe JAX-RS relevante em uma subclasse javax.ws.rs.core.Application conforme desenvolve o aplicativo.

    Ao especificar o servlet e filtro IBM JAX-RS específicos, é possível aproveitar e garantir o comportamento do IBM JAX-RS específico. Por exemplo, usar o filtroIBM JAX-RS pode ser útil no desenvolvimento de um aplicativo da Web com uma combinação de recursos JAX-RS e arquivos JavaServer Pages (JSP) com os mesmos padrões de URL.

    Embora haja um método de configuração de JAX-RS V1.1 que suporte o uso de um arquivo web.xml opcional, se quiser especificar restrições de segurança ou funções, ou, se quiser aproveitar os outros recursos ativados usando um arquivo web.xml, você deverá especificar as informações em um arquivo web.xml.

    Escolha um dos três métodos a seguir para configurar seu aplicativo JAX-RS:

    • Configurar aplicativos JAX-RS usando métodos JAX-RS 1.1

      Use este método se quiser usar os recursos de varredura de anotação ou usar os métodos de configuração do JAX-RS 1.1. É possível usar os recursos de varredura de anotação para promover a portabilidade do aplicativo, para minimizar a quantidade de código de configuração ou para modificar o aplicativo de forma dinâmica sem mudanças no código do aplicativo.

    • Configurar o arquivo web.xml para servlets JAX-RS

      Use este método se quiser especificar os recursos que estão ativados usando os parâmetros de inicialização de servlet para alterar o comportamento e garantir que se obtém o servlet IBM JAX-RS. Ao usar os servlets, é possível definir um caminho de servlet no arquivo web.xml que é anexado à URL de base.

    • Configurar o arquivo web.xml para filtros JAX-RS

      Use este método se quiser usar o filtro quando tiver JSPs, outros servlets e filtros e recursos JAX-RS com uma combinação de padrões URL. É possível configurar o arquivo web.xml para definir filtros que indicam as possíveis URLs nas quais o filtro pode ser chamado.

  4. Implementando recursos JAX-RS com funcionalidade JCDI. É possível usar qualquer um dos recursos JCDI separadamente ou juntos para tornar os seus aplicativos mais fáceis de criar, manter e testar.
  5. Montar aplicativos da Web JAX-RS.
    1. Após desenvolver os arquivos de classe Java para o seu aplicativo da Web JAX-RS e editar o arquivo web.xml para ativar o servlet JAX-RS, você está pronto para montar o aplicativo. Monte o aplicativo da Web em um pacote WAR. É possível montar o pacote WAR em um pacote archive corporativo (EAR), se necessário.
  6. Implementar aplicativos da Web JAX-RS.
    1. Após ter montado o seu aplicativo da Web JAX-RS, é necessário implementar o seu pacote web archive (WAR) ou o pacote enterprise archive (EAR) no servidor de aplicativos.

Resultados

Você ativou um enterprise bean para que os recursos JAX-RS com funcionalidade JCDI sejam expostos para consumo.


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_jcdi
Nome do arquivo: twbs_jaxrs_jcdi.html