工作需要与.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`, 直接执行 ``` bash wsimport -s /目标目录 http://xxxxx.svc/wsdl ``` 然后把生成的java类放入工程即可 wsdl的那个xml有个`wsdl:service`标签,标签有个name属性,把那个类new出来就可以调用里边的方法了。 ### idea插件方式 idea自带生成功能,直接选一个包,标题栏选择`tool->webservice->gen java code from wsdl` 生成后,可能会放错地方,自行调整包名和文件夹。 pom文件加入如下依赖(版本看情况调整,玄学层面) ``` xml org.apache.axis2 axis2 1.7.9 pom org.apache.axis2 axis2-adb 1.7.9 org.apache.axis2 axis2-transport-local 1.7.9 org.apache.axis2 axis2-transport-http 1.7.9 ``` 不然起不来,或起来了执行报错,报错类似: ``` log 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) ```