문제

Axis2 클라이언트를 구축하고 싶습니다 (원격 웹 서비스에만 액세스하고 있습니다. ~ 아니다 Maven2를 사용하여 하나를 구현하고 21MB의 항아리를 내 프로젝트에 추가하고 싶지 않습니다. wsdl을 ADB로 변환 할 때 코드를 컴파일하려면 pom.xml에 무엇을 넣어야합니까?

도움이 되었습니까?

해결책

(메모: 이 응답은 Aaron Digulla 자신이 제공했습니다. 다음은 자신의 대답의 정확한 텍스트입니다.)

Maven2에서는 ADB 클라이언트를 작동시키기 위해 최소 의존성이 설정되어 있습니다 (WSDL에서 Java 클래스를 만든 방식으로 "ADB").

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

흠 ... 나는 그것을 정답으로 표시 할 수없는 것 같습니다. 누군가 그의 게시물을 플래그 할 수 있도록 이걸 복사 할 수 있습니까?

다른 팁

클라이언트의 최소 항아리는 다음과 같습니다.

  • 활성화 -1.1.jar
  • Axiom-API-1.2.8.jar
  • 공리 -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
  • 커먼즈-로깅 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

아래의 Stax Jars는 Axis2 1.5.1 릴리스의 일부가 아니며 JDK 버전이 6 미만인 경우 필요합니다.

  • Stax-1.2.0.jar
  • Stax-Api-1.0.1.jar

운송도 추가해야했습니다

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

요약 된 작업 클라이언트에 대한 최소 의존성


  • 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
  • 커먼즈-로깅 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

세부 사항이있는 최소 의존성 아래에 나열되어 있습니다

클라이언트 스텁은 %Axis2_HOME % bin bin wsdl2java 도구로 생성 된 ServiceClient 클래스를 주어진 WSDL에 대해 사용합니다 (생성하려면 Axis_home을 설정하여 가장 쉽게 달성 할 수있는 모든 축 항아리가 필요합니다).

클라이언트 스텁에 필요한 클래스 엮다 시각


  • Axiom-Api-1.2.14.jar- org.apache.axiom.om.omelement, org.apache.axiom.axiom.aveap.soapenvelope, org.apache.axiom.soap.soapfactory, org .apache.axiom.om.omnamespace
  • axis2-adb-1.6.3.jar- org.apache.axis2.databinding.adbexception의 클라이언트 스터브에 의해 컴파일 시간에 필요합니다.
  • axis2-Kernel-1.6.3.jar- org.apache.axis2.axisfault class의 클라이언트 스터브에 의해 컴파일 시간에 필요합니다.

클라이언트 스텁의 성공적인 호출에 필요한 클래스 운영 시각

  • Axiom-impl-1.2.14.jar (이 org.apache.axiom.om.omexception : feature 'default'에 대한 메타 공장 없음; 이것은 일반적으로 Axiom-impl.jar가 클래스 경로에 있지 않음을 의미합니다)
  • axis2-transport-http-1.6.3.jar (이 org.apache.axis2.deployment.deploymentexception : org.apache.axis2.transport.http.commonshttptransportsender)
  • axis2-transport-local-1.6.3.jar (이 org.apache.axis2.deployment.deploymentexception : org.apache.axis2.transport.local.localtransportsender)
  • Commons-Codec-1.3.jar (이 java.lang.noclassdeffounderror : org/apache/commons/codec/decoderexception)
  • Commons-httpclient-3.1.jar (이 org.apache.axis2.deployment.deploymentexception : org/apache/commons/httpclient/httpexception)
  • Commons-Logging-1.1.1.jar (이 java.lang.noclassdeffounderror : org/apache/commons/logging/logfactory)
  • httpcore-4.0.jar (이 java.lang.noclassdeffounderror없이 : org/apache/http/httpresponsefactory)
  • Mail-1.4.jar (이 java.lang.noclassdeffounderror : javax/mail/parseexception)
  • Neethi-3.0.2.jar (이 java.lang.noclassdeffounderror없이 : org/apache/neethi/policycomponent)
  • wsdl4j-1.6.2.jar (이 java.lang.noclassdeffounderror : javax/wsdl/wsdlexception)
  • xmlschema-1.4.7.jar (이 java.lang.classnotfoundexception : org/apache/ws/commons/schema/xmlschema)

org.apache.axis2.axisfault : 연결 거부 : Connect-> 웹 서비스가 UP가 UP가 없거나 다른 이유로 액세스 할 수있는 경우에만 오류

정확한 버전에 유의하지만, 동작은 버전의 포장 변경에 따라 충분히 일반적이므로 위의 FQCN을 언급했습니다.

축 버전 - 1.6.3

Tomcat 버전 - Apache Tomcat/7.0.64

서블릿 버전 -3.0

java.runtime.version -1.7.0_79 -b15

Axis2 버전 1.6.2는없이 나에게 효과가 없을 것입니다 Axis2-Xmlbeans (이것은 내가 또한 사용한다는 사실과 관련이있을 수 있습니다. Axis2-WSDL2Code-Maven-Plugin 내 데이터 바인딩 프레임 워크로서 플러그인 및 XMLBeans). 나는 다음 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>

고객이 Java 6에서 실행중인 경우 WS를 소비하기 위해 JAX-WS를 사용하는 것을 고려하십시오. JAX-WS는 바인딩을 위해 JAXB 표준을 사용하며 클라이언트를 위해 단일 추가 항아리가 필요하지 않습니다.

사실, 당신은 만 있으면됩니다 축 -ABD 이후의 의존성 Axis2-Kernel 하위 의존성입니다 축 -ABD. 따라서 다음과 같이 요약 할 수 있습니다.

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

Axis2 버전 1.5.1에서 Maven 모듈은 재구성 된 것으로 보입니다.

내 그루비 스크립트 (ADB 바인딩 사용)는 다음과 같은 종속성이 있습니다.

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

이것에 대한 논리가 있습니다. 스텁을 생성 할 때 대체 바인딩 프레임 워크를 사용할 수 있거나 HTTP에 대체 전송 프로토콜을 사용할 수 있습니다.

이것의 예제 코드 대답

사용하는 사람들을 위해 gradle, 여기서는 불필요한 라이브러리를 제외합니다.

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)

}

여기 Gradle 포럼의 원래 게시물입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top