# Probleme mit JSPs in Unterverzeichnissen



## Copprhead (12. Sep 2010)

Hallo zusammen,

ich habe ein Web-Applikation auf Tomcat 5.5 in einem eigenen Host laufen. Funktioniert problemlos. Jetzt habe ich die Anwendung aber erweitert und die neuen JSPs in einem Unterverzeichnis. Sie laufen prinzipiell auch, aber wenn Klassen und Taglibs verwendet werden kommt eine Fehlermeldung, dass diese nicht gefunden werden können (obwohl sie im WEB-INF/classes und WEB-INF/lib liegen.

server.xml
...
<Host name="myapxyz.com" appBase="/var/www/apps/myappxyz.com" unpackWARs="true">
                <Alias>www.myappxyz.com</Alias>
                <Context path="/" docBase="" reloadable="true" debug="1"/>
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="myapp_tomcat_log." suffix=".txt" pattern="combined" resolveHosts="false"/>
        </Host>
...

Im Verzeichnis /var/www/apps/myappxyz.com liegt mein ausgepacktes WAR-File (würde es gerne gepackt lassen aber dann ist die URL hässlich: http://myappxyz.com/name-des-war-files/ - ohne den Namen des WAR-Files in der URL bekomm ich es nicht konfiguriert...)
Es gibt dort einen Unterordner subdir und dort einige JSPs. Wenn die aufgerufen werden (http://myappxyz.com/subdir/test.jsp) tritt das Problem mit den Klassen und Taglibs auf.

Temporär bekomme ich es zum Laufen wenn ich das WEB-INF-Verzeichnis auch nach ./subdir kopiere, aber dann verhaspelt sich Tomcat beim reload.

Hat vielleicht jemand einen Tipp wie ich das zum Laufen bekommen kann? (Wenn alles im WAR-File bleibt und ich das deploye gibt's keine Probleme, aber dann stimmt eben die URL nicht mehr)


----------



## maki (12. Sep 2010)

> Hat vielleicht jemand einen Tipp wie ich das zum Laufen bekommen kann?


Hmm.. zB. in dem du dich an die Serlvet Spezifikation hälst?

Was ist denn dein Contextpfad?
/var/www/... klingt imho eher nach Apache als Tomcat, ist da einer vorgeschaltet?


----------



## Copprhead (12. Sep 2010)

maki hat gesagt.:


> Hmm.. zB. in dem du dich an die Serlvet Spezifikation hälst?
> 
> Was ist denn dein Contextpfad?
> /var/www/... klingt imho eher nach Apache als Tomcat, ist da einer vorgeschaltet?



ja da hängt ein Apache davor, mit libapache2-mod-jk. Die vhost-Einstellungen für die Domain sehen so aus:


```
JkMount /*.do ajp13_worker
JkMount /*.jsp ajp13_worker
JkMount /testservlet ajp13_worker

DirectoryIndex index.jsp index.html

<LocationMatch '.*WEB-INF.*'>
  deny from all
</LocationMatch>

<Directory "/var/www/apps/myappxyz.com/">
  Options         +FollowSymLinks -MultiViews +ExecCGI
  AllowOverride   AuthConfig
  Order allow,deny
  Allow from all
</Directory>
```


----------



## Copprhead (13. Sep 2010)

maki hat gesagt.:


> Hmm.. zB. in dem du dich an die Serlvet Spezifikation hälst?



Was meinst Du damit genau? Siehst Du einen Fehler in der Konfiguration?


----------



## maki (13. Sep 2010)

Du solltest nicht den root Context nutzen(sollte man nie), sondern jeden Context (WebApp) auf einen eigenen ajp worker legen.

Context Konfiguration sollte nicht in die server.xml sondern in eigene context Konfig Dateien, steht in der Tomcat Doku: Apache Tomcat Configuration Reference - The Context Container

Das hier:
[xml]<LocationMatch '.*WEB-INF.*'>
  deny from all
</LocationMatch>
[/xml]
ist vollkommen überflüssig und nicht Aufgabe des Apache Server.
Dein Directory Element brauchst du dann auch nicht.


----------

