2017-01-22 2 views
0

У меня есть два приложения, которые работают в двух Glassfish экземпляров, я настроить мой апач использовать sticky session так:stickysession не работает нормально в апаче и два GlassFish Инстансы

ProxyPass/balancer://Appcluster/ stickysession=JSESSIONID 

Но это не работает 100% правильно, это несколько раз меняйте экземпляр, когда клиент переходит из App1 в App2.

проверить печенье в моем навигаторе это показать мне что-то вроде этого:

cookies of browser

я нашел другую конфигурацию в web.xml, например, так:

<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
    <cookie-config> 
     <path>/</path> 
    </cookie-config> 
</session-config> 

Так что, когда я сделать этот путь как и все, все прекрасно работает, но создает новый контекст каждой навигации между этими двумя приложениями.

Теперь я настроить мой Glassfish и установить App1 как Default Web Module, эту работу штраф и контекст такой же, и разорвать создать новое печенье, как это:

cookies of browser

Но когда я пытаюсь подключиться к НЕТ по умолчанию веб-модуля, он использует два экземпляра.

Можете ли вы предложить правильную конфигурацию Apache и Glassfish для запуска нескольких приложений в кластерной среде?

+0

Можете ли вы разместить оставшуюся часть вашей конфигурации Apache VirtualHost? – Mike

+0

@Mike вы имеете в виду/etc/httpd/conf/httpd_proxy.conf или что? –

+0

Только часть внутри '' тегов, где у вас есть ваша прокси-конфигурация. – Mike

ответ

0

Через неделю поисков наконец я нашел решение:

Чтобы решить эту проблему, вам нужно две вещи, одна в двух приложениях и один в сервере Apache:

Таким образом, в приложениях мы должны чтобы определить имя куки в 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 

Так эта конфигурация создания уникальный файл cookie для каждого приложения, и это покажет мне это в браузере:

cookies in browser

Я не знаю, есть ли другие решения лучше этого, если да, я буду рад их узнать.

Смежные вопросы