banner
RustyNail

RustyNail

coder. 【blog】https://rustynail.me 【nostr】wss://ts.relays.world/ wss://relays.world/nostr

Springboot SOAP(WSDL)の統合呼び出し

工作は、.net プラットフォームのサービスとのデータのやり取りが必要であり、プラットフォームは wsdl を提供していますが、私のシステムは Java スタックで開発されています。

一般的な手順:

  • wsdl のリンクを取得します。例:http://xxx.xxx.xxx.xxx:xxxx/ooooo/xxxxx.svc?wsdl
  • JDK_HOME/bin内のwsimport.exeを使用して呼び出しコードを生成するか、ideaのプラグインを使用して Stub クラスを生成します。
  • 生成されたクラスを直接 new してメソッドを呼び出すだけです。

wsimport の方法#

wsimportJDK_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)
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。