Struts2:会话问题(反向代理之后)

时间:2010-08-02 15:32:31

标签: java http session struts2 session-state

我将会话参数存储在我使用SessionAware接口操作的Struts2会话映射中。我的应用程序位于/ MyApp路径中。

在Apache服务器上设置struts2应用程序后,使用反向代理重定向,使URL http://www.appdomain.com/ 指向 localhost:8080 / MyApp上的本地tomcat ,Struts2会话处理不再起作用。我希望会话cookie存储在http://localhost:8080/MyApp而不是http://www.appdomain.com/的Struts2上下文中......

Struts2配置中是否有解决方案?或者以某种方式以编程方式更改会话cookie?在interwebs或官方文档中找不到任何关于此的信息。请帮助,我已经投入生产,登录不起作用; - )

3 个答案:

答案 0 :(得分:2)

这已经过时了,但我发现了它,并希望降低我的5美分。

您可以使用的一个修补程序是编辑web.xml,并在session-config集中编辑类似:

<session-config>
    <session-timeout>10</session-timeout>
    <cookie-config>
        <name>MYAPPSESSIONID</name>
        <path>/</path>
    </cookie-config>
</session-config>

此更改

  • 从JSESSIONID到MYAPPSESSIONID的sessionid cookie,因此它不会与可能在同一代理上公开的其他应用发生冲突
  • Cookie适用的路径。所以它将始终发送到服务器

希望这可以帮助别人。

答案 1 :(得分:1)

我刚用脏黑客解决了这个问题:我将会话ID传递给了JSP并使用javascript来设置所需的JSESSIONID cookie客户端。

function createCookie(name,value,days){         if(days){             var date = new Date();             date.setTime(date.getTime()+(天* 24 * 60 * 60 * 1000));             var expires =“; expires =”+ date.toGMTString();         }         else var expires =“”;         document.cookie = name +“=”+ value + expires +“; path = /”;     }

$(document).ready(function(){         的createCookie( “JSESSIONID”, “”,3);         });

从此页面获得JS代码:http://www.quirksmode.org/js/cookies.html

谢谢,问题解决了!

最诚挚的问候, 添

答案 2 :(得分:0)

将其放入httpd.conf

#all cookies from /MyApp are proxied to "/"
ProxyPassReverseCookiePath /MyApp /

http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreversecookiepath