作者:我我檬檬我我186 | 来源:互联网 | 2023-08-09 08:37
单例的默认@ConcurrencyManagement为ConcurrencyManagementType.CONTAINER,默认@Lock为LockType.WRITE。基本上,这意味着每个方法(包括generateReports)都被有效地标记为synced关键字,这意味着在generateReport运行时,checkQueueState将被阻止。
考虑使用ConcurrencyManagement(ConcurrencyManagementType.BEAN)或@Lock(LockType.READ)。如果上述建议均无济于事,我怀疑您已找到Glassfish的错误。
顺便说一句,您可能需要persistent =
false,因为即使您的服务器处于脱机状态,您也不必保证checkQueueState方法每5秒触发一次。换句话说,当您使服务器重新联机时,您可能不需要容器触发“追赶”。