web-dev-qa-db-fra.com

Quel est le chemin de classes minimal pour un client Axis2?

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?

28
Aaron Digulla

( 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?

11
Alex

Les pots minimum pour le client sont:

  • 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 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:

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

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>
12
Renaud

Dépendance minimale pour un client actif en 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

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).

Classes requises par le stub client àCOMPILERtime


  • 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 lors de la compilation par le stub client pour org.Apache.axis2.databinding.ADBException
  • axis2-kernel-1.6.3.jar - requis lors de la compilation par le stub client pour la classe org.Apache.axis2.AxisFault

Classes requises pour un appel réussi du stub client àRUNtime

  • 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 exception org.Apache.axis2.deployment.DeploymentException: org.Apache.axis2.transport.local.LocalTransportSender)
  • commons-codec-1.3.jar (sans cette 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 ce 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 cette 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 cette 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 -> 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

8
Anirtak Varma

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>
5
chrisjleu

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

1
Mark O'Connor

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>
1
Luís Duarte

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.

1
Sun

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.

0
IvanRF