2012-04-12 1 views
0

Я столкнулся с странной (мне) ситуацией с приложением Java, поданным из JBoss.Приложение JBoss, использующее сеанс apache proxypass, недоступно

--Background--

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) у меня есть апачский трафик маршрутизации на мой 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.

--Issue--

1) Внутри App1, у меня есть страница JSP, которая записывает на сессии:

_sessionTest1.jsp session.setAttribute ("тест", " контрольная работа");

2) Проблема в том, что после запуска этого JSP сеанс не будет содержать данные, которые были установлены.

3) Если я удалю прокси-серверы apache, а вместо этого выставляю корень JBoss, а также ссылки администрирования и консоль JMX, сеанс будет обновляться, как ожидалось.

Когда настроена таким образом, как я получить доступ к приложению является:

99.999.999.99/app1

Где 99.999.999.99 покажет мой корень JBoss.

4) Ожидается ли, что сеанс для приложения не будет доступен, если он сконфигурирован, как указано выше?

Спасибо!

ответ

0

Я считаю, что ваше первое заявление прокси должно быть вашим последним. Apache остановится при первом правиле, которое соответствует URL-адресу, поэтому все ваши запросы через ваш веб-сервер ловят правило 1 с помощью generic /.

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/ 
+0

Спасибо, вы с этим согласны. На самом деле у меня это было последнее, но сначала дайте объяснение, чтобы попытаться сохранить его более ясным. – user1329237

1

Оказывается, проблема была с апачами необходимости быть сконфигурированы для поиска информации о сеансе из печенья, вместо URL, который по умолчанию.

1

У меня была такая же проблема с Apache proxying Jetty. Правило было:

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

Какой проксированном https://myhost/myapp в http://localhost:8080. Это работало в целом, но сеанс в myapp не сохранялся между запросами. Добавив следующее правило, оно исправлено:

ProxyPassReverseCookiePath//myapp