Pergunta

Eu quero construir um cliente Axis2 (eu só estou acessando um serviço web remoto, eu sou não implementação de um!) Com Maven2 e eu não quero adicionar 21MB de JARs para meu projeto. O que eu tenho para colocar no meu pom.xml para compilar o código quando eu converti o WSDL com ADB?

Foi útil?

Solução

( Nota:.. Esta resposta foi fornecido pelo próprio Aaron Digulla O que se segue é o texto exato da sua própria resposta)

Em maven2, o conjunto mínimo de dependência para fazer um trabalho de cliente ADB ( "ADB", como na maneira que você criou as classes Java a partir do WSDL) é o seguinte:

    <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 eu não pode sinalizar que, como a resposta correta. Alguém por favor pode copiar este para que eu possa flag seu posto?

Outras dicas

Os frascos mínimos para o cliente são:

  • activation-1.1.jar
  • axioma-api-1.2.8.jar
  • axioma-impl-1.2.8.jar
  • eixo2-adb-1.5.1.jar
  • eixo2-kernel-1.5.1.jar
  • eixo2-transport-http-1.5.1.jar
  • eixo2-transporte-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
  • correio 1.4.jar
  • neethi-2.0.4.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.3.jar

STAX frascos abaixo não fazem parte do Axis2 1.5.1 liberação e será necessário se a sua versão JDK é inferior a 6:

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

teve que adicionar os transportes, também

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

dependência mínima para um cliente que trabalha em resumo


  • axioma-api-1.2.14.jar
  • axioma-impl-1.2.14.jar
  • eixo2-adb-1.6.3.jar
  • eixo2-kernel-1.6.3.jar
  • eixo2-transport-http-1.6.3.jar
  • eixo2-transporte-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
  • correio 1.4.jar
  • neethi-3.0.2.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.7.jar

A lista abaixo as dependências mínimas com detalhes

stub cliente utiliza o Classe ServiceClient gerado com% AXIS2_HOME% \ bin \ ferramenta WSDL2Java contra um determinado WSDL (para gerar você precisaria de todos os frascos eixo no classpath, alcançado com mais facilidade, definindo AXIS_HOME)

Classes exigido pelo esboço Cliente no COMPILE tempo


  • axioma-api-1.2.14.jar - necessária no tempo de compilação por stub cliente para org.apache.axiom.om.OMElement, org.apache.axiom.soap.SOAPEnvelope, org.apache.axiom.soap. SOAPFactory, org.apache.axiom.om.OMNamespace
  • eixo2-adb-1.6.3.jar - necessária no tempo de compilação por stub cliente para org.apache.axis2.databinding.ADBException
  • eixo2-kernel-1.6.3.jar - necessária no tempo de compilação por stub cliente para org.apache.axis2.AxisFault Class

Classes necessário para invocação bem sucedida de stub Cliente no RUN tempo

  • axioma-impl-1.2.14.jar (sem este org.apache.axiom.om.OMException: Não fábrica meta encontrados para recurso 'default', o que normalmente significa que axioma-impl.jar não está no classpath)
  • eixo2-transport-http-1.6.3.jar (sem este org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.http.CommonsHTTPTransportSender)
  • eixo2-transporte-1.6.3.jar local (sem este org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.local.LocalTransportSender)
  • commons-codec-1.3.jar (sem este java.lang.NoClassDefFoundError: org / apache / commons / codec / DecoderException)
  • commons-httpclient-3.1.jar (sem este org.apache.axis2.deployment.DeploymentException: org / apache / commons / httpclient / HttpException)
  • commons-logging-1.1.1.jar (sem este java.lang.NoClassDefFoundError: org / apache / commons / logging / LogFactory)
  • httpcore-4.0.jar (sem este java.lang.NoClassDefFoundError: org / apache / http / HttpResponseFactory)
  • correio 1.4.jar (sem este java.lang.NoClassDefFoundError: javax / mail / internet / ParseException)
  • neethi-3.0.2.jar (sem este java.lang.NoClassDefFoundError: org / apache / neethi / PolicyComponent)
  • wsdl4j-1.6.2.jar (sem este java.lang.NoClassDefFoundError: javax / wsdl / WSDLException)
  • XmlSchema-1.4.7.jar (sem este java.lang.ClassNotFoundException: org / apache / ws / commons / schema / XmlSchema)

org.apache.axis2.AxisFault: Conexão recusada: conectar -> erro apenas se o serviço web não é para cima ou acessível por alguma outra razão

Observe a versão exata (s), no entanto comportamento estaria sujeito bastante genérico para embalar as mudanças através de versão, portanto, mentionined os FQCNs acima -

Axis Version - 1.6.3

Tomcat Version - Apache Tomcat / 7.0.64

versão Servlet - 3.0

java.runtime.version - 1.7.0_79-b15

Axis2 versão 1.6.2 não funcionaria para mim, sem eixo2-XMLBeans (embora isso pode ter algo a ver com o fato de que eu também estou usando o eixo2-wsdl2code- maven-plugin plugin e XMLBeans como quadro vinculativo meus dados). Eu tenho o seguinte 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 o seu cliente está sendo executado no Java 6, considere usar JAX-WS para consumir o WS. JAX-WS usa o padrão JAXB para ligar e você não precisa de um único frasco extra para o cliente.

Na verdade, você só precisa do eixo abd dependência desde o eixo2-kernel é um sub-dependência de eixo abd . Portanto, você pode resumir com:

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

Em Axis2 versão 1.5.1 os módulos Maven parecem ter sido reestruturado.

roteiros Meu Groovy (Usando ligação ADB) tem as seguintes dependências:

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

Há uma lógica para estes. Eu poderia usar uma estrutura de ligação alternativa ao gerar o meu esboço ou poderia usar um protocolo de transporte alternativa para HTTP.

O código de exemplo neste resposta

Para aqueles que usam Gradle , aqui eu excluir bibliotecas desnecessárias:

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)

}

Aqui é meu post original nos fóruns Gradle.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top