1 写出实验 1 中执行 // Sent HTTP PUT request to update customer info 对应的 curl,与输出结果。
curl -v -H "Content-Type: application/xml" -d "<?xml version=‘1.0‘?><Customer><name>Mary</name><id>123</id></Customer>" -X PUT "http://localhost:9000/customerservice/customers"
2 简述 问题 1 中对应程序执行的过程。
3 实验 1 中,简述 URIResolver 类的作用是什么?
输入的地址字符串转换成带文件类型的URL
4 实验 1 中,简述 CachedOutputStream 类的作用是什么?
作为数据的缓冲区,从输入流中读取一定数量的字节,并将其存储在缓冲区中,而不需要循环读取输入源。
5 翻译 jersey 文档 5.1. Uniform Interface Constraint 的 5 个目标。
1 简易的,结构要易于理解与维护。和可升级的,耦合度低的。客户端与服务可随着时间不断地升级,需要有向后兼容的能力。
2 每一个资源由URI标识。
3 客户端通过HTTP请求与响应使用一套固定的HTTP方法来与资源进行交互。
4 一个或多个代理可被返回并通过媒体类型被识别。
5 内容可连接到更深入的资源。
6 简述实验 2 中官方文档 5.2 提到的 UriBuilder 类的作用。
提供了从不同资源创建URI,修改URI实例的方法。
7 阅读实验 3 官方文档,用自己的语言(中文)陈述 Motivation for Reactive Client 。
Reactive方法是一种可以摆脱Java回调地狱的方法,基于数据流概念和通过流来改变执行模型的传播。当Jax-RS请求完成后,数据流中的下一个项目(或用户代码)被声明是延续,完成或者失败。你描述的是接下来该做什么而不是接下来的动作该怎么触发。数据流是可组合的,可以把多个数据流组成一个结果并对其进行操作。
当我们需要处理大量的请求(相互依赖),并且需要把请求组成一个结果时,Reactive编程模式是个不错的选择。
8 (!)给出一个可运行的实验程序,包含在作业中。
9 阅读实验 4 官方文档,为什么 Java 写 web 服务必须先声明接口?通常这样的接口必须放在一个独立的 Java 文件中。
定义一系列的公用接口,多子类可实现,便于以后扩展,维护和节约有效的时间,相同接口,但是可有不同实现,互不干扰。
10 JAXRSClientFactory 类的作用是什么?
创建代理客户端。
11 简述透明代理的作用。
用户A和用户B并不知道行为管理设备充当透明代理行为,当用户A或用户B向服务器A或服务器B提交请求的时候,透明代理设备根据自身策略拦截并修改用户A或B的报文,并作为实际的请求方,向服务器A或B发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户A或B,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据。