当前位置: 首页 > 知识库问答 >
问题:

ATG中的$scope=global是什么意思?

岳涵煦
2023-03-14

根据文件,

全局:组件在所有用户之间共享。会话:组件的单独实例提供给每个用户。

这意味着,对于全局组件,整个原子核系统只有一个实例。如果这是真的,那么它对像“/atg/dynamo/transaction/transactionmanager”这样的组件和大多数的液滴如何有效?因为这些组件同时被多个用户使用

编辑:

我理解“TransactionManager”行为。根据定义,应该有一个事务管理器,并且他应该保留每个事务的事务对象。但是我的问题对于像foreach,switch等这样的小滴仍然是有效的(大多数是全局范围的)如果整个nucleus系统只有一个相应类的实例,这不是对性能有不好的影响吗?

共有2个答案

阙佐
2023-03-14

如果您知道设计模式,$scope=global相当于将ATG组件变成一个单例。

蒋高超
2023-03-14

历史上,ATG中有三种不同类型的作用域可用。现在增加到5个,增加了窗口(通常只在CSC应用程序中使用,所以尽量不要使用它)和原型(增加了支持Endeca墨盒处理程序的使用)。

正如您在文档中所强调的,全局组件只实例化一次,由所有用户共享,而会话组件只为给定会话创建一次,由该会话的所有请求共享。类似地,请求范围的组件将为每个使用它的请求重新实例化。

从性能的角度来看,解析到现有组件(例如,全局范围的组件,如ForEach)的路径需要花费一些时间,但是实例化一个新对象(换句话说,请求范围的组件)的成本相对较高。

因此,在foreach小滴的情况下,它会被实例化一次,但在service方法中,它实际上会从请求中提取参数:

String elementName = pRequest.getParameter(ELEMENT_NAME);

这意味着全局范围的组件是线程安全的,因为它只接受当前请求的参数。因此,一般来说,如果一个组件可以由多个用户共享,而不必担心同步问题,那么它应该是全局范围的,而不是会话或请求范围的。(经验法则应该是,如果您的液滴是请求范围的,那么您可能做错了)。

 类似资料:
  • 问题内容: 在Swift中,有时会使用这种模式。 这种模式的目的很明确。在全局线程中执行耗时的计算,以使UI不会被锁定,并在计算完成后更新主线程中的UI。 如果没有什么要计算怎么办?我刚刚在我的项目中发现了一个逻辑 崩溃但 不会崩溃。 它们有何不同?情况 B 与此不同吗? 还有一个问题。我知道主线程是串行队列,但是如果我在多个线程中运行多个代码块,它的工作方式就像并发队列。 如果主线程确实是一个串

  • 问题内容: 我是AngularJS的新手,我无法理解AngularJS的功能。有人可以用最简单的方式来说明AngularJS中的功能以及我们可以使用它做什么。请以一种您完全不了解编程知识的方式向您解释。有人还能以最简单的方式逐行解释下面的代码吗? 问题答案: 每个控制器都有一个关联的对象。 控制器(构造函数)功能负责设置模型属性和功能。这只能通过$ scope来完成。无论您在View(HTML文件

  • 本文向大家介绍在JSP的操作元素中,id和scope属性是什么意思?,包括了在JSP的操作元素中,id和scope属性是什么意思?的使用技巧和注意事项,需要的朋友参考一下 这是所有Action元素共有的两个属性:id属性和scope属性。 ID属性 id属性唯一地标识Action元素,并允许在JSP页面内引用该操作。如果Action创建了对象的实例,则ID值可用于通过隐式对象PageContext

  • 问题内容: 我试图在Python 3.3中使用旧的库(可追溯至2003年!)。当我导入它时,Python抛出错误,因为源文件中有符号,例如: 我猜这是该语言现在被放弃的标志。 它到底是什么意思,我应该用哪个(较新的)符号代替? 问题答案: 这意味着不等于。它取自(python的前身)此处: 订单测试(表示 “不等于” ) 我相信它是从Pascal那里获得的,Pascal是Guido开始使用的语言。

  • 问题内容: 我发现此代码可在此处找到SO中的重复项。但我不明白这条线是什么意思 问题答案: 该运算符是Java中无符号的右移位运算符。它有效地将操作数除以右操作数的幂,或者仅在此处。 和之间的差异仅在移动负数时才会显示。如果运算符是a ,则运算符会将其移位到最高有效位,而无论如何都将移位。 更新: 让我们求平均值和()。我们可以轻松地进行数学运算: 现在,通过代码,涉及到以下这些位: 让我们将“转

  • 问题内容: 我已经看到了声明,接口和类 这是什么意思? 问题答案: 没有证据,我相信您在谈论Java的泛型支持… 泛型允许您抽象类型 在Java 5之前,很难提供能够支持多种不同类型的Objects的类而不必为每种特定情况编写代码,因此人们通常会这样做。 这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否有可能将给定的Object强制转换为可用类型…例如 现在,这已经很明显了,但是如