配置CDI对话的超时
這可以通過帶超時的對話作用域bean來實現(xiàn)。 我們將處理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 ,該注釋允許在每個現(xiàn)有位置注入AlternativeConversationConfig而不是ConversationConfig 。 第二步是在beans.xml正確輸入,以便在ConversationConfig所有注入點上使用(激活)我們的類。
<alternatives><class>controller.cdi.AlternativeConversationConfig</class> </alternatives>服務器在啟動過程中的日志輸出現(xiàn)在包含這些行
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}'/>計數(shù)器將在1分鐘后過期。 如果在此時間間隔內(nèi)沒有訪問Bean。 只需按一下按鈕即可增加計數(shù)器,等待時間超過1分鐘。 并再次增加它。 您將看到該計數(shù)器已重置。
參考: 在“軟件開發(fā)思想”博客上,從我們的JCG合作伙伴 Oleg Varaksin 配置CDI對話的超時 。
翻譯自: https://www.javacodegeeks.com/2012/09/configure-timeout-for-cdi-conversations.html
總結(jié)
以上是生活随笔為你收集整理的配置CDI对话的超时的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: I / O神秘化
- 下一篇: 食品原料备案在卫生局还是市场局(食品原料