工作需要与.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 /目标目录 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)