Domanda

Voglio costruire un client Axis2 (sto solo accedendo a un servizio web remoto, non sto non implementandolo!) con Maven2 e non voglio aggiungere 21 MB di JAR a il mio progetto. Cosa devo inserire nel mio pom.xml per compilare il codice quando ho convertito il WSDL con ADB?

È stato utile?

Soluzione

( Nota: questa risposta è stata fornita dallo stesso Aaron Digulla. Quello che segue è il testo esatto della sua stessa risposta.)

In maven2, la dipendenza minima impostata per far funzionare un client ADB (" ADB " come nel modo in cui hai creato le classi Java dal WSDL) è questa:

    <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 ... sembra che non riesca a contrassegnarlo come la risposta corretta. Qualcuno può per favore copiarlo in modo che io possa segnalare il suo post?

Altri suggerimenti

I barattoli minimi per il client sono:

  • Attivazione-1.1.jar
  • assioma-api-1.2.8.jar
  • assioma-impl-1.2.8.jar
  • axis2-ADB-1.5.1.jar
  • axis2-kernel-1.5.1.jar
  • axis2-trasporto-http-1.5.1.jar
  • axis2-trasporto-locale-1.5.1.jar
  • commons-codec-1.3.jar
  • commons-HttpClient-3.1.jar
  • commons-logging-1.1.1.jar
  • httpcore-4.0.jar
  • posta 1.4.jar
  • neethi-2.0.4.jar
  • WSDL4J-1.6.2.jar
  • XmlSchema-1.4.3.jar

I barattoli STAX di seguito non fanno parte della versione Axis2 1.5.1 e saranno necessari se la versione di JDK è inferiore a 6:

  • Stax-1.2.0.jar
  • Stax-api-1.0.1.jar

Ho dovuto aggiungere anche i trasporti

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

Dipendenza minima per un client funzionante in sintesi


  • assioma-api-1.2.14.jar
  • assioma-impl-1.2.14.jar
  • axis2-ADB-1.6.3.jar
  • axis2-kernel-1.6.3.jar
  • axis2-trasporto-http-1.6.3.jar
  • axis2-trasporto-locale-1.6.3.jar
  • commons-codec-1.3.jar
  • commons-HttpClient-3.1.jar
  • commons-logging-1.1.1.jar
  • httpcore-4.0.jar
  • posta 1.4.jar
  • neethi-3.0.2.jar
  • WSDL4J-1.6.2.jar
  • XmlSchema-1.4.7.jar

Elencato di seguito le dipendenze minime con dettagli

lo stub client utilizza la classe ServiceClient generata con lo strumento% AXIS2_HOME% \ bin \ WSDL2Java su un determinato WSDL (per la generazione occorrerebbero tutti i barattoli degli assi sul percorso di classe, ottenuto più facilmente impostando AXIS_HOME)

Classi richieste dallo stub del client al momento COMPILE


  • axiom-api-1.2.14.jar - richiesto al momento della compilazione dallo stub client per 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 - richiesto al momento della compilazione dallo stub client per org.apache.axis2.databinding.ADBException
  • axis2-kernel-1.6.3.jar - richiesto al momento della compilazione dallo stub del client per org.apache.axis2.AxisFault Class

Classi richieste per la corretta invocazione dello stub del client al RUN

  • axiom-impl-1.2.14.jar (senza questo org.apache.axiom.om.OMException: nessuna meta factory trovata per la funzione 'default'; questo di solito significa che axiom-impl.jar non è nel classpath)
  • axis2-transport-http-1.6.3.jar (senza questo org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.http.CommonsHTTPTransportSender)
  • axis2-transport-local-1.6.3.jar (senza questo org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.local.LocalTransportSender)
  • commons-codec-1.3.jar (senza questo java.lang.NoClassDefFoundError: org / apache / commons / codec / DecoderException)
  • commons-httpclient-3.1.jar (senza questo org.apache.axis2.deployment.DeploymentException: org / apache / commons / httpclient / HttpException)
  • commons-logging-1.1.1.jar (senza questo java.lang.NoClassDefFoundError: org / apache / commons / logging / LogFactory)
  • httpcore-4.0.jar (senza questo java.lang.NoClassDefFoundError: org / apache / http / HttpResponseFactory)
  • mail-1.4.jar (senza questo java.lang.NoClassDefFoundError: javax / mail / internet / ParseException)
  • neethi-3.0.2.jar (senza questo java.lang.NoClassDefFoundError: org / apache / neethi / PolicyComponent)
  • wsdl4j-1.6.2.jar (senza questo java.lang.NoClassDefFoundError: javax / wsdl / WSDLException)
  • XmlSchema-1.4.7.jar (senza questo java.lang.ClassNotFoundException: org / apache / ws / commons / schema / XmlSchema)

org.apache.axis2.AxisFault: connessione rifiutata: connect - > ERRORE SOLO se il servizio Web non è attivo o accessibile per altri motivi

Nota la versione esatta (s), tuttavia il comportamento sarebbe abbastanza generico soggetto a modifiche del pacchetto attraverso la versione, quindi, menzionato sopra le FQCN-

Versione dell'asse - 1.6.3

Versione Tomcat - Apache Tomcat / 7.0.64

Versione servlet - 3.0

java.runtime.version - 1.7.0_79-b15

Axis2 versione 1.6.2 non funzionerebbe con me senza axis2-xmlbeans (anche se questo potrebbe avere a che fare con il fatto che sto usando anche il axis2-wsdl2code- maven-plugin plugin e xmlbeans come il mio framework di associazione dei dati). Ho il seguente 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>

Se il client è in esecuzione su Java 6, prendere in considerazione l'utilizzo di JAX-WS per l'utilizzo di WS. JAX-WS utilizza lo standard JAXB per l'associazione e non è necessario un singolo jar aggiuntivo per il client.

In realtà, hai solo bisogno della dipendenza axis-e poiché axis2-kernel è una sub-dipendenza di axis-abd . Quindi puoi riassumerlo con:

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

Nella versione 1.5.1 di Axis2 i moduli Maven sembrano essere stati ristrutturati.

I miei script Groovy (usando l'associazione ADB) hanno le seguenti dipendenze:

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

C'è una logica in questi. Potrei usare un framework di associazione alternativo durante la generazione del mio stub o un protocollo di trasporto alternativo a HTTP.

Codice di esempio in questo risposta

Per coloro che utilizzano Gradle , qui escludo le librerie non necessarie:

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)

}

Qui è il mio post originale nei forum Gradle.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top