WebService开发相关

WebService:

1.作用
* 应用背景: 目前企业在开发时都存在很多系统, 系统大多都是分布部署的, webservice就是解决多系统之间的通讯问题的;
* 远程调用: 解决跨系统间的数据通讯, 不关注系统的语言, 平台的信息等...
2.CXF: Apach CXF = Celtix + XFile
1. CXF 目前最主流的webservice开发框架;
2. 官网: http://cxf.apache.org/
3. 两种服务提供方式:
	JAX-WS: Java API for XML Web Services;		传输xml格式的数据,基于SOAP协议;
	JAX-RS: Java API for Restful Web Service;	传输xml, json格式数据,基于http协议;
3.RESTful风格
* 可以允许使用同一个访问url,发送不同的请求方式,访问不同的资源
* 请求方式:
	1. GET 		建议执行查询操作
	2. POST 	建议执行添加操作
	3. PUT		建议执行修改操作
	4. DELETE	建议执行删除操作
* 好处?
	软件编写更加简介;
	基于http协议,支持多种消息格式, 比如xml, json;
	更易于实现缓存机制;
4.整合Spring: 基于JAX-RS
<!--Spring的配置文件的位置-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- spring核心监听器 -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- CXF基于web访问 -->
<servlet>
    <servlet-name>CXFService</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CXFService</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>
<!-- Spring CXF服务发布 -->
<jaxrs:server id="promotionService" address="/promotionService">
    <jaxrs:serviceBeans>
        <bean class="cn.itcast.bos.service.impl.PromotionServiceImpl" />
    </jaxrs:serviceBeans>
    <jaxrs:inInterceptors>
        <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
    </jaxrs:inInterceptors>
    <jaxrs:outInterceptors>
        <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
    </jaxrs:outInterceptors>
</jaxrs:server>
5.方法
1. create 建立与调用服务资源路径连接.
2. type 发送给服务器的数据格式 --> Consumes;
3. accept 接收服务器传输的数据格式 ---> Produces;
4. 采用那种方式 get/post/put/delete.
* 独立发布服务:
	* 服务接口定义:各种注解
	* 路径定义:
		1. @Path
			* 请求方式:
				1. @GET: 	建议执行查询操作
				2. @POST:	建议执行添加操作
				3. @PUT	:	建议执行修改操作
				4. @DELETE:	建议执行删除操作
			* 接收和返回类型:
				1. @Consumes:参数类型
				2. @Produces:返回值类型

			* 建议使用常量来定义类型:
				1. MediaType.APPLICATION_XML
				2. MediaType.APPLICATION_JSON

			* @Consumes:如果参数没有绑定到url上,则需要@Consumes,反之,则不需要
			* @Produces:如果返回值是基本数据类型或者字符串,则不需要@Produces,反之,则需要

			* 参数传递:
			1. @PathParam:
			1. 使用@Path("/user/{id}"),定义路径时,指定参数的位置和逻辑名称
			2. 在方法的参数中使用@PathParam("逻辑名称")接收参数  @PathParam("id") Integer id
			3. 建议:参数数量不要过多

		2. @QueryParam:查询请求参数 http方式   
			1. 在url后边拼接参数url?id=1&name=zs
			2. 在方法的参数中使用 @QueryParam("键名")来接收参数 @QueryParam("id") Integer id

		3. @Consumes:
			1. 一般用于修改、添加接收对象类型的参数
				* 客户端
					* WebClient.create(url).type().accept().请求方式();
				* 整合Spring发布服务
					* 访问路径:
						* 项目路径(虚拟目录)+ web.xml + applicationContext.xml + @Path
	* 接口开发的步骤:
		1. 定义服务接口
		2. 定义实现类方法
		3. 测试
			1. 本地测试,测试实现类是否可用
			2. 网络测试,通过网络方式访问接口路径
		4. 写文档
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值