【问题标题】:What is the correct scope of DAF pipeline servletDAF管道servlet的正确范围是什么
【发布时间】:2018-06-05 04:07:43
【问题描述】:

用于 REST 服务(如 ActorServlet)的 DAF 管道 servlet 组件的正确范围是什么?应该设置为全局还是请求?

【问题讨论】:

    标签: atg


    【解决方案1】:

    来自 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 范围是正确的方法。

    【讨论】:

      猜你喜欢
      • 2017-07-21
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      相关资源
      最近更新 更多