Vous pouvez configurer les applications JAX-RS (Java™ API for RESTful Web Services) de différentes manières en fonction de 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.
Pourquoi et quand exécuter cette tâche
La spécification JAX-RS 1.1 propose plusieurs nouvelles façons de configurer une application JAX-RS.Vous pouvez notamment utiliser l'analyse des annotations intégrée pour configurer automatiquement l'application. Vous pouvez éventuellement ajouter des sous-classes javax.ws.rs.core.Application à l'application, puis ajouter les modèles d'URL requis à l'aide de l'annotation javax.ws.rs.ApplicationPath ou d'une définition de servlet web.xml. Lorsque vous utilisez l'implémentation IBM® JAX-RS, il est inutile de préciser l'implémentation de la classe du servlet, car elle est ajoutée automatiquement à la configuration du module web au démarrage de l'application JAX-RS.
Si vous utilisez un fichier web.xml, il doit obligatoirement être du type Java Servlet 3.0.
Procédure
- Configurez l'application JAX-RS avec une seule application JAX-RS par défaut dans le fichier web.xml. Utilisez cette méthode si vous n'avez besoin que d'une application JAX-RS et toutes les classes de ressource sont situées derrière un seul modèle d'URL. Cette méthode vous permet également de définir des contraintes de sécurité, si nécessaire.
- Ajoutez toutes les classes de ressource et de fournisseur JAX-RS au répertoire WEB-INF/classes ou WEB-INF/lib de l'application web. Il n'est pas utile d'ajouter une sous-classe javax.ws.rs.core.Application à l'application web.
- Dans le fichier web.xml, ajoutez une définition de servlet avec javax.ws.rs.core.Application comme nom du servlet. Il est inutile d'ajouter une classe de servlet.Vous devez, en revanche, ajouter le modèle d'URL du servlet au fichier web.xml. L'environnement d'exécution du serveur d'applications ajoute l'implémentation spécifique IBM JAX-RS à la configuration du module web au démarrage de l'application JAX-RS, par exemple :
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Les ressources JAX-RS sont maintenant disponibles à une adresse URL comme celle-ci :http://{nom_hôte}:{port}/{racine_contexte_module_Web}/{valeur_du_modèle_d'URL_de_Web.xml}/{valeur_de_@javax.ws.rs.Path}
- Configurez l'application JAX-RS à l'aide de la sous-classe javax.ws.rs.core.Application et du fichier web.xml. Utilisez cette méthode si vous avez besoin de plusieurs applications JAX-RS, ou si seules des ressources spécifiques dans des applications JAX-RS particulières avec des modèles d'URL spécifiques vous sont nécessaires. Cette méthode vous permet également de définir des contraintes de sécurité, si nécessaire.
- Créez une sous-classe javax.ws.rs.core.Application. Dans vos méthodes javax.ws.rs.core.Application subclass getClasses() ou getSingletons(), renvoyez les ressources et les fournisseurs JAX-RS pertinents.Si vous renvoyez des ensembles vides dans les deux méthodes getClasses() et getSingletons(), toutes les classes de ressource et de fournisseur JAX-RS trouvées dans l'application sont ajoutées à la sous-classe de l'application, par exemple :
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
Dans cet exemple, les implémentations par défaut de la sous-classe javax.ws.rs.core.Application et des méthodes getClasses() et getSingletons(), qui renvoient des ensembles vides, sont utilisées. C'est pourquoi toutes les classes JAX-RS pertinentes sont présumées être renvoyées par la sous-classe javax.ws.rs.core.Application.
- Ajoutez la sous-classe javax.ws.rs.core.Application à l'application web.
- Ajoutez une définition partielle de servlet dans le fichier web.xml. Le nom du servlet est le nom complet de la sous-classe javax.ws.rs.core.Application.Ne définissez pas la classe du servlet. Vous devez, en revanche, ajouter le modèle d'URL du servlet au fichier web.xml.L'environnement d'exécution du serveur d'applications ajoute l'implémentation spécifique IBM JAX-RS à la configuration du module web au démarrage de l'application JAX-RS, par exemple :
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>com.example.MyApplication</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>com.example.MyApplication</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Les ressources JAX-RS sont maintenant disponibles à une adresse URL comme celle-ci :http://{nom_hôte}:{port}/{racine_contexte_module_Web}/{valeur_du_modèle_d'URL_de_Web.xml_pour_la_sous-classe_d'application}/{valeur_de_@javax.ws.rs.Path}
- Configurez l'application JAX-RS sans fichier web.xml. Utilisez cette méthode si vous ne voulez pas utiliser de fichier web.xml. Il n'est pas possible de définir de contraintes de sécurité avec cette méthode. Pour définir des contraintes de sécurité, un fichier web.xml est nécessaire.
- Créez une sous-classe javax.ws.rs.core.Application. Dans vos méthodes javax.ws.rs.core.Application subclass getClasses() ou getSingletons(), renvoyez les ressources et les fournisseurs JAX-RS pertinents.Si vous renvoyez des ensembles vides dans les deux méthodes getClasses() et getSingletons(), toutes les classes de ressource et de fournisseur JAX-RS trouvées dans l'application sont ajoutées à la sous-classe de l'application, par exemple :
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
Dans cet exemple, les implémentations par défaut de la sous-classe javax.ws.rs.core.Application et des méthodes getClasses() et getSingletons(), qui renvoient des ensembles vides, sont utilisées. C'est pourquoi toutes les classes JAX-RS pertinentes sont présumées être renvoyées par la sous-classe javax.ws.rs.core.Application.
- Ajoutez une annotation javax.ws.rs.ApplicationPath à la sous-classe javax.ws.rs.core.Application. L'annotation ApplicationPath est prise en charge par la spécification JAX-RS 1.1.La valeur de l'annotation ApplicationPath est utilisée comme modèle d'URL du servlet, qui est équivalent au modèle d'URL du servlet présent dans le fichier web.xml, par exemple :
package com.example;
@javax.ws.rs.ApplicationPath("rest")
public class MyApplication extends javax.ws.rs.core.Application {
}
- Ajoutez la sous-classe javax.ws.rs.core.Application à l'application web. Au démarrage de l'application, les ressources sont disponibles à l'adresse URL suivante :
http://{nom_hôte}:{port}/{racine_contexte_module_Web}/{valeur_de_@javax.ws.rs.ApplicationPath}/{valeur_de_@javax.ws.rs.Path}
Résultats
Vous avez configuré l'application JAX-RS à l'aide des méthodes JAX-RS 1.1 prises en charge, en tirant partie de l'analyse des annotations dans la configuration automatique de l'application.