使用Axis根据wsdl文件生webService成服务端和客户端代码


下载Axis
选择zip文件即可

下载解压后进入lib目录
在这里插入图片描述

编写bat文件生成代码

set Axis_Lib=E:\installPackage\axis-bin-1_4\axis-1_4\lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% org.apache.axis.wsdl.WSDL2Java

set Output_Path=E:/workspace/cattsoft/

%Java_Cmd% -o %Output_Path% --server-side E:\test.wsdl
  • Axis_Lib:Axis的lib的目录
  • Output_Path:生成Axis客户端和服务端的代码路径
  • E:\test.wsdl:本地的wsdl文件路径

生成的文件解释

生成的代码如果是最为客户端请求则会用到所有类,除了wsdd配置文件,如果是作为服务端,则不会用的Service结尾的接口和ServiceLocator、SoapBindingStub结尾的类,这三个都是客户端用到的,其他的服务端需要用到
包括两个接口interface
Service结尾的是用于客户端的,另一个客户端和服务器端都会用到
以ServiceLocator结尾的类是客户端的实现类,用于设置请求地址和获取请求类和方法
生成的deploy.wsdd是用于服务端的配置,将此配置信息复制到server-config.wsdd,

此文件要放在resource目录下
自动生成的有待研究

<deployment
        xmlns="http://xml.apache.org/axis/wsdd/"
        xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

    <!-- Services from CSPRequestService WSDL service -->
    <handler type="java:org.apache.axis.handlers.http.URLMapper"

             name="URLMapper"/>

    <service name="对外暴露的路径" provider="java:RPC" style="rpc" use="encoded">
          <parameter name="wsdlTargetNamespace" value="命名空间,一般是包名"/>
          <parameter name="wsdlServiceElement" value=""/>
          <parameter name="schemaUnqualified" value=""/>
          <parameter name="wsdlServicePort" value="对外暴露的方法"/>
          <parameter name="className" value="实现类"/>
          <parameter name="wsdlPortType" value="对外暴露的方法"/>
          <parameter name="typeMappingVersion" value="1.2"/>
          <operation name="调用方法" qname="operNS:对外暴露的方法" xmlns:operNS="包名" returnQName="自动生成" returnType="rtns:响应类" xmlns:rtns="包名" soapAction="" >
            <parameter qname="对外暴露的参数名" type="tns:string" xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"/>
          </operation>
          <parameter name="allowedMethods" value="允许的方法,可以使用*"/>

          <typeMapping
            xmlns:ns="包名"
            qname="ns:响应类名"
            type="java:响应类的全限定类名"
            serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
            deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          />
          <parameter name="enableRemoteAdmin" value="false"/> <!--漏洞解决-->
      </service>

    <transport name="http">
        <requestFlow>
            <handler type="URLMapper"/>
        </requestFlow>
    </transport>
</deployment>

服务端用AxisServlet拦截请求

package axis;
import org.apache.axis.transport.http.AxisServlet;

@javax.servlet.annotation.WebServlet(
        urlPatterns = "/axis/*",
        loadOnStartup = 1,
        name = "AxisServlet"
)
public class WebServlet extends AxisServlet {
    //无具体代码,使用注解的形式
}

要在启动类上添加上

@SpringBootApplication
@ServletComponentScan("axis") // axis为AxisServlet子类的路径
public class ApplicationStart {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationStart.class, args);
    }
}

访问路径

http://ip:port/项目路径/axis/对外暴露的路径
axis为AxisServlet子类的拦截路径,对外暴露的路径为wsdd文件中的service节点的name属性的值

转载https://blog.youkuaiyun.com/lw112190/article/details/110920699

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值