# Resourcen werden in JSP nicht gefunden



## Marsman (30. Okt 2007)

Hallo Ihr!

Ich habe eine JSP programmiert, die auch ein Bild enthält (img-Tag). Leider wird das Bild vom Browser nicht angezeigt. Das Bild befindet sich im Verzeichnis WebContent/images, also auch im Deployment-Archiv. Wenn ich das ganze lokal auf meinem Testsystem deploye, wird es auch angezeigt. Stelle ich das Archiv auf meinen Server im Internet, wird es nicht angezeigt. Auffällig ist dabei, dass andere Bilder, die sich auf dem Server im html-Verzeichnis befinden, sehr wohl angezeigt werden. Muss ich dem Tomcat noch irgendwie sagen, dass er auf Resourcen im Deployment-Verzeichniss zugreifen soll? In der web.xml vielleicht?!? Oder sehe ich hier irgendwas anderes nicht?!?  :? 

Titus


----------



## maki (30. Okt 2007)

> Auffällig ist dabei, dass andere Bilder, die sich auf dem Server im html-Verzeichnis befinden,


Hmm.. kann es sein, das du auf diese dann mit einem relativen Pfad zugreifst?

Beachtest du deinen 'Context'?


----------



## Marsman (30. Okt 2007)

...ich greife *immer * mit einem relativen Pfad zu. Also z.b. 
	

	
	
		
		

		
			





 oder 
	

	
	
		
		

		
		
	


	




. Das erste Bild befindet sich jedoch im JSP-Projekt (also WAR-Archiv), das zweite hingegen auf der Website. Ist das nicht okay?

Titus


----------



## maki (30. Okt 2007)

> Das erste Bild befindet sich jedoch im JSP-Projekt (also WAR-Archiv), *das zweite hingegen auf der Website*. Ist das nicht okay?


Das fett markierte, was genau heisst das?


----------



## Marsman (30. Okt 2007)

...bei dem zweiten Bild handelt es sich um das Logo. Dieses Bild wird auf alles Pages angezeigt. Mit Webseit meine ich das Verzeichnis auf dem Server, auf dem sich die Website befindet. Vielleicht wirds deutlicher, wenn ich mal die absoluten Pfade nenne:

Deployment-Verzeichnis:

/srv/www/tomcat5/base/webapps/guestbook/index.jsp
/srv/www/tomcat5/base/webapps/guestbook/images/guestbook.jpg

Website:

/srv/www/(username)/html/images/logo.jpg


Titus


----------



## maki (30. Okt 2007)

Was passiert, wenn du versuchst das Bild direkt aus dem Browser aufzurufen?


----------



## Marsman (30. Okt 2007)

...es wird leider auch nicht gefunden. Ich habe allerdings mal versucht, das Bild nicht über die Domain der Website, sondern über die URL des Tomcat aufzurufen. Dann wird es angezeigt:

http://myserver:8080/guestbook/images/guestbook.jpg

Ich vermute, es hängt mir der Konfiguration des Tomcat oder JK-Modules zusammen. Bin aber nicht sicher.


----------



## Guest (30. Okt 2007)

Hast du es schon mal mit dem Kontext-Pfad innerhalb der Pfadangabe versucht?


```
"<%=request.getContextPath()%>/guestbook/images/guestbook.jpg"
```


----------



## Marsman (30. Okt 2007)

...das habe ich jetzt mal versucht (allerdings ohne nochmal /guestbook im Pfad anzugeben). Leider wird das Bild immer noch nicht angezeigt. Wenn ich den Inhalt ContextPath im Browser ausgebe, kommt /guestbook heraus. Der Browser surcht dies aber im Verzeichnis der Website. Nicht in der JSP-Applikation. Da hat er ja auch gar keinen Zugriff drauf.

Ich fürchte, das Problem liegt wirklich daran, dass ich die Web-Application (JSP) und die Website (HTML) auf dem Server in verschiedenen Verzeichnissen habe. Wie läuft denn das normalerweise??

Titus


----------



## Guest (30. Okt 2007)

Normalerweise bindet man die statischen Dinge (also in dem Fall deine Website) komplett in die Webapplikation mit ein. Denn ob sie nun im Apache oder im Tomcat liegen spielt ja eigentlich keine Rolle. Höchstens wenn der Tomcat mal seinen Geist aufgibt, aber sowas lässt sich ja abfangen.


----------



## maki (30. Okt 2007)

> Der Browser surcht dies aber im Verzeichnis der Website. Nicht in der JSP-Applikation. Da hat er ja auch gar keinen Zugriff drauf.


Das liegt wahrscheinlich an der mod_jk Konfiguration.

Gibt es einen besonderen Grund warum du den Apache vorschalten musst?


----------



## Marsman (30. Okt 2007)

...ja, tatsächlich. Es lag an der Konfiguration des mod_jk. Ich habe nun "JKMount /guestbook/* mydomain.de" angegeben. Jetzt klappt es wie gewünscht.

Vorher hatte ich "JKMount /*jsp ..." angegeben, weil ich alle JSPs Seiten unter der Domain aufrufen wollte. Unabhängig davon, in welchem Verzeichnis sie sich befinden.

Danke nochmal an alle,

Titus


----------



## ms (30. Okt 2007)

Anonymous hat gesagt.:
			
		

> Normalerweise bindet man die statischen Dinge (also in dem Fall deine Website) komplett in die Webapplikation mit ein. Denn ob sie nun im Apache oder im Tomcat liegen spielt ja eigentlich keine Rolle. Höchstens wenn der Tomcat mal seinen Geist aufgibt, aber sowas lässt sich ja abfangen.


Ganz so sehe ich das nicht.
Die Zeiten, wo Tomcat statischen Content nicht so flott bereitstellen konnte sind sicherlich vorbei aber es gibt doch noch ein paar Gründe trotzdem einen Apache vorzuschalten. (Siehe hier) 
Abgesehen davon finde ich es einfach praktisch für eine kleine Änderung eines Images oder eines Styles nicht die komplette Applikation angreifen und neu deployen zu müssen. (Was in diesem Fall aber eh nicht gegeben ist)

ms


----------

