# JSF Bilder werden wegen jsessionid nicht gefunden (nur IE)



## Marsman (13. Dez 2007)

Hallo Ihr!

Ich bin langsam etwas am Verzweifeln, denn ich habe hier mal wieder ein neues Problem, dass nur unter ganz bestimmten Bedingungen auftritt:

In einer JSF-Seite sollen mit <h:graphicImage> Bilder angezeigt werden. Beim Firefox funktioniert das auch, beim IE6 und teilweise auch beim IE7 nicht. Und zwar nur dann, wenn das ganze über den Apache per mod_jk an den Tomcat übergeben wird. Lasse ich die Seite direkt über Port 8080 anzeigen, funktioniert es auch im IE. Das Protokoll des Apache zeigt:

[Thu Dec 13 16:57:24 2007] [error] [client 127.0.0.1] File does not exist: D:/Eigene Dateien/Websites/Sites/mysite/images/bild.jpg;jsessionid=B69CD29379150C27F1D6B5B58264042C, referer: http://localhost:8000/mysite/pages/anzeige.jsf;jsessionid=B69CD29379150C27F1D6B5B58264042C

Der Unterschied zum Firefox ist diese jsessionid, die beim IE an den Pfad des Bildes angehängt wird. Ich habe das ganze auch mit einem Beispiel aus meinem Buch gestest und dort tritt der Fehler auch auf. Ich gehe also davon aus, dass es nicht an der Anwendung liegt, sondern entweder am IE oder an der Konfiguration des Apache.

Ich wäre echt froh, wenn mir da nochmal jemand helfen könnte. Denn bis auf das hier beschriebe tappe ich völlig im Dunkeln.  :cry: 

Titus


----------



## maki (13. Dez 2007)

Leitet der Apache nur die anfragen nach *.jsf und *.jsp  an den Tomcat weiter?


----------



## Marsman (13. Dez 2007)

Ich denke, ja. Ich habe folgende Konfiguration eingestellt:


```
JkMount /*/servlet/* worker1
JkMount /*.jsp worker1
JkMount /*.jsf worker1
JkMount /*.faces worker1
```


Titus


----------



## maki (13. Dez 2007)

Warum nicht alle requests an die Java Webanwedung vom Tomcat  behndeln lassen?

JkMount /meinWebanwendungsContext* worker1 

Ich bevorzuge alle Dateien einer Webanwedung vom TC ausliefern zu lassen, nicht nur die JSF und JSP Seiten.

Übrigen wäre MVC keine schlechte Idee wenn es eine Dynamische Anwednung ist und nicht nur Seiten hat sondern auch Logik.


----------



## Marsman (13. Dez 2007)

maki hat gesagt.:
			
		

> Warum nicht alle requests an die Java Webanwedung vom Tomcat  behndeln lassen?



Weil die Seiten auch auf Dateien (JPG/CSS) zugreifen, dich eigentlich nicht so gerne in die Anwendung kopieren möchte. Das ganze wäre dann wegen Redundanzen schwer zu pflegen.



> Übrigen wäre MVC keine schlechte Idee wenn es eine Dynamische Anwednung ist und nicht nur Seiten hat sondern auch Logik.



Natürlich besteht die Anwendung nicht nur aus JSF-Seiten, sondern auch aus Beans usw. Ich denke aber, dass dies nicht die Problemursache ist, denn auf dem Firefox läuft es ja.

Titus


----------



## maki (13. Dez 2007)

> Weil die Seiten auch auf Dateien (JPG/CSS) zugreifen, dich eigentlich nicht so gerne in die Anwendung kopieren möchte.




Benutzt der FireFox auch eine URL encodete Session Id? Würde ich mal checken 
Wenn nicht heisst das, das der Apache mit dem Session id Attribut in der URL klarkommt.
Mit dem mod_rewrite Modul könntest du sie wegfiltern, hier gibt es doch Leute die sich mit regex auskennen 



> Das ganze wäre dann wegen Redundanzen schwer zu pflegen.


Unter Linux wären symlinks eine Möglichkeit.

Nachtrag: 



> http://localhost:8000/mysite/pages/anzeige.jsf*;*jsessionid=B69CD29379150C27F1D6B5B58264042C


Die URL stimmt nicht, anstatt dem *;* sollte ein *&* stehen!

Benutzt du JS um die Session Id zu setzen?


----------



## Marsman (14. Dez 2007)

maki hat gesagt.:
			
		

> Benutzt der FireFox auch eine URL encodete Session Id? Würde ich mal checken



Nein, wenn ich die Seite mit dem Firefox anzeige, wird keine Session Id angehängt.



> Die URL stimmt nicht, anstatt dem *;* sollte ein *&* stehen!
> Benutzt du JS um die Session Id zu setzen?



Ich habe die Session Id nicht programmiert, das macht der IE irgendwie automatisch.

Wie auch immer, Du hattest recht!! Ich habe das mit dem JkMount mal geändert und schon werden die Bilder gefunden. Ich verstehe das zwar nicht ganz, akzeptiere das aber einfach mal so. Etwas unschön finde ich nun, dass ich für jede neue Anwendung die httpd.conf des Apache anpassen müsste. Gibts da noch nen Trick?

Titus


----------

