关于Get请求如何转化成对应XXResourceProvider
- createResource(),根据Resource.Type获得ResourceDefnition,然后创建QueryImpl implement ResourceInstance,并由ClusterControllerHelper创建ClusterController(所有XXResourceProvider访问入口)注入到QueryImpl中。
- handlerequest(),创建GetRequest
- request.process(),解析Renderer、Predicate
- ReadHandler.handlerRequest(), 封装Query,setPage、setSort、setRenderer、setPredicate,query.execute
- ClusterController.getResource(Type,Request,Predicate), 根据Type获得Provider.
- provider.queryForResources(), 最终调用对应reourceProvider.getResource()返回查询结果QueryResponse.
一个Get请求具体调用实例
获得服务列表接口 (StackService)
/stacks/HDP/versions/2.3/services?fields=StackServices/,components/,components/dependencies/Dependencies/scope,artifacts/Artifacts/artifact_name&_=1457076234100
RequestFactory 会根据请求类型来创建对应的Request, EG: 此例中的GetRequest。 之后GetRequest实现了getRequestHandler方法来创建处理请求的handler,EG: 此例中的ReadHandler。ReadHandler负责解析参数中的查询条件进行查询,随后返回结果Result对象。最终Result被ResponseBuidler封装为Responde返回前台。
定时任务流程
Quartz
附件列表