Ich versuche, Sitzungsreplikation in liveray auf Tomcat ohne viel Glück zu ermöglichen. Ich habe einen kleinen Test geschrieben, um zu sehen, ob Sitzungen repliziert werden, und es funktioniert gut in einer separaten JSP-Datei, die ich unter webapps/examples platziert habe, aber wenn ich denselben Code in ein lferay-porlet eingib, sind nur die JSESSION korrekt.Liferay Clustersitzungsreplikation
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);
Hat jemand eine Vorstellung davon, warum es nicht funktioniert in der Liferay-Portlet? Ich habe ausschüttbaren hinzugefügt Portlet/WEB-INF/web.xml
Edit 1: Versionen
liferay 6.1.1
Tomcat 7.0.47
Edit 2: Ich versuchte, einen weiteren Test.
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);
diesmal setze ich nur die Variable, wenn es Null ist. Und es funktioniert wie erwartet in der JSP außerhalb des Lebens, aber innerhalb des Lebens, es geht so.
- erste Server die Anfrage bekommt null Ende setzt die Variable
- Wenn der andere Server wird die Anfrage auch null bekommt zu bekommen und setts die Variable
- Wenn der Server, der die erste Anforderung bekam versucht zu bekommen die Variable erhält den Wert vom zweiten Server. Jetzt wird es repliziert.
Es spielt keine Rolle, welcher Server bekommt die erste Anforderung ist es immer das gleiche Ergebnis ohnehin
bearbeiten 4. Clusterinfo
Knoten: 2 Load Balancer:
<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
Bitte geben Sie relevante Details Ihres Cluster-Setups an, z. portal-ext.properties-Datei, Ihre Cluster-Topologie usw. zu beginnen. –