Question

Je souhaite créer un client Axis2 (je n'accède qu'à un service Web distant, je ne pas en implémentant 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 après avoir converti le WSDL avec ADB?

Était-ce utile?

La solution

( 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 façon 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. Est-ce que quelqu'un peut copier ceci pour que je puisse signaler son message?

Autres conseils

Les fichiers jar minimum pour le client sont les suivants:

  • activation-1.1.jar
  • axiom-api-1.2.8.jar
  • axiom-impl-1.2.8.jar
  • axis2-adb-1.5.1.jar
  • axis2-kernel-1.5.1.jar
  • axis2-transport-http-1.5.1.jar
  • axis2-transport-local-1.5.1.jar
  • commons-codec-1.3.jar
  • commons-httpclient-3.1.jar
  • commons-logging-1.1.1.jar
  • httpcore-4.0.jar
  • mail-1.4.jar
  • neethi-2.0.4.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.3.jar

Les fichiers STAX ci-dessous ne font pas partie de la version Axis2 1.5.1 et seront nécessaires si votre version du kit JDK est inférieure à 6:

  • stax-1.2.0.jar
  • stax-api-1.0.1.jar

Il fallait également 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 dans le résumé

  • axiom-api-1.2.14.jar
  • axiom-impl-1.2.14.jar
  • axis2-adb-1.6.3.jar
  • axis2-kernel-1.6.3.jar
  • axis2-transport-http-1.6.3.jar
  • axis2-transport-local-1.6.3.jar
  • commons-codec-1.3.jar
  • commons-httpclient-3.1.jar
  • commons-logging-1.1.1.jar
  • httpcore-4.0.jar
  • mail-1.4.jar
  • neethi-3.0.2.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.7.jar

Liste ci-dessous les dépendances minimales avec des détails

Le stub 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 d'axes sur le chemin de classe, ce qui est plus facile en définissant AXIS_HOME)

Classes requises par le stub client au moment de COMPILE

  • axiom-api-1.2.14.jar - requis au moment de la compilation par le stub client pour org.apache.axiom.om.OMElement, org.apache.axiom.soap.SOAPEnvelope, org.apache.axiom.soap. SOAPFactory, org.apache.axiom.om.OMNamespace
  • axis2-adb-1.6.3.jar - requis au moment de la compilation par le stub client pour org.apache.axis2.databinding.ADBException
  • axis2-kernel-1.6.3.jar - requis au moment de la compilation par le stub client pour org.apache.axis2.AxisFault Class

Classes requises pour un appel réussi du stub client au moment de RUN

  • axiom-impl-1.2.14.jar (sans cette org.apache.axiom.om.OMException: aucune méta-fabrique trouvée pour la fonctionnalité 'default'; cela signifie généralement qu'axiom-impl.jar n'est pas dans le chemin d'accès aux classes)
  • axis2-transport-http-1.6.3.jar (sans cette exception org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.http.CommonsHTTPTransportSender)
  • axis2-transport-local-1.6.3.jar (sans cette org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.local.LocalTransportSender)
  • commons-codec-1.3.jar (sans ceci java.lang.NoClassDefFoundError: org / apache / commons / codec / DecoderException)
  • commons-httpclient-3.1.jar (sans cette org.apache.axis2.deployment.DeploymentException: org / apache / commons / httpclient / HttpException)
  • commons-logging-1.1.1.jar (sans cette java.lang.NoClassDefFoundError: org / apache / commons / logging / LogFactory)
  • httpcore-4.0.jar (sans cette erreur java.lang.NoClassDefFoundError: org / apache / http / HttpResponseFactory)
  • mail-1.4.jar (sans ceci java.lang.NoClassDefFoundError: javax / mail / internet / ParseException)
  • neethi-3.0.2.jar (sans ce java.lang.NoClassDefFoundError: org / apache / neethi / PolicyComponent)
  • wsdl4j-1.6.2.jar (sans cela java.lang.NoClassDefFoundError: javax / wsdl / WSDLException)
  • XmlSchema-1.4.7.jar (sans cette exception java.lang.ClassNotFoundException: org / apache / ws / commons / schema / XmlSchema)

org.apache.axis2.AxisFault: Connexion refusée: connectez-vous - > ERREUR UNIQUEMENT si le service Web n'est pas opérationnel 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 à la version, mentionnez donc les FQCN ci-dessus -

Version de l'axe - 1.6.3

Version Tomcat - Apache Tomcat / 7.0.64

Version du servlet - 3.0

java.runtime.version - 1.7.0_79-b15

Axis2 version 1.6.2 ne fonctionnerait pas sans axis2-xmlbeans (bien que cela puisse avoir quelque chose à voir avec le fait que j'utilise également le axis2-wsdl2code- plugin maven et xmlbeans comme infrastructure 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>

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.

En fait, vous n'avez besoin que des dépendances axe-et , car axe2-kernel est une sous-dépendance de axe-abd . Par conséquent, vous pouvez le résumer avec:

<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-adb</artifactId>
    <version>1.5.1</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 à cela. 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épondre

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)

}

Voici est mon article original sur les forums Gradle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top