工作は、.net プラットフォームのサービスとのデータのやり取りが必要であり、プラットフォームは wsdl を提供していますが、私のシステムは Java スタックで開発されています。
一般的な手順:
- wsdl のリンクを取得します。例:http://xxx.xxx.xxx.xxx:xxxx/ooooo/xxxxx.svc?wsdl
JDK_HOME/bin
内のwsimport.exe
を使用して呼び出しコードを生成するか、idea
のプラグインを使用して Stub クラスを生成します。- 生成されたクラスを直接 new してメソッドを呼び出すだけです。
wsimport の方法#
wsimport
はJDK_HOME/bin
にあり、直接実行します。
wsimport -s /target_directory http://xxxxx.svc/wsdl
生成された Java クラスをプロジェクトに配置します。
wsdl の XML にはwsdl:service
タグがあり、そのタグには name 属性があります。そのクラスを new して、内部のメソッドを呼び出すことができます。
idea のプラグインの方法#
idea にはコード生成機能が組み込まれており、パッケージを選択し、タイトルバーでtool->webservice->gen java code from wsdl
を選択します。
生成後、クラスが誤った場所に配置される場合は、パッケージ名とフォルダを調整してください。
pom ファイルに以下の依存関係を追加します(バージョンは状況に応じて調整してください)。
<!-- https://mvnrepository.com/artifact/org.apache.axis2/axis2 -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2</artifactId>
<version>1.7.9</version>
<type>pom</type>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.axis2/axis2-adb -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>1.7.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.axis2/axis2-transport-local -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-local</artifactId>
<version>1.7.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.axis2/axis2-transport-http -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-http</artifactId>
<version>1.7.9</version>
</dependency>
そうしないと、起動できないか、起動してもエラーが発生します。エラーメッセージは次のようなものです。
2021-06-21 15:00:08.786 [http-nio-23333-exec-1] ERROR c.g.xxxxx.filter.JwtFilter - org.apache.axis2.transport.http.CommonsHTTPTransportSender
org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.http.CommonsHTTPTransportSender
at org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(AxisConfigBuilder.java:736)
at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:123)
at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:629)
at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:116)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:210)