Xpages 如何";“干净”;从文件系统序列化文件而不重新启动http任务

Xpages 如何";“干净”;从文件系统序列化文件而不重新启动http任务,xpages,Xpages,我们有一个XPages应用程序,我们为这个特定的应用程序序列化磁盘上的所有页面。我们已经使用了gzip选项,但似乎只有当http任务停止或重新启动时,序列化文件才会从磁盘中删除 由于此应用程序由来自全球不同地方的许多不同客户使用,因此我们尽量避免重新启动服务器或http任务,但缺点是序列化文件从未被删除,因此即使gzip序列化文件没有那么大,我们迟早也会面临磁盘空间问题 第二个问题是http任务需要很长时间才能停止,因为它必须删除所有序列化文件 有没有办法让domino服务器在不重新启动http

我们有一个XPages应用程序,我们为这个特定的应用程序序列化磁盘上的所有页面。我们已经使用了gzip选项,但似乎只有当http任务停止或重新启动时,序列化文件才会从磁盘中删除

由于此应用程序由来自全球不同地方的许多不同客户使用,因此我们尽量避免重新启动服务器或http任务,但缺点是序列化文件从未被删除,因此即使gzip序列化文件没有那么大,我们迟早也会面临磁盘空间问题

第二个问题是http任务需要很长时间才能停止,因为它必须删除所有序列化文件

有没有办法让domino服务器在不重新启动http任务的情况下“清理”旧的/未使用的序列化文件

目前,我们实现了一个操作系统脚本,可以清理两天以前的序列化文件,这很好,但我更喜欢domino中的解决方案

提前感谢您的回答/建议


Renaud

我相信httpSessionId用于将文件存储在磁盘上。您可以尝试以下方法:

  • 将xsp.persistence.dir.xspstate更改为上更友好的位置(即/temp/xspstate)
  • 向XPage应用程序注册SessionListener
  • 在SessionListener的sessionDestroyed方法中,递归搜索文件夹,以查找与sessionId和delete匹配的文件或文件夹
  • 在侦听器中调用sessionDestoryed方法时,应删除所有文件锁。另外请注意,到目前为止,用户注销后不会立即调用seesionDestroyed方法(请参见我的问题:)


    希望这有帮助…

    xsp.properties参数:xsp.persistence.file.maxviews>采用一个数值,定义使用ondisk或混合持久化模式时要保存的最大页数。默认值为16页。您是否将此参数更改为某个高数值?不,我没有更改此参数。但据我所知,这是一个每个用户的参数,因此,如果您有不同的用户,如我们所做的,如果我得到正确的,这将不会有帮助。它将只确保您有16个文件,每个会话,但“旧”或超时会话持久化的文件将保留在磁盘上。请添加一些更多的信息:用户和应用程序的数量,一些关于您的代码(使用的SSJS/Java代码量,framworks)等等…你好,马克,谢谢你的回答。我试过了,下面是我的发现。只有在应用程序超时时才会调用SessionListener sessionDestroyed方法,只有在调用此sessionDestroyed时才会清理序列化文件。我的主要问题是,对应用程序的大多数访问都是由匿名用户完成的=>否可以注销!我发现的另一个问题是,如果在应用程序或服务器的data\properties目录下的global xsp.properties中未指定xsp.application.timeout的值,则不会调用sessionDestroyed方法!!我的情况下的另一个问题是,我们的监控系统访问服务器非常频繁通常是为了确保应用程序已启动并正在运行,因此在我们的示例中,几乎从未达到应用程序超时=>从未删除序列化文件。最好是当会话达到超时时间时,将调用sessionDestroyed。可能已经触发了一个事件,因为sessionScope中的内存是干净的p、 在一天结束的时候,我似乎没有解决办法,除了用一个操作系统脚本手动清理它,就像我们现在做的那样定期运行…太糟糕了,但至少我有一个解决方案,我希望将来会有所改变。感谢你们两位的建议。嗨,雷诺,你可以在计划的时间内执行清理nt而不是操作系统脚本(检查文件期限,检查锁)。至少它包含在你的应用程序中,并且少了一个外部依赖项。