WebService的学习一
发布时间:2020-12-17 00:30:37 所属栏目:安全 来源:网络整理
导读:Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。 用简单点的话说,就是系统对外的接口! 它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种
Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。 用简单点的话说,就是系统对外的接口! 它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web 应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。WebService是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问WebService,通过WebService内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他WebService应用程序可以发现并调用它部署的服务。 技术和规则 在构建和使用Web Service时,主要用到以下几个关键的技术和规则: 1.XML:描述数据的标准方法. 2.SOAP:简单对象访问协议. 3.WSDL:Web服务描述语言. 4.UDDI(Universal Description,Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。 1.首先集成Apacha CXF WebService 到 Spring 框架中;? ? ?apache cxf 下载地址:http://people.apache.org/dist/incubator/cxf/2.0.4-incubator/apache-cxf-2.0.4-incubator.zip? ? 在spring context配置文件中引入以下cxf配置? Xml代码 ? <import resource="classpath*:META-INF/cxf/cxf.xml" /> ? <import resource="classpath*:META-INF/cxf/cxf-extension-soap.xml" /> ? <import resource="classpath*:META-INF/cxf/cxf-servlet.xml" /> ? 在web.xml中添加过滤器:? Xml代码 ? <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>/services/*</url-pattern> ? </servlet-mapping>? 2.开发服务端WebService接口:? Java代码 ? /**? ?* WebService接口定义类.? ?* ? ?* 使用@WebService将接口中的所有方法输出为Web Service.? ?* 可用annotation对设置方法、参数和返回值在WSDL中的定义.? ?*/ ? @WebService ? public interface WebServiceSample { ? ?? ?? ? ? /**? ? ? ?* 一个简单的方法,返回一个字符串? ? ? ?* @param hello? ? ? ?* @return? ? ? ?*/ ? ? ? String say(String hello); ? ? ? ?? ? ? /**? ? ? ?* 稍微复杂一些的方法,传递一个对象给服务端处理? ? ? ?* @param user? ? ? ?* @return? ? ? ?*/ ? ? ? String sayUserName( ? ? ? ? ? ? ? @WebParam(name = "user") ?? ? ? ? ? ? ? UserDTO user); ? ? ? ?? ? ? /**? ? ? ?* 最复杂的方法,返回一个List封装的对象集合? ? ? ?* @return? ? ? ?*/ ? ? ? public ?? ? ? @WebResult(partName="o") ? ? ? ListObject findUsers(); ? ?? } ? 由简单到复杂定义了三个接口,模拟业务需求;? 3.实现接口? Java代码 ? /**? ?* WebService实现类.? ?* ? ?* 使用@WebService指向Interface定义类即可.? ?*/ ? @WebService(endpointInterface = "cn.org.coral.biz.examples.webservice.WebServiceSample") ? public class WebServiceSampleImpl implements WebServiceSample { ? ?? ? ? public String sayUserName(UserDTO user) { ? ? ? ? ? return "hello "+user.getName(); ? ? ? } ? ?? ? ? public String say(String hello) { ? ? ? ? ? return "hello "+hello; ? ? ? } ? ?? ? ? public ListObject findUsers() { ? ? ? ? ? ArrayList<Object> list = new ArrayList<Object>(); ? ? ? ? ? ?? ? ? ? ? list.add(instancUser(1,"lib")); ? ? ? ? ? list.add(instancUser(2,"mld")); ? ? ? ? ? list.add(instancUser(3,"lq")); ? ? ? ? ? list.add(instancUser(4,"gj")); ? ? ? ? ? ListObject o = new ListObject(); ? ? ? ? ? o.setList(list); ? ? ? ? ? return o; ? ? ? } ? ? ? ?? ? ? private UserDTO instancUser(Integer id,String name){ ? ? ? ? ? UserDTO user = new UserDTO(); ? ? ? ? ? user.setId(id); ? ? ? ? ? user.setName(name); ? ? ? ? ? return user; ? ? ? } ? } ? 4.依赖的两个类:用户对象与List对象? Java代码 ? /**? ?* Web Service传输User信息的DTO.? ?* ? ?* 分离entity类与web service接口间的耦合,隔绝entity类的修改对接口的影响.? ?* 使用JAXB 2.0的annotation标注JAVA-XML映射,尽量使用默认约定.? ?* ? ?*/ ? @XmlAccessorType(XmlAccessType.FIELD) ? @XmlType(name = "User") ? public class UserDTO { ? ?? ? ? protected Integer id; ? ?? ? ? protected String name; ? ?? ? ? public Integer getId() { ? ? ? ? ? return id; ? ? ? } ? ?? ? ? public void setId(Integer value) { ? ? ? ? ? id = value; ? ? ? } ? ?? ? ? public String getName() { ? ? ? ? ? return name; ? ? ? } ? ?? ? ? public void setName(String value) { ? ? ? ? ? name = value; ? ? ? } ? } ?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |