Empaquetage d'application JAX-WS
Vous pouvez empaqueter une application JAX-WS (Java™ Application Programming Interface (API) for XML Web Services) comme un service Web. Un service Web JAX-WS est contenu dans un fichier WAR (web archive) ou un module WAR au sein d'un fichier EAR (Enterprise archive).
- Un fichier WEB-INF/web.xml
- Des classes annotées implémentant les services web contenus dans le module d'application
- [Facultatif] Des documents WSDL (Web Services Description Language) décrivant les services Web contenus dans le module d'application
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" 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_2_4.xsd"
version="2.4">
</web-app>
Le fichier web.xml peut contenir des éléments de servlet ou de mappage de servlet. Lorsque les personnalisations du fichier web.xml ne sont pas nécessaires, le module d'exécution WebSphere Application Server les définit de façon dynamique lors du chargement du module. Pour plus d'informations sur la configuration du fichier web.xml, consultez la rubrique relative à la personnalisation des modèles d'URL web dans le fichier web.xml des applications JAX-WS.
Les classes annotées doivent contenir au minimum une classe d'implémentation de services web qui inclut l'annotation @WebService. La définition et la spécification des annotations liées aux services web sont fournies par les spécifications JAX-WS et JSR-181. Les classes d'implémentation de services Web peuvent exister dans le répertoire WEB-INF/classes d'un fichier JAR (Java archive) contenu dans le répertoire WEB-INF/lib du fichier WAR.
Vous avez également la possibilité d'inclure des documents WSDL dans le packaging d'application JAX-WS. Si le document WSDL d'un service Web particulier est omis, le module d'exécution WebSphere Application Server construit la définition WSDL de façon dynamique à partir des annotations contenues dans les classes d'implémentation de services Web.
En commençant par WebSphere Application Server version 7.0 et ultérieure, les modules d'application Java EE 5 (modules d'application Web version 2.5 ou ultérieure ou les modules EJB version 3.0 ou ultérieure) sont analysés pour connaître les annotations permettant d'identifier les services et clients JAX-WS. Toutefois, les modules d'application antérieurs à Java EE 5 (modules d'application Web version 2.4 ou antérieure, ou modules EJB version 2.1 ou antérieure) ne font pas l'objet d'une analyse des annotations JAX-WS, par défaut, pour des raisons de performance. Dans la version 6.1 de Feature Pack for Web Services, le comportement par défaut consiste à analyser les modules d'application Web antérieurs à Java EE 5 pour identifier les services JAX-WS et à rechercher dans les modules d'application Web antérieurs à Java EE 5 et dans les modules EJB des clients de service au cours de l'installation de l'application. Dans la mesure où le comportement par défaut de WebSphere Application Server version 7.0 et ultérieure consiste à ne pas rechercher les annotations dans les modules antérieurs à Java EE 5 au cours de l'installation de l'application ou du démarrage du serveur, si vous souhaitez conserver la compatibilité antérieure avec le module de fonctions, vous devez configurer soit la propriété UseWSFEP61ScanPolicy dans l'élément META-INF/MANIFEST.MF d'un fichier WAR ou d'un module EJB, soit définir la propriété personnalisée de machine virtuelle Java, com.ibm.websphere.webservices.UseWSFEP61ScanPolicy, sur les serveurs pour en demander l'analyse pendant l'installation de l'application et le démarrage du serveur. Pour en savoir plus sur l'analyse des annotations, voir les informations relatives aux annotations JAX-WS.


Si l'interface SEI et les classes d'implémentation ne peuvent pas être regroupées avec l'application/le module, il est recommandé de regrouper les fichiers JAR contenant ces classes dans une bibliothèque partagée isolée et d'associer cette dernière à l'application/au module.
gotcha