gpt4 book ai didi

jakarta-ee - @PrePassivate 和 @PostActivate 注释何时有用?

转载 作者:行者123 更新时间:2023-12-05 00:18:50 25 4
gpt4 key购买 nike

我见过 @PrePassivate @PostActivate 每个 EJB 教程中都有注释,但我看不出它们有什么用处。我需要这些的场景是什么?

最佳答案

大多数时候您使用 有状态 Session Beans(实际上并不推荐,除了一些很少需要的情况)这对于容器在某个时间点管理和重用一些非事件连接很有用,以帮助保持从数据库获取的连接数一些最佳计数。

例如您的 DBMS 可以管理 1000 个连接。因此,您可以在容器(应用程序服务器,例如 GlassFish、Weblogic 等)中创建一个大小为 1000 的连接池。

然后当您的应用程序达到 1000 个 session 时,例如,如果另一个用户想要进入您的应用程序,他/她应该等到 1000 个连接中的一个被释放。

在这种情况下,Passivate/Activate 的机制可能有用。很明显 Passivate/Activate在小型应用程序中不会发生。但是对于一些具有大量并发用户的高度使用的应用程序,由于池大小、非事件超时和一些其他参数,可能会发生这种情况。

示例 场景 :

也许在 1000 个连接中至少有 200 个被用于某些具有很多字段的大型表单中的某些数据条目。因此,用户可能至少需要 2 或 3 分钟才能完成数据输入。在这 3 分钟内,专用于有状态 session bean 的连接处于非事件状态,可用于其他用户(其他 session bean)。

因此,在指定的超时时间后,容器将 passivate session bean 的当前状态(将它们序列化为特定的数据库或文件或内存)并释放其与要使用的连接池的连接。

当用户完成表单并单击提交按钮时,容器将重新分配池中的连接(如果可用)和 activate该 session bean 的先前钝化状态以从钝化之前的确切状态继续业务。

所以@PrePassivate@PostActivate如果您需要在这些事件中进行一些手动操作,这对您很有用。

希望这会有所帮助。

关于jakarta-ee - @PrePassivate 和 @PostActivate 注释何时有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37222847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com