Domain, Web.xml und jk_mod

Barzille

Grünschnabel
Hallo Leute,
nachdem ich mehrere Versuche unternommen habe, wende ich mich an euch. Folgendes Problem:

Ich habe einen W2k3 Server auf dem XAMPP mit Tomcat läuft. So weit so gut.
Im Tomcat/webapp-Verzeichnis habe ich ein Verzeichnis, in dem mein Projekt liegt, nennen wir es meinProjektVerzeichnis.
Darin sieht es folgendermaßen aus:

+ meinProjektVerzeichnis
|
- Dateien...
+ WEB-INF
|
+ classes
+ lib
- web.xml

unter classes liegen meine Klasse in com/programmname/server/ServerLogin.class
Meine web.xml sieht folgendermaßen aus:

Code:
<!DOCTYPE web-app PUBLIC 
  '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 
  'http://java.sun.com/dtd/web-app_2_3.dtd'> 
<web-app> 
  <servlet> 
    <servlet-name>login</servlet-name> 
    <servlet-class>com.programmname.server.ServerLogin</servlet-class> 
  </servlet> 
 
  <servlet-mapping> 
    <servlet-name>login</servlet-name> 
    <url-pattern>/login</url-pattern> 
  </servlet-mapping>   
</web-app>
Mittels http://server:8080/meinProjektVerzeichnis kann ich
dann auf mein Projekt zugreifen. Auch mittels http://server:8080/meinProjektVerzeichnis/login erhalte ich positive Rückmeldung.

Was ich nun möchte, ist, eine neue Domain anzulegen, die
a) entweder direkt auf http://server:8080/meinProjektVerzeichnis zeigt oder
b) auf ein Verzeichnis in apache/htdocs zeigt und meine Servlets mittels Tomcat behandelt

Zu b)
ich habe hierfür die mod_jk.conf angepasst:
Code:
<VirtualHost *:80>
  DocumentRoot C:/xampp/htdocs/meinProjektVerzeichnis/
  ServerName meineDomain.net
  JkMount /* ajp13
</VirtualHost>
Nun habe ich aber das Problem, dass die Domain den Inhalt von http://server:8080/ anzeigt, also das Tomcat Basisverzeichnis mit Tomcat Manager etc.
Mein nächster Versuch war dann ein Verzeichnis servlet zu erstellen in C:/xampp/htdocs/meinProjektVerzeichnis/, so dass ich dann die mod_jk.conf so anpasse:
Code:
<VirtualHost *:80>
  DocumentRoot C:/xampp/htdocs/meinProjektVerzeichnis/
  ServerName meineDomain.net
  JkMount /servlet/* ajp13
</VirtualHost>
Nun zeigt die Domain zwar auf die richtige Stelle, aber ich kriege das Servlet nicht zu fassen. http://meineDomain.net/servlet/login liefert mir nur "The requested resource (/servlet/login) is not available"

Zu a) [Edit]
Ich habe die mod_jk folgendermaßen angepasst:
Code:
<VirtualHost *:80>
  DocumentRoot C:/xampp/tomcat/webapps/meinProjektVerzeichnis/
  ServerName meineDomain.net
  Alias / "C:/xampp/tomcat/webapps/meinProjektVerzeichnis/"
  <Directory "C:/xampp/tomcat/webapps/meinProjektVerzeichnis/">
    Options Indexes +FollowSymLinks
  </Directory>
  JkMount /* ajp13
  <Location "/meinProjektVerzeichnis/WEB-INF">
    AllowOverride None
    deny from all
  </Location>
</VirtualHost>
Wenn ich nun meineDomain.net eingebe, bin ich wieder im webapp Verzeichnis. Wenn ich meineDomain.net/meinProjektVerzeichnis eingebe, bin ich da, wo ich mit meineDomain.net direkt hinzeigen will. Ich finde einfach nicht den Clou an den Einstellungen

Bin für jede Hilfe dankbar,

Gruß Maik
 
Zuletzt bearbeitet:
Also ich habe solche "Apache vor $ServerdeinerWahl" immer mit einem mod_rewrite gelöst und dann einen Proxyrewrite auf den anderen Server gemacht. DocumentRoot setzt einfach nur das "rootverzeichnis" deiner ApacheURL und liefert von da HTML Seiten aus. Es stößt aber nicht den Tomcat selbst an.

Das sieht dann ungefähr so aus:
Code:
LoadModule rewrite_module $PfadzumModul
LoadModule proxy_module $PfadzumModul
LoadModule proxy_http_module $PfadzumModul

<VirtualHost *:80>
Servername www.foobar.de
RewriteEngine on
RewriteRule ^/(.*) http://localhost:8080/$1 [L,P]
</VirtualHost>
Die Befehle zum laden der Module sollten selbsterklärend sein. In der VIrtualHost Deklaration wird dann für http://www.foobar.de ein Rewrite eingerichtet, der alle Requests (^/(.*)) nach http://localhost:8080 umbiegt, dabei alles was hinter http://www.foobar.de steht an die neue URL anhängt ($1). L sorgt dafür, dass diese Regel die letzte ist, die ausgeführt wird. Evtl. vorhandene weitere RewriteRules werden nicht mehr beachtet. P sorgt dafür, dass die Original URL im Browser stehen bleibt.
 
Zuletzt bearbeitet:
Aber das würde bedeuten den AJP Connector zu umgehen und die Verbindungen von Tomcat wieder verarbeiten zu lassen was ja nicht Sinn der Sache ist.
 
Zurück