日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php cdi_配置CDI对话的超时

發(fā)布時(shí)間:2023/12/3 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php cdi_配置CDI对话的超时 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

php cdi

在開(kāi)發(fā)JSF應(yīng)用程序時(shí),CDI對(duì)話范圍是一個(gè)很好的功能。 想象一下,您有大型數(shù)據(jù)表,需要很長(zhǎng)時(shí)間才能加載。 由于高內(nèi)存消耗,您通常不希望將加載的數(shù)據(jù)放置在會(huì)話作用域的Bean中。 而且,您不能將加載的數(shù)據(jù)放在視圖范圍的Bean中,因?yàn)槿绻脩綦x開(kāi)并進(jìn)入同一視圖,您將不希望總是再次重新加載數(shù)據(jù)。 如果用戶在特定時(shí)間間隔內(nèi)進(jìn)入同一頁(yè)面,則僅保留數(shù)據(jù);如果在此時(shí)間間隔內(nèi)未訪問(wèn)Bean,則再次重新加載它們將是很好的選擇。

這可以通過(guò)會(huì)話作用域的bean超時(shí)來(lái)實(shí)現(xiàn)。 我們將處理MyFaces CODI (CDI擴(kuò)展),并了解如何為使用@ConversationScoped注釋的bean設(shè)置自定義超時(shí)。 默認(rèn)超時(shí)是30分鐘。 對(duì)于我們的示例來(lái)說(shuō)太長(zhǎng)了。 我們將其配置1分鐘。 第一步是擴(kuò)展CODI的ConversationConfig并覆蓋方法getConversationTimeoutInMinutes() 。 讓我們編寫(xiě)一個(gè)類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 ,該注釋允許在每個(gè)現(xiàn)有位置注入AlternativeConversationConfig而不是ConversationConfig 。 第二步是在beans.xml正確輸入,以在所有ConversationConfig注入點(diǎn)上使用(激活)我們的類。

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

服務(wù)器在啟動(dòng)過(guò)程中的日志輸出現(xiàn)在包含這些行

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

為了檢查一切正常,我們可以編寫(xiě)一個(gè)對(duì)話范圍的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}'/>

計(jì)數(shù)器將在1分鐘后過(guò)期。 如果在此時(shí)間間隔內(nèi)沒(méi)有訪問(wèn)Bean。 只需按一下按鈕即可增加計(jì)數(shù)器,等待時(shí)間超過(guò)1分鐘。 并再次增加它。 您將看到該計(jì)數(shù)器已重置。

參考: 在軟件開(kāi)發(fā)思想上,從我們的JCG合作伙伴 Oleg Varaksin 配置CDI對(duì)話的超時(shí) 。


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

php cdi

總結(jié)

以上是生活随笔為你收集整理的php cdi_配置CDI对话的超时的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。