wake-up-neo.com

Was ist der minimale Klassenpfad für einen Axis2-Client?

Ich möchte mit Maven2 einen Axis2-Client erstellen (ich greife nur auf einen Remote-Webdienst zu, ich nicht implementiere einen!) Und meinem Projekt keine 21 MB JARs hinzufügen. Was muss ich in meine pom.xml einfügen, um den Code zu kompilieren, wenn ich die WSDL mit ADB konvertiert habe?

28
Aaron Digulla

( Anmerkung: Diese Antwort wurde von Aaron Digulla selbst zur Verfügung gestellt. Was folgt, ist der genaue Text seiner eigenen Antwort.)

In maven2 ist die minimale Abhängigkeit, die festgelegt wird, damit ein ADB-Client funktioniert ("ADB" wie bei der Erstellung der Java-Klassen aus der WSDL):

    <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 ... anscheinend kann ich das nicht als die richtige Antwort markieren. Kann jemand dies bitte kopieren, damit ich seinen Beitrag kennzeichnen kann?

11
Alex

Die minimalen Gläser für den Kunden sind:

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

Die folgenden STAX-Gläser sind nicht Teil von Axis2 1.5.1 und werden benötigt, wenn Ihre JDK-Version kleiner als 6 ist:

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

Musste auch die Transporte hinzufügen

<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

Minimale Abhängigkeit für einen arbeitenden Client in Zusammenfassung


  • 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

Unterhalb der minimalen Abhängigkeiten mit Details aufgeführt

der Client-Stub verwendet die mit dem Tool% AXIS2_HOME%\bin\WSDL2Java generierte ServiceClient-Klasse für eine bestimmte WSDL.

Klassen, die von Client stub umCOMPILEtime benötigt werden


  • axiom-api-1.2.14.jar - wird zur Kompilierungszeit vom Client-Stub für 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 - wird zur Kompilierungszeit vom Client-Stub für org.Apache.axis2.databinding.ADBException benötigt
  • axis2-kernel-1.6.3.jar - wird zur Kompilierungszeit vom Client-Stub für die org.Apache.axis2.AxisFault-Klasse benötigt

Klassen, die für den erfolgreichen Aufruf des Client-Stubs umRUNtime erforderlich sind

  • axiom-impl-1.2.14.jar (ohne diese org.Apache.axiom.om.OMException: Für das Feature 'default' wurde keine Meta-Factory gefunden. Dies bedeutet normalerweise, dass sich axiom-impl.jar nicht im Klassenpfad befindet.)
  • axis2-transport-http-1.6.3.jar (ohne diese org.Apache.axis2.deployment.DeploymentException: org.Apache.axis2.transport.http.CommonsHTTPTransportSender)
  • axis2-transport-local-1.6.3.jar (ohne diese org.Apache.axis2.deployment.DeploymentException: org.Apache.axis2.transport.local.LocalTransportSender)
  • commons-codec-1.3.jar (ohne diese Java.lang.NoClassDefFoundError: org/Apache/commons/codec/DecoderException)
  • commons-httpclient-3.1.jar (ohne diese org.Apache.axis2.deployment.DeploymentException: org/Apache/commons/httpclient/HttpException)
  • commons-logging-1.1.1.jar (ohne dieses Java.lang.NoClassDefFoundError: org/Apache/commons/logging/LogFactory)
  • httpcore-4.0.jar (ohne dieses Java.lang.NoClassDefFoundError: org/Apache/http/HttpResponseFactory)
  • mail-1.4.jar (ohne dieses Java.lang.NoClassDefFoundError: javax/mail/internet/ParseException)
  • neethi-3.0.2.jar (ohne diese Java.lang.NoClassDefFoundError: org/Apache/neethi/PolicyComponent)
  • wsdl4j-1.6.2.jar (ohne diese Java.lang.NoClassDefFoundError: javax/wsdl/WSDLException)
  • XmlSchema-1.4.7.jar (ohne diese Java.lang.ClassNotFoundException: org/Apache/ws/commons/schema/XmlSchema)

org.Apache.axis2.AxisFault: Verbindung abgelehnt: Verbindung herstellen -> NUR FEHLER, wenn der Webdienst aus einem anderen Grund nicht verfügbar ist

Beachten Sie die genauen Versionen. Das Verhalten ist jedoch generisch genug, wenn sich die Verpackung zwischen den Versionen ändert. Erwähnen Sie daher die oben genannten FQCNs.

Achsenversion - 1.6.3

Tomcat Version - Apache Tomcat/7.0.64

Servlet Version - 3.0

Java.runtime.version - 1.7.0_79-b15

8
Anirtak Varma

Axis2 Version 1.6.2 würde ohne axis2-xmlbeans nicht funktionieren (obwohl dies möglicherweise damit zu tun hat, dass ich auch das axis2-wsdl2code-maven-plugin verwende. Plugin und xmlbeans als mein Datenbindungsframework). Ich habe folgenden POM:

    <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

In Axis2 Version 1.5.1 scheinen die Maven-Module umstrukturiert worden zu sein.

Meine Groovy-Skripte (mit ADB-Bindung) weisen die folgenden Abhängigkeiten auf:

@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'),
])

Das hat eine Logik. Ich könnte beim Generieren meines Stubs ein alternatives Bindungsframework verwenden oder ein alternatives Transportprotokoll zu HTTP verwenden.

Beispielcode in diesem Antwort

1
Mark O'Connor

Eigentlich brauchen Sie nur die axis-abd - Abhängigkeit, da der axis2-Kernel eine Unterabhängigkeit von axis-abd ist. Sie können es also zusammenfassen mit:

<dependency>
    <groupId>org.Apache.axis2</groupId>
    <artifactId>axis2-adb</artifactId>
    <version>1.5.1</version>
</dependency>
1
Luís Duarte

Wenn Ihr Client unter Java 6 ausgeführt wird, sollten Sie JAX-WS zum Verwenden des WS in Betracht ziehen. JAX-WS verwendet den JAXB-Standard zum Binden und Sie benötigen kein einziges zusätzliches Glas für den Client.

1
Sun

Für diejenigen, die Gradle verwenden, schließe ich hier unnötige Bibliotheken aus:

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)

}

Hier ist mein ursprünglicher Beitrag in den Gradle-Foren.

0
IvanRF