Maven2でAxis2クライアントを構築したい(私はリモートWebサービスにアクセスしているだけですnot実装しています!)21MBのJARをプロジェクトに追加したくありません。 ADBでWSDLを変換したときにコードをコンパイルするには、pom.xmlに何を入れなければなりませんか?
(注:この応答はAaron Digulla自身によって提供されました。以下は、彼自身の回答の正確なテキストです。)
Maven2で、ADBクライアントを機能させるために設定された最小の依存関係(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は次のとおりです。
以下のSTAX jarはAxis2 1.5.1リリースの一部ではなく、JDKバージョンが6未満の場合に必要になります。
トランスポートも追加する必要がありました
<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>
要約すると、動作中のクライアントの最小の依存関係
詳細とともに最小限の依存関係の下にリストされています
クライアントスタブは、特定のWSDLに対して%AXIS2_HOME%\ bin\WSDL2Javaツールで生成されたServiceClientクラスを使用します(生成するには、クラスパスにすべての軸jarが必要です。AXIS_HOMEを設定することで最も簡単に実現できます)
org.Apache.axis2.AxisFault:接続が拒否されました:接続->他の理由でWebサービスが稼働していないかアクセスできない場合のみエラー
正確なバージョンに注意してください。ただし、動作はバージョン間でパッケージの変更を条件として十分に一般的であるため、上記のFQCNについて言及しています。
軸バージョン- 1.6.
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>
Axis2バージョン1.5.1では、mavenモジュールが再構築されているようです。
私の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への代替トランスポートプロトコルを使用したりできます。
この例のコード answer
axis2-kernelはaxis-abdのサブ依存関係であるため、実際にはaxis-abd依存関係のみが必要です。したがって、次のように要約できます。
<dependency>
<groupId>org.Apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>1.5.1</version>
</dependency>
クライアントがJava 6で実行されている場合は、WSの使用にJAX-WSの使用を検討してください。JAX-WSはバインディングにJAXB標準を使用し、クライアントに追加の単一のjarは必要ありません。 。
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フォーラムの私の元の投稿です。