私はHazelcastとPayaraを持つスタンドアロンインスタンスとしてクラスタを持っています。セッションレプリケーションとHAProxyを持つロードバランサを追加しました。すべてうまく動作します。session.setAttributeを使用したセッションオブジェクトの複製
セッションBeanを使用すると、すべてのグローバル変数がクラスタのノードに複製されますが、no-SessionBeanでオブジェクトを数回共有しようとすると動作しません。ページが持って後ろ
豆を:私は(分散一覧とセッションリストHazelcast)「文字列」の2リストを取得し、単純なページを持っている
: は、以下の私の単純な例である。このカスタムスコープ。
@Named
@RomeoScoped //this is my custom scope
public class RomeoBean implements Serializable {
"増加" メソッドは、私は "追加" ボタンをクリックしたときに呼び出されます。
:ボタンを4回クリックした後public void increase(){
FacesContext currentInstance = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) currentInstance.getExternalContext().getRequest();
HttpSession session = request.getSession();
String example = Math.random() + "";
if(session != null){
CopyOnWriteArrayList<String> list = (CopyOnWriteArrayList<String>) session.getAttribute("List");
list.add(example);
session.setAttribute("List", list);
}
try {
Context ctx = new InitialContext();
HazelcastInstance instance = (HazelcastInstance) ctx.lookup("payara/Hazelcast");
IList<String> list = instance.getList("list");
list.add(example);
} catch (NamingException ex) {
Logger.getLogger(RomeoBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
は、situazioneはこれです
セッションリストでは2つの文字列だけが共有され、すべての文字列はHazelcastで共有されます。 私は自分のカスタムスコープを使用する必要があり、同じ場合にはオブジェクトはセッションでのみ共有され、アプリケーションでは共有されないようにする必要があります(Hazelcast Distributed Listとして)。
「setAttribute」メソッドの問題を修正できますか?
ご協力いただきありがとうございます。
おそらく 'web.xml'ファイルで' WebFilter'設定を共有できますか?特に、 'deferred-write'を有効にしていますか? – emre
@emre、これは私のweb.xml –
ルカ、あなたのweb.xmlは見えません。 – emre