Axis2クライアントの最小クラスパスは何ですか?
質問
Maven2でAxis2クライアントを構築したい(リモートWebサービスにアクセスしているだけで、実装していない !)ために21MBのJARを追加したくない私のプロジェクト。 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>
うーん...それを正しい答えとしてフラグを立てることはできないようです。誰かがこれをコピーして、彼の投稿にフラグを立てることができますか?
他のヒント
クライアントの最小jarは次のとおりです。
- activation-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
以下のSTAX jarは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
- 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
詳細を含む最小依存関係の下にリスト
クライアントスタブは、特定のWSDLに対して%AXIS2_HOME%\ bin \ WSDL2Javaツールで生成されたServiceClientクラスを使用します(生成には、クラスパス上のすべての軸jarが必要です。AXIS_HOMEを設定することで最も簡単に実現できます)
COMPILE 時にクライアントスタブに必要なクラス
- axiom-api-1.2.14.jar-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-org.apache.axis2.databinding.ADBExceptionのクライアントスタブがコンパイル時に必要です
- axis2-kernel-1.6.3.jar-org.apache.axis2.AxisFaultクラスのクライアントスタブがコンパイル時に必要です
RUN 時にクライアントスタブを正常に呼び出すために必要なクラス
- axiom-impl-1.2.14.jar(このorg.apache.axiom.om.OMExceptionなし:機能「デフォルト」のメタファクトリが見つかりません。通常、これは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 / internet / 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:接続拒否:接続-&gt; Webサービスが起動していないか、他の何らかの理由でアクセスできない場合のみエラー
正確なバージョンに注意してください。ただし、バージョン間でパッケージの変更が発生する可能性があるため、動作は十分に汎用的であるため、上記の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標準を使用し、クライアント用に1つの追加のjarは必要ありません。
実際には、 axis2-kernel は axis-abd のサブ依存関係であるため、 axis-and 依存関係のみが必要です。 したがって、次のように要約できます。
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>1.5.1</version>
</dependency>
Axis2バージョン1.5.1では、Mavenモジュールが再構築されたようです。
My Groovyスクリプト(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フォーラムでの最初の投稿。