webservice之axis

2019/09/04

简介

webSerivce虽然是一个比较老的跨语言交互接口,但是现在还是需要了解的,毕竟好多政府企业还在用,最早接触webService还是在2016那会和广电对接视频接口的时候用过axis1.4的webService,之后又和内蒙那边对接过2.x的axis,由于一直没有做总结,所以导致每次用的时候都需要去翻下以前的使用流程.毕竟这玩意也不是经常用到,而且使用的流程也是比较复杂,所以在此做下总结

前期准备

工具 : SoapUI 5.3.0

​ axis1.4压缩包 官网下载 直接下载

文档 : 所需的wsdl文件

项目代码

Axis_Client_Server_Generate

生成

  • 根据wsdl创建项目

    img

  • 关联axis工具

    img

生成客户端

  • 选择生成客户端

    img

  • 查看

    img

生成传统服务端

  • 选择生成服务端

    img

  • 查看

    此处包含deploy.wsddundeploy.wsdd后面要用到

    img

  • 使用eclipse创建一个空的Web项目

    • 创建项目

      img

    • 指定项目名

      img

    • 指定class编译输出目录 WebContent\WEB-INF\classes

      img

    • 完成

      img

    • 导入依赖axis的lib包

      img

    • 导入用soapui生成的java文件包名错误时修改成一致即可

      img

    • 修改deploy.wsdd的包名

      img

    • 拷贝axis中的web.xml文件到项目目录下 保持WEB-INF下没有 server-config.wsdd文件

      img

    • 发布项目到tomcat

      img

    • 成功

      img

    • 截至为此完成基础的服务端,下面需要根据wsdl生成web.xml

  • 生成server-config文件

    • 编写bat脚本

      @echo off
      echo "正在根据deploy.wsdd发布服务..."
      set AXIS_HOME=D:/OpenSource/axis1.4
      set AXIS_LIB=%AXIS_HOME%\lib
      set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar
      :: 访问wsdl  
      :: http://localhost:8080/admin_education/servlet/AxisServlet  
      :: 之后跳转到 --> http://localhost:8080/admin_education/services/notifyReq?wsdl
      java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/notify/services deploy.wsdd
      pause
      
    • 运行bat脚本

      deploy.wdssundeploy.wsdd拷贝到WEB-INF目录下

      将上面的代码写入新建文件generate-config.bat,双击运行该文件

      img

    • 查看生成的server-config.wsdd文件

      img

    • 刷新可以可以查看到生成的服务端

      img

生成springboot服务端

  • 新建springboot的web项目

    直接下一步,此处不细说

    img

  • 在pom.xml文件中导入依赖

    <dependency>
    	<groupId>org.apache.axis</groupId>
    	<artifactId>axis</artifactId>
    	<version>1.4</version>
    </dependency>
    
    <dependency>
    	<groupId>axis</groupId>
    	<artifactId>axis-jaxrpc</artifactId>
    	<version>1.4</version>
    </dependency>
    
    <dependency>
    	<groupId>commons-discovery</groupId>
    	<artifactId>commons-discovery</artifactId>
    	<version>0.2</version>
    </dependency>
    <dependency>
    	<groupId>wsdl4j</groupId>
    	<artifactId>wsdl4j</artifactId>
    	<version>1.6.3</version>
    </dependency>
    
  • 导入上一步生成的代码到该项目中

  • 在resources下新建WEB-INF,将上一步生成的server-config.wsdd文件拷贝到其中

    img

  • 用jar启动需要手动编写 EngineConfigurationFactoryServlet.java类

    img

  • controller使用注册配置的方式

    img

  • 访问后效果相同

    img

使用

客户端

创建对象调用即可

img

example

CSPRequestService service = new CSPRequestServiceLocator();
					CtmsSoapBindingStub stub =(CtmsSoapBindingStub) service.getctms();
					//CtmsSoapBindingStub stub = (CtmsSoapBindingStub) service.getctms(url);
					CSPResult csp=stub.execCmd(Constants.CPID, Constants.LSPID, item_id, Constants.LOCAL_URL + "injectXML/" + item_id+"_"+action+ ".xml");

服务端

只需在这个CtmsSoapBindingImpl类中编写我们的业务逻辑即可

img

参考资料

[Java] Webservice之定制发布WSDD教程 (二)

根据wsdl反向生成webservice服务端

根据wsdl 利用axis1.4的WSDL2Java工具生成服务端和客户端代码

(本篇博文完结;中文字数一共:3313字,英文字数一共:435 字)


扫扫加关注公众号 让我们一起学习一起成长

(转载本站文章请注明作者和出处 IT超仔

Post Directory