【发布时间】:2018-06-05 04:07:43
【问题描述】:
用于 REST 服务(如 ActorServlet)的 DAF 管道 servlet 组件的正确范围是什么?应该设置为全局还是请求?
【问题讨论】:
标签: atg
用于 REST 服务(如 ActorServlet)的 DAF 管道 servlet 组件的正确范围是什么?应该设置为全局还是请求?
【问题讨论】:
标签: atg
来自 ATG 文档:
如果组件的 $scope 属性没有显式设置,它会自动具有全局范围。
在dynadmin 的组件浏览器中查看ActorServlet,它表明没有设置显式范围,因此默认情况下它应该指示它是global 范围。
进一步研究一下,ActorServlet(它是RestPipelineServlet 的组件)扩展了实现PipelineableServlet 接口的PipelineableServletImpl。这里有一个抽象方法passRequest,它构成了正在执行的实际管道“链”的一部分。
public abstract void passRequest(ServletRequest paramServletRequest, ServletResponse paramServletResponse)
throws IOException, ServletException;
这意味着您将始终可以访问当前的request。在PipelineableServletImpl 内部调用service 方法。
public void service(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws IOException, ServletException {
//Insert your logic here
passRequest(pRequest, pResponse);
}
您通常会覆盖 service 方法并在其中添加您自己的逻辑,但仍然可以访问 current request 这应该向您表明,只要您的其余部分变量是线程安全的,将 Pipeline Servlet 指定为 global 范围是正确的方法。
【讨论】: