php cdi_配置CDI对话的超时

php cdi

在开发JSF应用程序时,CDI对话范围是一个很好的功能。 想象一下,您有大型数据表,需要很长时间才能加载。 由于高内存消耗,您通常不希望将加载的数据放置在会话作用域的Bean中。 而且,您不能将加载的数据放在视图范围的Bean中,因为如果用户离开并进入同一视图,您将不希望总是再次重新加载数据。 如果用户在特定时间间隔内进入同一页面,则仅保留数据;如果在此时间间隔内未访问Bean,则再次重新加载它们将是很好的选择。

这可以通过会话作用域的bean超时来实现。 我们将处理MyFaces CODI (CDI扩展),并了解如何为使用@ConversationScoped注释的bean设置自定义超时。 默认超时是30分钟。 对于我们的示例来说太长了。 我们将其配置1分钟。 第一步是扩展CODI的ConversationConfig并覆盖方法getConversationTimeoutInMinutes() 。 让我们编写一个类AlternativeConversationConfig

package controller.cdi;import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Alternative;
import javax.enterprise.inject.Specializes;
import org.apache.myfaces.extensions.cdi.core.api.config.ConfigEntry;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.config.ConversationConfig;@ApplicationScoped
@Alternative
@Specializes
public class AlternativeConversationConfig extends ConversationConfig {@ConfigEntrypublic int getConversationTimeoutInMinutes() {return 1;}
}

重要的是注释@Specializes ,该注释允许在每个现有位置注入AlternativeConversationConfig而不是ConversationConfig 。 第二步是在beans.xml正确输入,以在所有ConversationConfig注入点上使用(激活)我们的类。

<alternatives><class>controller.cdi.AlternativeConversationConfig</class>
</alternatives>

服务器在启动过程中的日志输出现在包含这些行

config implementation:
controller.cdi.AlternativeConversationConfig$Proxy$_$$_WeldClientProxy
config implementation: controller.cdi.AlternativeConversationConfigmethod: getConversationTimeoutInMinutesvalue: 1

为了检查一切正常,我们可以编写一个对话范围的bean并在facelets中使用它。

import java.io.Serializable;
import javax.faces.event.ActionEvent;
import javax.inject.Named;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;@Named
@ConversationScoped
public class CdiBeanConversationScoped implements Serializable {private int counter;public int getCounter() {return counter;}public void increment(ActionEvent e) {counter++;}
}
<h:outputText id='counter' value='Conversation scoped counter: #{cdiBeanConversationScoped.counter}'/><p:commandButton value='Increment counter' process='@this' update='counter'actionListener='#{cdiBeanConversationScoped.increment}'/>

计数器将在1分钟后过期。 如果在此时间间隔内没有访问Bean。 只需按一下按钮即可增加计数器,等待时间超过1分钟。 并再次增加它。 您将看到该计数器已重置。

参考: 在软件开发思想上,从我们的JCG合作伙伴 Oleg Varaksin 配置CDI对话的超时 。


翻译自: https://www.javacodegeeks.com/2012/09/configure-timeout-for-cdi-conversations.html

php cdi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuEx

org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuExc.jsp at line 163这两句话表示创建一个新的文件失败。所以可能是当前用户没有文件路径的访问权限&#xff0c;也有可能是文件路径错误等其他关于文件路径的问题

解决在html中引入font-awesome的css文件后, 图标显示不出来

今天小颖在做项目时&#xff0c;需要在html文件中引入font-awesome.min.css&#xff0c;但是引入后&#xff1a; 以前小颖在用font-awesome库里的图标时&#xff0c;都是直接从node中下包&#xff0c;然后在main.js中引入得即可&#xff0c;第一次直接在html中直接引入css文件&…

linux 提供多用户telnet,linux系统telnet命令怎么用

2016-10-24 回答telnet命令通常用来远程登录。telnet程序是基于telnet协议的远程登录客户端程序。telnet协议是tcp/ip协议族中的一员&#xff0c;是internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用…

Stackoverflow:您从未见过的7个最佳Java答案

您可以在Stackoverflow上找到哪些最有趣的答案&#xff1f; Stackoverflow是开发人员的金矿。 它可以帮助我们找到遇到的特定问题的最有用答案&#xff0c;并且我们总是从中学习新事物。 对于以下文章&#xff0c;我们研究了最流行的Java问题和答案&#xff0c;并决定重点介绍…

WORD中如何自动生成目录?

步骤&#xff1a; 1、输入当做标题的文字 2、将文字设置为标题样式 3、光标放在要添加目录的位置 4、选择插入->引用->索引和目录->目录->确定

C#控件之Repeater控件使用

歡迎大家來討論&#xff0c;修改&#xff0c;一定虛心接受。 1.為什麼使用Repeater控件&#xff1f; 關於把從數據庫讀取的數據綁定到前台頁面&#xff0c;我們可以使用DataGrid、DataGridView以及Repeater來佈局&#xff0c;三者均可以直接綁定DataTable中的字段&#xff0c;但…

linux驱动静态分配内存,Linux驱动设计——内存与IO访问

名词解释内存空间与IO空间内存空间是计算机系统里面非系统内存区域的地址空间&#xff0c;现在的通用X86体系提供32位地址&#xff0c;寻址4G字节的内存空间&#xff0c;但一般的计算机只安装256M字节或者更少的内存&#xff0c;剩下的高位内存就被用于PCI或者AGP及系统桥设备的…

Windows Socket 编程_ 简单的服务器/客户端程序

一。程序运行效果图二。程序源代码 三。程序设计相关基础知识 1.计算机网络 2.IP地址 3.协议 4.网络体系结构 5.TCP/IP体系结构与特点 6.客户机/服务器模式 7.TCP/IP特点 8.套接字的引入 9.面向 连接/无连接 的套接字的系统调用时序图/流程图 …

JDK / JRE zip

Server JRE与JRE的区别&#xff1a;Server JRE一般用于服务器上安装&#xff0c;只有64bit版本&#xff0c;不会安装浏览器插件、自动更新&#xff0c;有监视工具、没有Java Fx和其他开发工具&#xff1b;有安装程序&#xff0c;只是一压缩目录。Server JRE 8大约是完整JDK的40…

linux 磁盘挂载sde,linux lvm挂载新的硬盘并且扩容

PV(Physical Volume)- 物理卷物理卷在逻辑卷管理中处于最底层&#xff0c;它可以是实际物理硬盘上的分区&#xff0c;也可以是整个物理硬盘&#xff0c;也可以是raid设备。VG(Volumne Group)- 卷组卷组建立在物理卷之上&#xff0c;一个卷组中至少要包括一个物理卷&#xff0c;…

TDH-大数据基础

------------------------------------------------------------------------------------*******大数据概念和基础**********1.大数据的四个特点&#xff1a;数据规模大&#xff0c;生成、处理速度快&#xff0c;数据类型多样&#xff0c;价值巨大密度低&#xff1b;2.大数据历…

xshell十大技巧

xshell是我用过的最好用的ssh客户端工具&#xff0c;没有之一。这个软件完全免费&#xff0c;简单易用&#xff0c;可以满足通过ssh管理linux vps所有需要&#xff0c;唯一遗憾的是没有官方中文版。警告&#xff1a;不要下载所谓的汉化版&#xff0c;可能有木马。此前已有报道使…

深度linux 网络配置文件,solver及其配置 - Caffe 深度学习入门教程_Linux教程_Linux公社-Linux系统门户网站...

solver及其配置solver算是caffe的核心的核心&#xff0c;它协调着整个模型的运作。caffe程序运行必带的一个参数就是solver配置文件。运行代码一般为#caffe train --solver*_slover.prototxt在Deep Learning中&#xff0c;往往loss function是非凸的&#xff0c;没有解析解&…

restful服务端客户端_测试RESTful服务的客户端

restful服务端客户端开发使用RESTful Web API的应用程序可能意味着开发服务器和客户端。 为服务器端编写集成测试可以像使用Arquillian启动服务器一样容易&#xff0c;并且可以通过REST确保测试服务是否按预期工作。 问题是如何测试客户端。 在本文中&#xff0c;我们将了解如何…

笑郭网络验证3.8研究笔记(内有视频教程)

链接&#xff1a;http://pan.baidu.com/s/1kUVkY2N 密码&#xff1a;m6de 转载于:https://www.cnblogs.com/Sendige/p/9600782.html

Java开发人员必须看到的13个Decks保持更新

Java领域中有许多关键人物&#xff0c;每个人物对语言的未来都有自己的看法和看法。 尽管我们不能参加任何活动&#xff0c;聚会或谈话&#xff0c;但要感谢各种幻灯片共享站点&#xff0c;我们才能听到这些影响者的意见。 在下面的文章中&#xff0c;我们收集了关于Java的最好…

已经windows如何在安装linux,如何在已经安装linux情况下安装windows

1.找到磁盘分区工具&#xff0c;将一个主分区磁盘格式化为windows认可的文件系统&#xff0c;如: ntfs.2.安装windows,或ghost to this partition。(最好是ghost,这样不会抢linux的启动区域。那样的话就改的就是windows下的文件。3.更改linux或windows下的grub.以liunx(ubuntu)…

标准模板库STL学习总结

标准模板库就是类与函数模板的大集合。STL共有6种组件&#xff1a;容器&#xff0c;容器适配器&#xff0c;迭代器&#xff0c;算法&#xff0c;函数对象和函数适配器。1、容器&#xff1a; 容器是用来存储和组织其他对象的对象。STL容器类的模板在标准头文件中定义。主要如下所…

MicroRNA Ranking(Tehran2016)

题意&#xff1a;给出m个n的全排列&#xff0c;求一个n的全排列&#xff0c;满足对于i<j&#xff0c;至少存在一半的全排列中&#xff0c;ai排在aj的前面&#xff0c;求字典序最小方案&#xff0c;或者是无解。 (1)首先我们对 vis[ a[i] ][ a[j] ] ,求出a[i] 对 a[j] 的贡献…

linux gpt引导分区,linux 引导gpt分区windows及clover

原因&#xff1a;电脑采用gpt分区&#xff0c;安装了win10linux(debian)mac 10.11(El capitan),使用clover做引导器时&#xff0c;可以引导linux和mac,但通过bootmgfw.efi引导win10时无限转圈,不能正常启动win10。所以考虑用linux的grubx引导器。1、引导Clocer查看clover所在EF…