Jsf 存储计数器

Jsf 存储计数器,jsf,Jsf,在JSF应用程序中,我有一个会话范围的bean,它有多个web页面的各种getter和setter,当访问者单击Submit按钮时,页面中输入的值将被发送到输出文件,以便稍后使用另一个应用程序进行处理 我希望跟踪某一天数据写入文件的次数,尽管我最终可能会使用数据库,但我希望将计数器存储在一个由所有访问该页面的人更新的位置。我的理解是,如果我将其作为静态int存储在托管bean中,那么该值将不会保留在不同的会话中。我有一个非bean类,它存储一些实用方法,比如处理日期,我的问题是,非bean类是否

在JSF应用程序中,我有一个会话范围的bean,它有多个web页面的各种getter和setter,当访问者单击Submit按钮时,页面中输入的值将被发送到输出文件,以便稍后使用另一个应用程序进行处理

我希望跟踪某一天数据写入文件的次数,尽管我最终可能会使用数据库,但我希望将计数器存储在一个由所有访问该页面的人更新的位置。我的理解是,如果我将其作为静态int存储在托管bean中,那么该值将不会保留在不同的会话中。我有一个非bean类,它存储一些实用方法,比如处理日期,我的问题是,非bean类是否会存储一个可以从任何会话访问的静态变量,并用于跟踪信息,比如统计提交

非常感谢您的回复

我的理解是,如果我将其作为静态int存储在托管bean中,那么该值将不会保留在不同的会话中

那是不对的。静态变量是应用程序范围内的变量。它们不绑定到实例,而是绑定到类。在应用程序的生命周期中,类只加载一次。你也可以用一个简单的实验来证明这一点

你唯一关心的可能是安全。使用或代替int,这样在递增过程中就不会冒竞争条件的风险

另见:
只要不重新启动服务器,即使是会话范围内托管bean中的服务器,任何静态字段都可以实现您的目标。静态变量属于类,而不是实例,JVM只加载托管bean的类一次。由于您可能会从多个线程访问该静态变量,因此在修改其值时需要同步

非常感谢,这确实很有帮助,我学到了一些新的东西,因为我以前从未听说过原子类。不客气。既然你是新来的,请别忘了标出对解决具体问题最有帮助的答案。另请参见,在适用的情况下,不要忘了对进行同样的操作。