WebService相关术语
- SOAP(Simple Object Accrss Protocol,简单对象访问协议)是一种简单的基于XML的协议,实际上就相当于在HTTP层上又套了一层XML协议
- JAX-WS(Java API for XML Web Services)是一种规范,规定服务器与客户端双方通过SOAP协议进行通信
- WSDL(Web服务描述语言,Web Services Description Language),其实就是WebService服务的使用说明书
JAX-WS规范下开发WebService服务
1、web.xml文件中配置cxf-servlet拦截所有请求
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
2、spring容器配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
3、发布WebService服务
<jaxrs:server address="/hello"> //服务地址
<jaxrs:serviceBeans>
<bean id="helloService" class="com.study.spring.HelloServiceImpl"></bean> //服务类
</jaxrs:serviceBeans>
</jaxrs:server>
<wsdl:types>:包括函数名,入参及返回值,包括子标签<xs:element>、<xs:complexType>
<wsdl:element>:函数名及返回值名称(在函数名基础上+Response)
<xs:complexType>:函数入参及返回值
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservice.com/" elementFormDefault="unqualified" targetNamespace="http://webservice.com/" version="1.0">
<xs:element name="sayHi" type="tns:sayHi"/> //函数名
<xs:element name="sayHiResponse" type="tns:sayHiResponse"/>
<xs:complexType name="sayHi"> //函数入参
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sayHiResponse"> //函数返回值
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:bindings>:主要包括一个类对外提供的方法接口,包括子标签<wsdl:operation>
<wsdl:operation>:一个operation子标签代表接口类中的一个方法
<wsdl:binding name="HelloWorldImplServiceSoapBinding" type="tns:HelloWorld"> //接口类
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="hello"> //方法1:hello
<soap:operation soapAction="" style="document"/>
<wsdl:input name="hello">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="helloResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="goodbye"> //方法2:goodbye
<soap:operation soapAction="" style="document"/>
<wsdl:input name="goodbye">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="goodbyeResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service>:webservice服务器地址(URL)
<wsdl:service name="HelloWorldImplService">
<wsdl:port binding="tns:HelloWorldImplServiceSoapBinding" name="HelloWorldImplPort">
<soap:address location="http://localhost:9999/helloworld_cxf"/> //helloworld接口web服务地址(URL)
</wsdl:port>
</wsdl:service>