0

我遇到了一个奇怪的(对我来说)从 JBoss 提供的 java 应用程序的情况。

- 背景 -

1) JBoss 安装在 Linux 环境中。

为了便于说明,我的环境中的IP地址是:99.999.999.99

2) 在环境中,我的 JBoss 运行在:http: //127.0.0.1 :8080

有几个可以访问的应用程序:http: //127.0.0.1 :8080/APPLICATION_NAME

3) 我有 apache 将流量路由到我的 IP 地址,如下所示:

ProxyPass / http://127.0.0.1:8080/app1/
ProxyPassReverse / http://127.0.0.1:8080/app1/

ProxyPass /app2/ http://127.0.0.1:8080/app2/
ProxyPassReverse /app2/ http://127.0.0.1:8080/app2/

ProxyPass /app3/ http://127.0.0.1:8080/app3/
ProxyPassReverse /app3/ http://127.0.0.1:8080/app3/

4) 当我访问 99.999.999.99 时,我可以访问 app1,它按预期运行(除了下面的问题)。

当我访问 99.999.999.99/app2 时,我可以访问 app2。

- 问题 -

1)在app1内部,我有一个jsp页面写入​​会话:

_sessionTest1.jsp session.setAttribute("test", "test");

2) 问题是运行这个 JSP 之后,会话中不会包含设置的数据。

3) 如果我删除 apache 代理,而是公开 JBoss 根目录,以及管理链接和 JMX 控制台,会话将按预期更新。

以这种方式配置时,我访问应用程序的方式是:

99.999.999.99/app1

其中 99.999.999.99 将显示我的 JBoss 根目录。

4) 如果如上配置,是否预计应用程序的会话将无法访问?

谢谢!

4

3 回答 3

1

原来问题在于需要将 apache 配置为从 cookie 中查找会话信息,而不是默认的 URL。

于 2012-04-21T17:59:08.940 回答
1

I just had this same problem with Apache proxying Jetty. The rule was:

ProxyPass /myapp http://localhost:8080
ProxyPassReverse /myapp http://localhost:8080

Which proxied https://myhost/myapp to http://localhost:8080. This worked in general, but the session in myapp was not preserved between requests. Adding the following rule fixed it:

ProxyPassReverseCookiePath / /myapp
于 2012-06-03T20:00:16.117 回答
0

我相信您的第一份代理声明实际上应该是您的最后一份。Apache 将在与 URL 匹配的第一个规则处停止,因此您通过 Web 服务器的所有请求都使用通用 / 捕获规则 1。

ProxyPass /app1/ http://127.0.0.1:8080/app1/
ProxyPassReverse /app1/ http://127.0.0.1:8080/app1/

ProxyPass /app2/ http://127.0.0.1:8080/app2/
ProxyPassReverse /app2/ http://127.0.0.1:8080/app2/

ProxyPass /app3/ http://127.0.0.1:8080/app3/
ProxyPassReverse /app3/ http://127.0.0.1:8080/app3/

ProxyPass / http://127.0.0.1:8080/app1/
ProxyPassReverse / http://127.0.0.1:8080/app1/
于 2012-04-12T14:58:32.540 回答