Axis2 클라이언트의 최소 클래스 경로는 무엇입니까?
문제
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 포럼의 원래 게시물입니다.