Maven2 を使用して Axis2 クライアント (リモート Web サービスにアクセスするだけで、実装していません!) を構築したいのですが、プロジェクトに 21 MB の JAR を追加したくありません。ADB で WSDL を変換した場合、コードをコンパイルするには pom.xml に何を入力する必要がありますか?
9 に答える
クライアントの最小 jar は次のとおりです。
- アクティベーション-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
- メール-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
(注:この回答は 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>
うーん...それは正解としてフラグを立てることができないようです。誰かがこれをコピーして、彼の投稿にフラグを立てることができますか?
トランスポートも追加する必要がありました
<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
- メール-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 なし: 機能 '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/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: 接続が拒否されました: 接続 -> 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>
実際には、 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 を 1 つも必要としません。
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 に使用したりできます。
この回答のコード例