XPages:应用程序范围变量的生命周期是多少?

时间:2014-01-02 09:43:16

标签: xpages scope lotus-notes lotus-domino

一个。 xpages中应用程序范围变量的实际生命周期是多少?

B中。如有必要,我该如何删除/重置? (我找不到像“重新部署”或“启动停止应用程序”这样的东西,所以我必须重新启动网络服务器,用代码完成,只需从设计师或其他任何东西重新保存我的应用程序......? )

3 个答案:

答案 0 :(得分:9)

一个。它有所不同。您可以在XSP属性中设置显式超时(在Designer 9中显示为Application Configuration类别下的设计元素;在8.5.x中,您需要通过Package Explorer导航到WebContent / WEB-INF / xsp.properties)。否则,当Domino认为“应该”时,它会超时。这是基于应用程序的使用,因此使用的应用程序越多,除非重新启动HTTP任务(或Domino本身),否则范围将越不可能过期。

B中。要销毁整个范围,请重新启动HTTP(或完全重新启动Domino)。 注意:这是不是

Tell HTTP Restart

...仅重新加载任务的某些部分,并且不重新加载JVM。您需要实际重启任务:

Tell HTTP Quit
Load HTTP

OR

Restart Task HTTP

任务重启后,下次访问应用程序时将实例化一个全新的应用程序范围。

您还可以有选择地清理范围。 XPage中的每个范围(请求/视图/会话/应用程序)都是Java Map的实例,因此每个范围都支持该接口中定义的所有方法。

我建议只删除特定项目,例如:

applicationScope.remove("myBean");

如果清除整个范围而不实际破坏范围本身(见上文),则可能导致不可预测的行为,因为平台还将自己的信息存储在应用程序范围内(这也适用于其他范围)。您应该只删除您添加的范围条目。

答案 1 :(得分:4)

由于Name应用程序范围变量已经告诉您,如果您在xsp.properties中定义了它的生命周期,只要应用程序正在运行,如果您没有定义任何内容,则标准持续时间为30分钟。或者来自IBM

  

applicationScope持续时间是WebModule持续时间。当第一个请求进入时,Web模块启动,并且在一段不活动时间后最终被丢弃,默认为30分钟。应用程序的每个用户一旦创建就可以访问这些变量,因此这些变量没有隐私。 applicationScope只应用于必须在许多XPage之间共享的数据。

如果您使用应用程序范围变量开发,可以通过清除设计器中的应用程序来重置它们:转到:Projekt =>明确...

或者如果这无助于尝试关注Tommy Valand中的代码:

function clearMap( map:Map ){
 // Get iterator for the keys
 var iterator = map.keySet().iterator();

 // Remove all items
 while( iterator.hasNext() ){
  map.remove( iterator.next() );
 }
}

这将允许您在运行时重置应用程序范围,对于调试和测试非常有用。

答案 2 :(得分:1)

我相信刷新设计也会清除应用范围变量......