Frage

ich ein Axis2-Client aufbauen will (ich bin nur einen Remote-Web-Dienst zugreifen, ich bin nicht Implementierung eines!) Mit Maven2 und ich will nicht 21MB von JAR-Dateien hinzufügen zu Mein Projekt. Was muss ich in meinem pom.xml setzen den Code zu kompilieren, wenn ich die WSDL mit ADB konvertiert haben?

War es hilfreich?

Lösung

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

In maven2, die minimale Abhängigkeit ein ADB Client arbeiten ( „ADB“, wie er in der Art und Weisen Sie die Java-Klassen aus der WSDL erstellt) zu machen, ist dies:

    <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 ... es scheint, kann ich nicht kennzeichnen, das als die richtige Antwort. Kann jemand diese bitte kopieren, damit ich Flagge seinen Posten?

Andere Tipps

Die Mindest Gläser für die Kunden sind:

  • aktivierungs 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
  • E-Mail-1.4.jar
  • neethi-2.0.4.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.3.jar

STAX Gläser sind unter nicht Teil 1.5.1 Release Axis2 und ist erforderlich, wenn Sie Ihre JDK-Version ist weniger als 6:

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

Sie haben die Transporte hinzuzufügen, zu

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

Minimal-Abhängigkeit für ein Arbeits 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
  • E-Mail-1.4.jar
  • neethi-3.0.2.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.7.jar

In der folgenden Liste der minimalen Abhängigkeiten mit Details

Client-Stub verwendet die ServiceClient Klasse mit% AXIS2_HOME% \ bin \ WSDL2Java Werkzeug gegen eine bestimmte WSDL erzeugt (zum Erzeugen Sie würden alle Achsen Gläser auf Classpath müssen, am einfachsten, indem AXIS_HOME erreicht)

Klassen von Client-Stub erforderlich unter COMPILE Zeit


  • Axiom-api-1.2.14.jar - bei der Kompilierung erforderlich durch 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 - bei der Kompilierung erforderlich durch Client-Stub für org.apache.axis2.databinding.ADBException
  • axis2-kernel-1.6.3.jar - erforderlich bei der Kompilierung von Client-Stub für org.apache.axis2.AxisFault Klasse

Klassen erforderlich für eine erfolgreichen Aufruf von Client-Stub in RUN Zeit

  • Axiom-impl-1.2.14.jar (ohne diese org.apache.axiom.om.OMException: keine Meta-Fabrik für die Funktion 'default' gefunden, dies bedeutet in der Regel, dass Axiom-impl.jar nicht im Classpath ist)
  • 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 diese java.lang.NoClassDefFoundError: org / Apache / commons / logging / LogFactory)
  • httpcore-4.0.jar (ohne diese java.lang.NoClassDefFoundError: org / Apache / http / HttpResponseFactory)
  • Mail-1.4.jar (ohne diese 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: Connection refused: connect -> FEHLER, wenn der Webdienst nicht nach oben oder zugänglich aus einem anderen Grunde ist

Beachten Sie die genaue Version (en), jedoch würde das Verhalten allgemein genug unterliegen Paketierungsänderungen über Version sein, damit mentionined die FQCNs oben -

Achse Version - 1.6.3

Tomcat Version - Apache Tomcat / 7.0.64

Servlet-Version - 3.0

java.runtime.version - 1.7.0_79-b15

Axis2 Version 1.6.2 wäre für mich nicht funktionieren ohne axis2-XMLBeans (obwohl dies etwas mit der Tatsache zu tun hat, dass ich auch bin mit dem axis2-wsdl2code- maven-Plugin Plugin und XMLBeans als meine Daten verbindlichen Rahmen). Ich habe folgendes 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>

Wenn Ihr Client auf Java 6 läuft, sollten Sie die WS mit JAX-WS für raubend. JAX-WS verwendet den JAXB Standard für die Bindung und Sie nicht ein einziges zusätzliches Gefäß für die Kunden benötigen.

Eigentlich brauchen Sie nur den achsen abd Abhängigkeit, da der axis2-Kernel ist eine Unter Abhängigkeit von achsen abd . Daher können Sie es zusammenzufassen mit:

<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-adb</artifactId>
    <version>1.5.1</version>
</dependency>

In Axis2 Version 1.5.1 die Maven-Module erscheint umstrukturiert wurde.

Mein Groovy-Skripte (mit ADB-Bindung) haben folgende Abhängigkeiten:

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

Es gibt eine Logik auf diese. Ich könnte einen alternativen verbindlichen Rahmen verwenden, wenn meinen Stummel zu erzeugen oder könnte ein alternatives Transportprotokoll HTTP verwenden.

Beispiel-Code in dem Antwort

Für die Verwendung von Gradle , hier schließe ich unnötige Bibliotheken:

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top