配置CDI对话的超时
这可以通过带超时的对话作用域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
配置CDI对话的超时相关推荐
- php cdi_配置CDI对话的超时
php cdi 在开发JSF应用程序时,CDI对话范围是一个很好的功能. 想象一下,您有大型数据表,需要很长时间才能加载. 由于高内存消耗,您通常不希望将加载的数据放置在会话作用域的Bean中. 而且 ...
- ribbon基于接口配置超时_feign的ribbon超时配置和hystrix的超时配置说明
先看下我的配置: ribbon: MaxAutoRetries: 1 #最大重试次数,当Eureka中可以找到服务,但是服务连不上时将会重试 MaxAutoRetriesNextServer: 1 # ...
- 使用百度UNIT配置智能对话机器人的注意事项,开发者必看!
首先是AI社区UNIT板块里官方发的的: [小白终结帖]UNIT开发者必备学习资料大集合 视频可以不看,但是这篇帖子一定要看,满满的都是干货! 帖子上有的内容,这里就不重复了,下面是配置智能对话机器人 ...
- axios 最全 请求拦截器 响应拦截器 配置公共请求头 超时时间 以及get delete post put 四种请求传参方式
axios 拦截器 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作 例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易 响应拦截器 响应拦截器的作用是在接收到响应后进行一些操 ...
- Spring集成–配置Web服务客户端超时
介绍 在Spring Integration的支持下,您的应用程序可以使用出站Web服务网关来调用Web服务. 调用由该网关处理,因此您只需要担心构建请求消息和处理响应. 但是,使用这种方法并不明显, ...
- Nginx笔记-反向代理中配置WebSocket及设置超时
这里贴下配置: ... server{listen 8888;server_name MyWeb;location / {proxy_pass http://xxx.xx.xx.xxx:xxxx;}l ...
- mysql odbc连接池_Java Mysql连接池配置和案例分析--超时异常和处理
前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测 ...
- 配置nginx实现连接超时
保持连接(长连接) 在进行HTTP连接前要先建立TCP连接(TCP3次握手),再建立HTTP连接,当HTTP资源请求结束后,会断开HTTP连接,再断开TCP连接(TCP4次挥手). 很多情况下用户访问 ...
- php cdi_涉及CDI和JSF的过期对话的定制错误页面
php cdi 自上次写博客以来已经有一段时间了. 我一直在想写一些技术博客,但最终却忙于其他事情. 上周,在Coderanch论坛上进行了非常有趣的讨论. 甚至更有趣,因为它涉及JBoss. 熟悉J ...
最新文章
- 初学者编写python用什么软件好_初学者编写python用什么软件
- cassandra的全文检索插件
- XTU 1243 2016
- Tomcat定义虚拟主机案例
- Ajax技术简单入门
- LeetCode 245. 最短单词距离 III
- 2013蓝桥杯java试题_2013年第四届蓝桥杯javaB组 试题 答案 解析
- 从Nand Flash启动U-BOOT的基本原理
- nuxt服务端php,nuxt服务端部署上线
- mysql binlog备份_MySQL mysqldump + mysqlbinlog 备份和还原
- 今日花生价格多少钱一斤?
- Number and String in JS
- 什么是HikariCP?HikariCP介绍(包含配置示例)
- 网络安全设备-认识运维安全管理与审计系统(堡垒机)
- 【Android P】 JobScheduler服务源码解析(二) ——框架解析
- OpenGL ES 简介
- 基于51单片机的水族箱温度水质监测智能宠物金鱼喂食器补氧换水proteus仿真原理图
- 大家有哪些舍不得拿出来分享的网站?你有吗?这几个抓紧收藏起来
- 计算机中丢失repo,我的本地git repo有“未上演”的已删除文件,远程是文件,如何删除丢失的文件?...
- 玩魂斗罗怎么能少了Arduino游戏手柄!
热门文章
- linux-basic(9)文件与文件系统的压缩与打包
- poj doubles_余数运算符在Java中用于Doubles
- 迁移学习 简而言之_简而言之SPIFFE
- Neo4j导入:java.lang.IllegalStateException:不支持在单个导入中混合指定和未指定的组所有物...
- java单词按字典排序_最终Java日志字典:开发人员最常记录的单词是什么?
- hotspot 垃圾收集器_HotSpot增量Java垃圾收集器
- 备忘录模式 命令模式_备忘录设计模式示例
- mwc校准油门_编写下载服务器。 第五部分:油门下载速度
- neo4j cypher_Neo4j:使用Cypher生成实时建议
- junit:junit_简而言之,JUnit:另一个JUnit教程