下载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