Я пытаюсь включить репликацию сеанса в liferay на tomcat без большой удачи. Я написал небольшой тест, чтобы увидеть, реплицируются ли сеансы, и он хорошо работает в отдельном JSP-файле, который я разместил под webapps/examples, но когда я вводил тот же код в liferay-porlet, только JSESSION верны.Репликация сеанса кластера Liferay
HttpSession httpSession = request.getSession();
String testTime = (String) httpSession.getAttribute("testTime");
String before = testTime;
testTime = Long.toString(System.currentTimeMillis());
httpSession.setAttribute("testTime", testTime);
String sessionid = httpSession.getId();
System.out.println("JSESSIONID: "+sessionid);
System.out.println("TEST TIME WAS: "+before);
System.out.println("TEST TIME IS: "+testTime);
У кого-нибудь есть идеи, почему он не работает в портфолио liferay? Я добавил к портлета распределению среди/WEB-INF/web.xml
Edit 1: Версии
liferay 6.1.1
Tomcat 7.0.47
Edit 2: Я попробовал еще один тест.
HttpSession httpSession = request.getSession();
String testTime = (String) httpSession.getAttribute("testTime");
String before = testTime;
if(testTime == null) {
testTime = Long.toString(System.currentTimeMillis());
httpSession.setAttribute("testTime", testTime);
}
String sessionid = httpSession.getId();
System.out.println("JSESSIONID: "+sessionid);
System.out.println("TEST TIME WAS: "+before);
System.out.println("TEST TIME IS: "+testTime);
на этот раз я устанавливаю только переменную, если ее значение равно нулю. И он работает так, как ожидалось, в JSP за пределами liferay, но в течение жизни он идет так.
- Первый сервер, чтобы получить запрос получает нулевой конец устанавливает переменные
- Когда другой сервер получает запрос, он также получает нуль и брусчатки переменной
- Когда сервер, который получил первый запрос пытается получить переменная получает значение со второго сервера. поэтому теперь он реплицируется.
Это не имеет значения, какой сервер получает первый запрос его всегда одинаковый результат в любом случае
Редактировать 4. Кластер информация
Узлы: 2 балансировки нагрузки:
<Proxy balancer://mycluster>
BalancerMember ajp://node1:8009 route=tomcat1 loadfactor=1
BalancerMember ajp://node2:8009 route=tomcat2 loadfactor=1
Order Deny,Allow
Deny from none
Allow from all
ProxySet lbmethod=byrequests
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Allow from all
</Location>
ProxyPass /balancer-manager !
ProxyPass/balancer://mycluster/
portal-ext.properties
cluster.link.enabled=true
jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://dbserver:3306/lportal?autoReconnect&autoReconnectForPools;&useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.default.username=u jdbc.default.password=p
spring.configs=\
META-INF/base-spring.xml,\
\
META-INF/hibernate-spring.xml,\
META-INF/infrastructure-spring.xml,\
META-INF/management-spring.xml,\
\
META-INF/util-spring.xml,\
\
META-INF/jpa-spring.xml,\
\
META-INF/executor-spring.xml,\
\
META-INF/audit-spring.xml,\
META-INF/cluster-spring.xml,\
META-INF/editor-spring.xml,\
META-INF/jcr-spring.xml,\
META-INF/ldap-spring.xml,\
META-INF/messaging-core-spring.xml,\
META-INF/messaging-misc-spring.xml,\
META-INF/mobile-device-spring.xml,\
META-INF/notifications-spring.xml,\
META-INF/poller-spring.xml,\
META-INF/rules-spring.xml,\
META-INF/scheduler-spring.xml,\
META-INF/scripting-spring.xml,\
META-INF/search-spring.xml,\
META-INF/workflow-spring.xml,\
\
META-INF/counter-spring.xml,\
META-INF/mail-spring.xml,\
META-INF/portal-spring.xml,\
META-INF/portlet-container-spring.xml,\
META-INF/staging-spring.xml,\
META-INF/virtual-layouts-spring.xml,\
\
META-INF/dynamic-data-source-spring.xml,\
#META-INF/shard-data-source-spring.xml,\
#META-INF/memcached-spring.xml,\
#META-INF/monitoring-spring.xml,\
\
META-INF/ext-spring.xml
Просьба предоставить соответствующие сведения о настройке вашего кластера, например. файл portal -ext.properties, топологию кластера и т. д. –