2017-01-22 17 views
0

我有兩個應用程序,它有兩種GlassFish實例運行,配置我的Apache來使用sticky session像這樣:stickysession在Apache中沒有正常工作和兩個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和設置應用1像默認Web模塊,這項工作很好,背景是一樣的,而服務器創建一個新的Cookie是這樣的:

cookies of browser

但是當我嘗試連接無默認Web模塊時,它使用兩個實例。

能否請您提出的Apache和Glassfish的正確配置來運行在集羣環境中的多個應用程序?

+0

你可以發佈其餘的Apache VirtualHost配置嗎? – Mike

+0

@Mike你是指/etc/httpd/conf/httpd_proxy.conf還是什麼? –

+0

只要你有你的代理配置''標籤裏面的部分 – Mike

回答

0

搜索的一個星期後,我終於找到了解決辦法:

爲了解決這個問題,你需要兩樣東西,一個在兩個應用程序和一個在服務器中的Apache:

所以我們應該應用在web.xml中定義cookie的名稱:

APP1

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

    <cookie-config> 
     <name>jsessionapp1</name> 
     <path>/</path> 
    </cookie-config> 
</session-config> 

APP 2

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

    <cookie-config> 
     <name>jsessionapp2</name> 
     <path>/</path> 
    </cookie-config> 
</session-config> 

而在服務器的Apache我們/etc/httpd/conf/httpd_proxy.conf修復的stickysession名稱:

ProxyPass/balancer://Appcluster/ stickysession=jsessionapp1|jsessionapp2|jsessionappN 

所以這個配置創建每個應用程序唯一的cookie,它告訴我這個瀏覽器:

cookies in browser

我不知道是否有其他解決方案比這更好的,如果是的,我會很高興地知道他們。

相關問題