클러스터에 Hazelcast 및 Payara가 포함 된 독립 실행 형 인스턴스가 있고 세션 복제 및 HAProxy가있는로드 밸런서를 추가했습니다. 모든 것이 잘 작동합니다.session.setAttribute를 사용하여 세션 개체 복제
세션 빈을 사용할 때 모든 전역 변수는 클러스터 노드에 복제되지만 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' 설정을 공유 할 수 있습니까? 특히 '지연된 쓰기'가 활성화되어 있습니까? – emre
@emre, 이것은 나의 web.xml입니다. –
Luca, 웹을 볼 수 없습니다. – emre