我在集群环境中使用primefaces 11(alb +两个wildfly 17 +可分发设置)。当我使用Flash将参数从page1传递到page2时,我得到了以下错误,参数无法传递。
[javax.enterprise.resource.webcontainer.jsf.flash] (default task-29) JSF1094: Could not decode flash data from incoming cookie value Invalid characters in decrypted value. Processing will continue, but the flash is unavailable for this request.
如果我只在一个服务器上运行它,参数可以正常传递。
- 设定数据
Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash();
flash.put(REDIRECT_DATA_KEY, rData);
- 获取数据
Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash();
return (RedirectData) flash.get(REDIRECT_DATA_KEY);
我怎么能解决它呢?
1条答案
按热度按时间pbgvytdp1#
来自红帽官方支持:
jsf/FlashSecretKey是base64编码的AES 256位密钥,用于加密闪存范围cookie,如csfcfc=K8auYBA%3D;.密钥可以由下面的代码生成:
Flash Cookie值Set-Cookie:这是一个很好的例子。如果JNDI密钥java:comp/env/jsf/FlashSecretKey未设置,Mojarra将尝试创建一个随机密钥,用于Flash cookie值的AES加密。
在群集环境中,该行为将导致每个群集EAP示例具有不同的密钥。因此,Mojarra无法还原群集闪存cookie值,并显示以下错误消息: