Je souhaite créer un client Axis2 (je n'accède qu'à un service Web distant, je suis not en implémente un!) Avec Maven2 et je ne souhaite pas ajouter 21 Mo de fichiers JAR à mon projet. Que dois-je mettre dans mon pom.xml pour compiler le code lorsque j'ai converti le WSDL avec ADB?
( Remarque: Cette réponse a été fournie par Aaron Digulla lui-même. Ce qui suit est le texte exact de sa propre réponse.)
Dans maven2, la dépendance minimale définie pour faire fonctionner un client ADB ("ADB" comme dans la manière dont vous avez créé les classes Java à partir du WSDL) est la suivante:
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>1.4.1</version>
</dependency>
Hmmm ... il semble que je ne puisse pas signaler cela comme étant la bonne réponse. Quelqu'un peut-il s'il vous plaît copier ceci afin que je puisse signaler son poste?
Les pots minimum pour le client sont:
Les pots STAX ci-dessous ne font pas partie de la version Axis2 1.5.1 et seront nécessaires si votre version de JDK est inférieure à 6:
Il fallait aussi ajouter les transports
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-transport-local</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-transport-http</artifactId>
<version>1.5.4</version>
</dependency>
Dépendance minimale pour un client actif en résumé
Ci-dessous les dépendances minimales avec des détails
le module de remplacement client utilise la classe ServiceClient générée avec l'outil% AXIS2_HOME%\bin\WSDL2Java par rapport à un WSDL donné (pour générer, vous aurez besoin de tous les fichiers jar de l'axe du chemin de classe, ce qui est plus facile en définissant AXIS_HOME).
org.Apache.axis2.AxisFault: Connexion refusée: connectez -> ERREUR UNIQUEMENT si le service Web n'est pas activé ou accessible pour une autre raison.
Notez la (les) version (s) exacte (s), mais le comportement serait suffisamment générique, sous réserve des modifications d’emballage apportées d’une version à l’autre. Par conséquent, mentionnez les FQCN ci-dessus.
Version de l'axe - 1.6.3
Version Tomcat - Apache Tomcat/7.0.64
Version Servlet - 3.0
Java.runtime.version - 1.7.0_79-b15
Axis2 version 1.6.2 ne fonctionnerait pas pour moi sans axis2-xmlbeans (bien que cela puisse avoir quelque chose à voir avec le fait que j'utilise également le axis2-wsdl2code-maven-plugin plugin et xmlbeans comme cadre de liaison de données). J'ai le POM suivant:
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-transport-http</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-transport-local</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-xmlbeans</artifactId>
<version>1.6.2</version>
</dependency>
Dans Axis2 version 1.5.1, les modules maven semblent avoir été restructurés.
Mes scripts Groovy (Utilisation de la liaison ADB) ont les dépendances suivantes:
@Grapes([
@Grab(group='org.Apache.axis2', module='axis2-kernel', version='1.5.1'),
@Grab(group='org.Apache.axis2', module='axis2-adb', version='1.5.1'),
@Grab(group='org.Apache.axis2', module='axis2-transport-local', version='1.5.1'),
@Grab(group='org.Apache.axis2', module='axis2-transport-http', version='1.5.1'),
])
Il y a une logique à ceux-ci. Je pourrais utiliser un autre cadre de liaison lors de la génération de mon talon ou un protocole de transport alternatif à HTTP.
Exemple de code dans cette réponse
En fait, vous n'avez besoin que de la dépendance axis-abd puisque le axis2-kernel est une sous-dépendance de axis-abd . Par conséquent, vous pouvez résumer avec:
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>1.5.1</version>
</dependency>
Si votre client s'exécute sur Java 6, envisagez d'utiliser JAX-WS pour utiliser le WS. JAX-WS utilise la norme JAXB pour la liaison et vous n'avez pas besoin d'un seul fichier jar supplémentaire pour le client.
Pour ceux qui utilisent Gradle , j'exclus ici les bibliothèques inutiles:
dependencies {
ext.compileEx = { lib, exModules, exGroups ->
compile (lib) {
exModules.each { exclude module : "$it" }
exGroups.each { exclude group: "$it" }
}
}
List axisExModules = [ 'axiom-compat', 'jaxen', 'Apache-mime4j-core' ]
List axisExGroups = [ 'javax.servlet', 'commons-fileupload', 'org.Apache.woden',
'javax.ws.rs', 'org.Apache.geronimo.specs', 'org.codehaus.woodstox' ]
compileEx ('org.Apache.axis2:axis2-adb:1.6.3', axisExModules, axisExGroups)
compileEx ('org.Apache.axis2:axis2-transport-local:1.6.3', axisExModules, axisExGroups)
compileEx ('org.Apache.axis2:axis2-transport-http:1.6.3', axisExModules, axisExGroups)
}
Ici est mon message original dans les forums Gradle.