记录一下项目中发布webservice 的方式,以及我对webservice 这个技术的理解。
webservice是 基于 xml的,采用soap 协议,他实现了跨语言,跨平台性,应用十分广泛
当服务端发布webservice 时,将数据转为 xml 格式,变成标注的数据类型,xml 是什么平台和什么语言都可以解析的。
WebService 是在web 上实现的,所以是通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明 HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。
SOAP协议 = HTTP协议 + XML数据格式
实际上:webservice 就是相当于一个servlet 只是传输的数据格式不同,并且 与平台语言无关。他以xml 文件格式返回数据。
发布一个接口后就可以使用指定路径来 访问该接口 获取数据。
下面记录一下我项目中如何发布webservice的。
我项目中采用了cxf 发布,因为cxf 与spring 非常容易整合。(不懂得自己百度下发布java发布webservice的几种方式)
1.在配置文件中加入cxf servlet
<servlet-name>CXFService</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>2</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>CXFService</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
2. 定义接口,并写好实现类。
@WebService
public interface IScoreWebService {
public String getScoreWebService(String params);
}
@Component
@WebService(serviceName = "scoreWebService", endpointInterface = "com.dji.ppqm.webservice.IScoreWebService")
public class ScoreWebService implements IScoreWebService{
public String getScoreWebService(String params) {
}
}
3.在spring 的配置文件中 发布webservice
<!-- WebService服务发布 -->
<jaxws:endpoint id="scoreWebServiceImpl"
implementor="com.dji.ppqm.webservice.impl.ScoreWebService" address="/getScore" />
<jaxws:endpoint id="verifyEmployeeWebServiceImpl"
implementor="com.dji.ppqm.webservice.impl.VerifyEmployeeWebService" address="/Verify" />
注意: xmlns:jaxws="http://cxf.apache.org/jaxws"
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd"
引入cxf 的xsd 规范。
顺便提一下访问的路径 为
应用程序的根路径/services(为配置servlet的拦截路径)/scoreWebServiceImpl(发布webservice设置的id)?wsdl