2012-04-12 3 views
0

Ich stoße auf eine seltsame (für mich) Situation mit einer Java-Anwendung von JBoss serviert.JBoss gediente Anwendung - mit Apache-Proxypass-Sitzung ist nicht zugänglich

--Background--

1) JBoss wird in einer Linux-Umgebung installiert.

Aus Gründen der Erklärung ist die IP-Adresse auf meiner Umgebung: http://127.0.0.1:8080

Mit mehreren Anwendungen, die erreicht werden kann: 99.999.999.99

2) Innerhalb der Umgebung, ich habe bei JBoss läuft an: http://127.0.0.1:8080/APPLICATION_NAME

3) I apache-Routing-Verkehr Adresse meiner IP haben wie folgt:

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) Wenn ich auf 99.999.999.99 zugreifen, kann ich auf App1 zugreifen, die wie erwartet funktioniert (außer für das Problem unten).

Wenn ich auf 99.999.999.99/app2 zugreife, kann ich auf app2 zugreifen.

--Issue--

1) Innerhalb von app1 habe ich eine jsp Seite, die an der Sitzung schreibt:

_sessionTest1.jsp session.setAttribute ("test", " Prüfung");

2) Das Problem ist, dass nach dem Ausführen dieser JSP die Sitzung nicht die Daten enthält, die festgelegt wurde.

3) Wenn ich die Apache-Proxies entferne und stattdessen JBoss-Root mit den Verwaltungslinks und der JMX-Konsole auch mit verfügbar mache, wird die Sitzung wie erwartet aktualisiert.

Wenn auf diese Weise konfiguriert, so wie ich auf die Anwendung zugreifen ist:

99.999.999.99/app1

Wo 99.999.999.99 meine JBoss Wurzel zeigen.

4) Wird erwartet, dass die Sitzung für eine Anwendung nicht zugänglich wäre, wenn sie wie oben konfiguriert wurde?

Danke!

Antwort

0

Ich glaube, Ihre erste Proxy-Anweisung sollte in der Tat Ihre letzte sein. Apache stoppt bei der ersten Regel, die der URL entspricht, sodass alle Ihre Anfragen über Ihren Webserver Regel 1 mit dem generischen/abfangen.

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

Danke, Sie sind damit einverstanden. Ich hatte es tatsächlich zuletzt, aber steckte es zuerst in die Erklärung, um es klarer zu machen. – user1329237

1

stellte sich heraus, das Problem war mit Apache konfiguriert werden, um für die Sitzungsinformationen aus dem Cookie zu suchen, statt URL, die Standardeinstellung ist.

1

Ich hatte gerade das gleiche Problem mit Apache Proxying Jetty. Die Regel war:

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

Welche https://myhost/myapp zu http://localhost:8080 proxied. Dies funktionierte im Allgemeinen, aber die Sitzung in myapp wurde zwischen den Anfragen nicht beibehalten. Fügt die folgende Regel hinzu:

ProxyPassReverseCookiePath//myapp