我应该使用EJB- @ Singleton(
javax.ejb.Singleton)进行统计或监控,还是最好将统计信息缓存在@SessionScoped-Bean中?要清除我的问题,这里有两个场景:
情景I:
用户开始Websession并进行数据库查询以查看统计信息或数据表.这些查询在其会话中已满.因此,10.000用户将进行10.000个相同的数据库查询.
情景二:
用户开始Websession并从预初始化的@ Singleton-Bean重试统计数据或数据表的数据. @Singleton(javax.ejb.Singleton)在Server-Startup(@Startup)的开头进行了查询.因此,10.000用户可以从一个缓存(@Singleton)读取,而不必查询数据库.如果其他人创建/编辑/删除数据,我的@ Singleton-Bean会触发刷新其缓存数据.
所以我的问题是:
>场景II是否比场景I更好地扩展?我猜是.我对吗?
>还有其他需要考虑的注意事项吗?
>我知道,Stateless-Beans比@stateful或@Singleton扩展得更多.我应该考虑使用@Stateless-Bean并使用JPA / Hibernate Caches等缓存查询.
>我应该使用@ApplicationScoped(javax.enterprise.context)而不是@Singleton(javax.ejb.Singleton)来使用代理吗?会更好吗?
最佳答案 是的,场景2比1好,我们在这里谈论效率.
最好使用较低层(即持久层)来简单地缓存实体
因为这是它的工作.
使用要么取决于你使用的服务器,你使用完整的企业服务器,如果是,那么更好地利用它提供的事务,如果你只是使用像tomcat这样的web容器,那么最好使用托管bean.