Въпреки че е лесно да се направи от моя гледна точка с IIS, аз съм пълен нооб за Tomcat и нямам представа как да задавам статични стойности за съдържанието на бисквитките. Да, прочетох последиците за сигурността и в крайна сметка ще осъществя достъп чрез SSL, така че не се притеснявам. Освен това прочетох спецификацията на Servlet 3.0 за това да не променям стойността и приемам това.
В IIS просто бих задал HTTP Header с име Set-Cookie с произволна настройка на WebServerSID и стойност 1001.
След това във VIP за балансиране на натоварването, съдържащ тази група от реални сървъри, задайте стойността WebServerSID на ниво VIP и за първия уеб сървър стойност на бисквитка 1001 и така една за останалите машини 1002 за сървър 2, 1003 за сървър 3.
Това постига афинитет на сесията чрез бисквитки, докато клиентът затвори браузъра.
Как може да стане това с Tomcat 7.0.22?
Виждам, че са настъпили много промени в конфигурацията между Tomcat 6.x и 7.x по отношение на бисквитките и начина, по който са настроени. Опитах следното след задълбочено проучване през последната седмица.
В web.xml: (това ще деактивира пренаписването на URL под Tomcat 7.x) <tracking-mode>COOKIE</tracking-mode>
под елемента на сесията по подразбиране
В context.xml: (бисквитките са true по подразбиране, но бях изричен, тъй като не мога да го накарам да работи)
cookies=true
sessionCookiePath=/
sessionCookieName=WebServerSID
sessionCookieName=1001
Имам 2 записа в context.xml за sessionCookieName, защото еквивалентните команди от Tomcat 6.x изглеждат така, сякаш са обединени в 1. Вижте http://tomcat.apache.org/migration-7.html#Tomcat_7.0.x_configuration_file_differences
Екстракт:
org.apache.catalina.SESSION_COOKIE_NAME системно свойство: Това е премахнато. Еквивалентен ефект може да се получи чрез конфигуриране на атрибута sessionCookieName за глобалния context.xml (в CATALINA_BASE/conf/context.xml). org.apache.catalina.SESSION_PARAMETER_NAME системно свойство: Това е премахнато. Еквивалентен ефект може да се получи чрез конфигуриране на атрибута sessionCookieName за глобалния context.xml (в CATALINA_BASE/conf/context.xml).
Ако това не е правилно, тогава просто не разбирам необходимия синтаксис и не мога да намеря никъде, което просто да го изпише просто черно на бяло.
Под Tomcat 6.x бих използвал опциите на Java в конфигурацията като:
-Dorg.apache.catalina.SESSION_COOKIE_NAME=WebServerSID
-Dorg.apache.catalina.SESSION_PARAMETER_NAME=1001
Приложението, което използвам, няма никоя от тези стойности, зададени другаде, така че това не е приложението.
Всички тези настройки са във файлове context/web/server.xml в базата на Catalina
В края на деня това, което трябва да видя в заглавките на отговорите под Set-Cookies: (както се вижда с помощта на Fiddler), е:
WebServerSID=1001
НЕ
JSESSIONID=as8sd9787ksjds9d8sdjks89s898
Благодаря предварително
за разбирането