文章目录
1.介绍
WebService基本介绍
WebService中的WSDL详细解析
1.1 wsdl介绍
<wsdl:service name="HelloServiceDemo">
<wsdl:port name="HelloServiceDemoHttpSoap11Endpoint" binding="ns:HelloServiceDemoSoap11Binding">
<soap:address location="http://localhost:8080/ssm_crud/services/HelloServiceDemo.HelloServiceDemoHttpSoap11Endpoint/"/>
</wsdl:port>
</wsdl:service>
从下面可以看到soap:operation soapAction=“urn:sayHello”,urn:sayHello就是我们要访问的方法名
<wsdl:binding name="HelloServiceDemoSoap11Binding" type="ns:HelloServiceDemoPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="sayHello">
<soap:operation soapAction="urn:sayHello" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:portType name="HelloServiceDemoPortType">
<wsdl:operation name="sayHello">
<wsdl:input message="ns:sayHelloRequest" wsaw:Action="urn:sayHello"/>
<wsdl:output message="ns:sayHelloResponse" wsaw:Action="urn:sayHelloResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:message name="sayHelloRequest">
<wsdl:part name="parameters" element="ns:sayHello"/>
</wsdl:message>
<wsdl:message name="sayHelloResponse">
<wsdl:part name="parameters" element="ns:sayHelloResponse"/>
</wsdl:message>
<wsdl:types>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://serviceimpl.webservice.zy.com">
<xs:element name="sayHello">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sayHelloResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
1.2 项目结构
2.axis2集成
2.1 添加依赖
<axis2.version>1.7.8</axis2.version>
<!--axis2 begin-->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-spring</artifactId>
<version>${axis2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-http</artifactId>
<version>${axis2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-local</artifactId>
<version>${axis2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-xmlbeans</artifactId>
<version>${axis2.version}</version>
</dependency>
<!--axis2 end-->
2.2 创建相关类
public interface IHelloService {
public String sayHello(String name);
}
@Service("helloService")
public class HelloServiceImpl implements IHelloService{
@Override
public String sayHello(String name) {
return "你好,"+name+" 欢迎来到websercie!!!";
}
}
2.3 applicationContext.xml
<!--axi2交给spring管理-->
<bean id="applicationContext"
class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />
2.4 web.xml
<!-- 开启webservice:Axis2 -->
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<!-- Axis2 -->
2.5 添加services.xml
注意:services.xml的目录结构必须按照这下面路径设置,不然会读取不到这个配置文件的
/webapp/WEB-INF/services/webservices/META-INF/services.xml ,其中,只有webservices可以任意命名,其他的文件夹名称不能改变
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<!--接口名称-->
<service name="HelloServiceDemo" scope="application">
<!--接口描述-->
<description>
axis2 实现的webservice样例
</description>
<!--这个是比较老的接口,若spring版本较高,用第二个,不然启动不能实例化-->
<!--<parameter name="ServiceObjectSupplier">-->
<!--org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier-->
<!--</parameter>-->
<parameter name="ServiceObjectSupplier" locked="false">
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
</parameter>
<!--接口实现类-->
<parameter name="SpringBeanName">helloService</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
</service>
</serviceGroup>
2.5 运行
输入:IP+端口+项目名+services+接口名?wsdl
http://localhost:8080/ssm_crud/services/HelloServiceDemo?wsdl
用soapui访问,如图:
参考
官网
官网
springMVC以maven方式集成axis2-1.7.8
spring整合axis2(最小配置化)的示例
maven下axis2与spring的整合开发流程