У меня есть два приложения, которые работают в двух экземплярах Glassfish, я настраиваю свой apache для использования липкого сеанса
следующим образом:
ProxyPass / balancer://Appcluster/ stickysession=JSESSIONID
Но это не работает на 100% правильно, он несколько раз меняет экземпляр, когда клиент переходит с App1 на App2.
Я проверяю файлы cookie в моем навигаторе, он показывает мне что-то вроде этого:
Я нашел другую конфигурацию в web.xml
, примерно так:
<session-config>
<session-timeout>
30
</session-timeout>
<cookie-config>
<path>/</path>
</cookie-config>
</session-config>
Итак, когда я делаю этот путь таким образом каждый вещь работает нормально, но она создает новый контекст при каждой навигации между этими двумя приложениями.
Теперь я настраиваю свой Glassfish и устанавливаю App1 как веб-модуль по умолчанию , это работает нормально, и контекст тот же, и сервер создает новый файл cookie, подобный этому:
Но когда я попробуйте подключиться к НЕТ веб-модулю по умолчанию , он использует два экземпляра.
Не могли бы вы предложить правильную конфигурацию Apache и Glassfish для запуска нескольких приложений в кластерной среде?
РЕДАКТИРОВАТЬ
Я кое-что уведомил, поэтому, когда клиент переходит с App1 на App2 и VS, каждый раз он создает новый файл cookie, например:
+-------+----------------------------------------+
| APP | Cookie |
+-------+----------------------------------------+-----+
| app1 | b5a1cd4befdc306f6e569d835b5e.instance2 | New |
+-------+----------------------------------------+-----+
| app2 | b6caf890638a506216d625f7c82b.instance2 | New |
+-------+----------------------------------------+-----+
| app1 | b6d1870ad8f3d044cc768b31e810.instance2 | New |
+-------+----------------------------------------+-----+
| app2 | b6d84bf7b2a6fc37e3c9ffaf701b.instance2 | New |
+-------+----------------------------------------+-----+
| app2 | b6d84bf7b2a6fc37e3c9ffaf701b.instance2 |Same | because i don't change the application
+-------+----------------------------------------+-----+
Бир жумалык издөөдөн кийин мен чечимди таптым:
Мен эки нерсени колдоном, алардын бири эки тиркемеде, экинчиси Apache серверинде:
Ошентип, колдонмолордо кукинин атын аныктоо керек. in web.xml :
APP1
<session-config>
<session-timeout>
30
</session-timeout>
<cookie-config>
<name>jsessionapp1</name>
<path>/</path>
</cookie-config>
</session-config>
APP2
<session-config>
<session-timeout>
30
</session-timeout>
<cookie-config>
<name>jsessionapp2</name>
<path>/</path>
</cookie-config>
</session-config>
Жана Apache серверинде stickysession атын / etc / httpd / conf / оңдойбуз httpd_proxy.conf :
ProxyPass / balancer://Appcluster/ stickysession=jsessionapp1|jsessionapp2|jsessionappN
Мындан башка башка чечимдер барбы же жокпу, билбейм, ооба, аларды билүүгө кубанычтамын.