Pregunta

Quiero construir un cliente Axis2 (¡solo estoy accediendo a un servicio web remoto, no estoy implementando uno!) con Maven2 y no quiero agregar 21 MB de JAR a mi proyecto. ¿Qué debo poner en mi pom.xml para compilar el código cuando convierto el WSDL con ADB?

¿Fue útil?

Solución

( Nota: Esta respuesta fue proporcionada por el propio Aaron Digulla. Lo que sigue es el texto exacto de su propia respuesta).

En maven2, la dependencia mínima establecida para hacer que un cliente ADB funcione (" ADB " como en la forma en que creó las clases Java desde el WSDL) es esta:

    <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 ... parece que no puedo marcar eso como la respuesta correcta. ¿Alguien puede copiar esto para que pueda marcar su publicación?

Otros consejos

Los frascos mínimos para el cliente son:

  • activación-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

Los frascos STAX a continuación no forman parte de la versión Axis2 1.5.1 y serán necesarios si su versión JDK es inferior a 6:

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

También tuve que agregar los transportes

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

Dependencia mínima para un cliente que trabaja en resumen


  • 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

Listado debajo de las dependencias mínimas con detalles

el código auxiliar del cliente utiliza la clase de ServiceClient generada con la herramienta% AXIS2_HOME% \ bin \ WSDL2Java contra un WSDL dado (para generar necesitaría todos los frascos de eje en classpath, que se logran más fácilmente configurando AXIS_HOME)

Clases requeridas por el código auxiliar del cliente en hora de COMPILAR


  • axiom-api-1.2.14.jar: requerido en tiempo de compilación por el código auxiliar del cliente para 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: requerido en tiempo de compilación por el código auxiliar del cliente para org.apache.axis2.databinding.ADBException
  • axis2-kernel-1.6.3.jar: requerido en tiempo de compilación por el código auxiliar del cliente para org.apache.axis2.AxisFault Class

Clases requeridas para la invocación exitosa del código auxiliar del cliente en RUN time

  • axiom-impl-1.2.14.jar (sin este org.apache.axiom.om.OMException: no se encontró una meta fábrica para la función 'default'; esto generalmente significa que axiom-impl.jar no está en el classpath)
  • axis2-transport-http-1.6.3.jar (sin este org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.http.CommonsHTTPTransportSender)
  • axis2-transport-local-1.6.3.jar (sin este org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.local.LocalTransportSender)
  • commons-codec-1.3.jar (sin este java.lang.NoClassDefFoundError: org / apache / commons / codec / DecoderException)
  • commons-httpclient-3.1.jar (sin este org.apache.axis2.deployment.DeploymentException: org / apache / commons / httpclient / HttpException)
  • commons-logging-1.1.1.jar (sin este java.lang.NoClassDefFoundError: org / apache / commons / logging / LogFactory)
  • httpcore-4.0.jar (sin este java.lang.NoClassDefFoundError: org / apache / http / HttpResponseFactory)
  • mail-1.4.jar (sin este java.lang.NoClassDefFoundError: javax / mail / internet / ParseException)
  • neethi-3.0.2.jar (sin este java.lang.NoClassDefFoundError: org / apache / neethi / PolicyComponent)
  • wsdl4j-1.6.2.jar (sin este java.lang.NoClassDefFoundError: javax / wsdl / WSDLException)
  • XmlSchema-1.4.7.jar (sin este java.lang.ClassNotFoundException: org / apache / ws / commons / schema / XmlSchema)

org.apache.axis2.AxisFault: Conexión rechazada: connect - > ERROR SOLAMENTE si el servicio web no está activo o accesible por algún otro motivo

Tenga en cuenta la (s) versión (es) exacta (s), sin embargo, el comportamiento sería lo suficientemente genérico sujeto a cambios de empaque en la versión, por lo tanto, mencionó los FQCN arriba-

Versión del eje - 1.6.3

Versión de Tomcat - Apache Tomcat / 7.0.64

Versión de servlet - 3.0

java.runtime.version - 1.7.0_79-b15

Axis2 versión 1.6.2 no funcionaría para mí sin axis2-xmlbeans (aunque esto puede tener algo que ver con el hecho de que también estoy usando el axis2-wsdl2code- maven-plugin plugin y xmlbeans como mi marco de enlace de datos). Tengo el siguiente 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>

Si su cliente se está ejecutando en Java 6, considere usar JAX-WS para consumir el WS. JAX-WS utiliza el estándar JAXB para el enlace y no necesita un solo jar adicional para el cliente.

En realidad, solo necesita la dependencia axis-and ya que el axis2-kernel es una subdependencia de axis-abd . Por lo tanto, puede resumirlo con:

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

En Axis2 versión 1.5.1, los módulos maven parecen haber sido reestructurados.

Mis scripts Groovy (que usan el enlace ADB) tienen las siguientes dependencias:

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

Hay una lógica para estos. Podría usar un marco de enlace alternativo al generar mi código auxiliar o podría usar un protocolo de transporte alternativo a HTTP.

Código de ejemplo en este respuesta

Para aquellos que usan Gradle , aquí excluyo bibliotecas innecesarias:

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)

}

Aquí está mi publicación original en los foros de Gradle.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top