Utilisation de Java Contexts and Dependency Injection avec JAX-RS

Les ressources et fournisseurs racine JAX-RS (Java™ API for RESTful Web Services) peuvent être utilisés dans un fichier WAR (Web Archive) JCDI (Java Contexts and Dependency Injection). Il suffit d'ajouter un fichier WEB-INF/beans.xml valide. Ainsi, les ressources et fournisseurs racine JAX-RS constituant des beans JCDI valides peuvent faire appel à la fonctionnalité JCDI.

Pourquoi et quand exécuter cette tâche

Les classes JAX-RS d'une archive JCDI peuvent disposer de points d'injection annotés @javax.inject.Inject, participer aux portées de cycle de vie JCDI, générer des événements JCDI et comporter des intercepteurs de méthode et des décorateurs.

Les classes de ressources et de fournisseur racine JAX-RS doivent disposer d'un constructeur de beans gérés valide. En général, si vos classes ont un constructeur comprenant un paramètre annoté avec l'annotation @javax.ws.rs.core.Context ou une annotation de paramètre JAX-RS telle que @javax.ws.rs.QueryParam, vous devez restructurer votre code pour qu'il utilise plutôt des propriétés et des zones de bean annotées JAX-RS. Vous pouvez ajouter une méthode annotée @javax.annotation.PostConstruct pour vous aider à construire votre objet.

En outre, les classes de ressources et de fournisseur racine JAX-RS doivent disposer d'une portée JCDI spécifiée. Les portées contrôlent le cycle de vie d'un bean géré JCDI. Les classe de ressources racine peuvent comporter toute portée valide telle que @javax.enterprise.context.RequestScoped, qui confère à la classe de ressources racine JAX-RS le même comportement que celui d'une application non JCDI. Les sous-classes javax.ws.rs.core.Application et les fournisseurs JAX-RS doivent avoir la même annotation @javax.enterprise.context.ApplicationScoped.

Vous pouvez souhaiter faire appel à JCDI pour développer plus rapidement et plus facilement votre application et augmenter la testabilité de votre code. JCDI permet d'utiliser des techniques de programmation modernes, telles que l'injection de dépendance, un modèle de programmation basé sur les événements et une approche plus orientée aspect pour répondre à vos besoins transversaux. Les développeurs peuvent utiliser la programmation orientée aspect pour ajouter "proprement" à une méthode une fonctionnalité qui ne fait pas partie de la logique du coeur de métier. Par exemple, la consignation est l'un des aspects transversaux. Certains développeurs doivent journaliser l'événement d'entrée et de sortie chaque fois qu'une méthode métier donnée est appelée dans une application. Les développeurs peuvent maintenant utiliser des fonctions JCDI telles que des intercepteurs de méthode et des décorateurs pour ajouter plus proprement cette fonctionnalité. Il peuvent faire appel à l'injection de dépendance pour insérer plus facilement leurs implémentations simulées lors du test d'unité. La dissociation de dépendances auparavant codées en dur permet aux développeurs de tester plus facilement des composants individuels.

Les beans JCDI peuvent injecter des EJB (Enterprise JavaBeans) et utiliser des injections @javax.annotation.Resource pour injecter des ressource Java Platform, Enterprise Edition (Java EE). Les EJB peuvent aussi être des beans JCDI. Les EJB avec des annotations telles que @javax.ejb.Stateless peuvent également utiliser l'injection de dépendance JCDI et d'autres fonctions JCDI. Les EJB conservent leurs fonctions transactionnelles et les autres fonctionnalités propres aux EJB.

JCDI (Java Contexts and Dependency Injection) est une nouvelle fonction de Java Platform, Enterprise Edition (Java EE) 6. JDCI peut modifier le modèle de programmation pour rendre les applications plus simples à développer avec une facilité de maintenance accrue. Les développeurs JAX-RS peuvent utiliser des fonctions JCDI, telles que la prise en charge de @javax.inject.Inject, dans les classes de ressources et de fournisseur racine.

Procédure

  1. Configurez l'environnement de développement.
    1. Avant de développer des applications JAX-RS, vous devez configurer l'environnement de déploiement en ajoutant les bibliothèques JAX-RS dans le chemin d'accès aux classes.
  2. Définissez les ressources dans les applications Web JAX-RS.
    1. Les ressources sont les principaux blocs fonctionnels d'un service RESTful. Les ressources peuvent contenir des données statiques ou mises à jour dynamiquement. Un manuel, une commande et une collection d'utilisateurs sont des exemples de ressources d'une application de librairie en ligne. En identifiant les ressources dans l'application, vous améliorez l'utilité du service et facilitez son développement.
  3. Configurez l'application JAX-RS.

    Vous pouvez configurer les applications JAX-RS de plusieurs façons, selon vos besoins. Pour tirer parti de la fonctionnalité Java EE (Java Platform, Enterprise Edition) 6, vous pouvez utiliser les fonctions d'analyse des annotations. L'analyse des annotations permet d'ignorer une sous-classe JAX-RS javax.ws.rs.core.Application ou de disposer d'une sous-classe javax.ws.rs.core.Application à définition minimale. Sinon, vous pouvez aussi spécifier le servlet ou le filtre IBM® JAX-RS si vous préférez utiliser la fonction qu'ils contiennent.

    En employant l'une des méthodes de configuration JAX-RS version 1.1, vous pouvez ignorer une sous-classe javax.ws.rs.core.Application dans votre application ou disposer d'une sous-classe javax.ws.rs.core.Application qui renvoie un ensemble vide de classes pour informer l'environnement d'exécution JAX-RS qu'il doit détecter et utiliser toutes les classes JAX-RS de l'application. Cette méthode vous évite de devoir ajouter manuellement chaque classe JAX-RS appropriée à une sous-classe javax.ws.rs.core.Application lors du développement de l'application.

    En indiquant le servlet ou le filtre IBM JAX-RS spécifique, vous pouvez bénéficier d'un comportement IBM JAX-RS particulier et le garantir. Par exemple, l'utilisation du filtre IBM JAX-RS peut faciliter le développement d'une application Web faisant appel à un mélange de ressources JAX-RS et de fichiers JSP (JavaServer Pages) avec les mêmes modèles d'URL.

    Bien qu'une méthode de configuration JAX-RS version 1.1 prenne en charge le fichier web.xml facultatif, ce dernier est obligatoire pour indiquer des contraintes ou des rôles de sécurité ou pour tirer parti de fonctions activées avec un fichier web.xml.

    Choisissez l'une des trois méthodes suivantes pour configurer votre application JAX-RS :

    • Configuration d'applications JAX-RS selon les méthodes JAX-RS 1.1

      Utilisez cette méthode pour employer les fonctions d'analyse des annotations ou les méthodes de configuration JAX-RS 1.1. Vous pouvez utiliser les fonctions d'analyse des annotations pour promouvoir la portabilité de l'application, réduire la quantité de code de configuration ou modifier l'application dynamiquement sans changer son code.

    • Configurez le fichier web.xml pour les servlets JAX-RS

      Utilisez cette méthode pour indiquer des fonctions activées à l'aide des paramètres d'initialisation du servlet, afin d'obtenir un changement de comportement et le servlet IBM JAX-RS. Lorsque vous utilisez des servlets, vous pouvez définir un chemin de servlet dans le fichier web.xml qui est ajouté à l'URL de base.

    • Configuration du fichier web.xml pour les filtres JAX-RS

      Utilisez cette méthode pour employer le filtre lorsque vous avez des fichiers JSP, d'autres servlets et filtres ainsi que des ressources JAX-RS incluant plusieurs masques d'URL. Vous pouvez configurer le fichier web.xml pour définir les filtres qui indiquent les adresses URL sur lesquelles ils peuvent être appelés.

  4. Implémentez des ressources JAX-RS avec la fonctionnalité JCDI. Vous pouvez utiliser les fonctions JCDI séparément ou ensemble pour faciliter la création, la gestion et le test de vos applications.
  5. Assemblez les applications Web JAX-RS.
    1. Après avoir développé les fichiers de classe Java de l'application Web JAX-RS et modifié le fichier web.xml pour activer le servlet JAX-RS, vous pouvez assembler l'application. Assemblez l'application Web dans un package WAR. Vous pouvez assembler le package WAR dans un package EAR (archive d'entreprise), le cas échéant.
  6. Déployez les applications Web JAX-RS.
    1. Après avoir assemblé l'application Web JAX-RS, vous devez déployer le package WAR (Web archive) ou EAR (enterprise archive) sur le serveur d'applications.

Résultats

Vous avez activé un bean enterprise pour exposer les ressources JAX-RS avec la fonctionnalité JCDI pour consommation.


Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_jcdi
Nom du fichier : twbs_jaxrs_jcdi.html