Назад | Перейти на главную страницу

Сделайте так, чтобы apache загружал все сервлеты в папку webapps Tomcat

Я использую Apache2.2 и Tomcat7.0 в Windows.

Как настроить JkMount, чтобы разрешить доступ к любому развернутому веб-приложению на Tomcat в форме domain.com/tomcat/nameOfWebapp?

Вот мои worker.properties:

# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

Вот соответствующая часть моего httpd.conf:

LoadModule jk_module modules/mod_jk.so
<IfModule jk_module>

    JkWorkersFile D:/servers/tomcat7.0/conf/workers.properties
    JkLogFile D:/servers/tomcat7.0/logs/mod_jk.log
    JkLogStampFormat "[%b %d %Y - %H:%M:%S] "
    JkRequestLogFormat "%w %V %T"
    JkLogLevel info
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

    Alias /tomcat "D:/servers/tomcat7.0/webapps/"

    <Directory "D:/servers/tomcat7.0/webapps/">
        AllowOverride None
        Allow from all
    </Directory>

    <Location /*/WEB-INF/*>
        deny from all
    </Location>

    JkMount /tomcat/* worker1
</IfModule>

Если я просто сделаю что-то вроде JkMount / manager * worker1, я могу заставить работать веб-приложение менеджера, но как я могу заставить его загружать любое приложение, развернутое в Tomcat?

То, что у меня есть сейчас, дает мне эту ошибку:

The requested resource (/tomcat/manager/) is not available.

при попытке посетить domain.com/tomcat/manager. Ошибка выдается Tomcat, поэтому он доходит до нее, но по какой-то причине не хочет ее загружать.

Спасибо

Похоже, я хотел, чтобы это было в моем httpd.conf:

JkMount /*.jsp worker1
JkMount /*/tomcat/ worker1

Если вы хотите, чтобы все было доступно, скажем, в / tomcat / [webappname], вы можете сделать это следующим образом:

JkMount /tomcat/* worker1

Затем переименуйте WAR-файлы всех ваших веб-приложений, чтобы использовать вложенные пути, которые попадают в / tomcat, например:

CATALINA_BASE/webapps$ mv ROOT.war tomcat.war
CATALINA_BASE/webapps$ mv app1.war tomcat#app1.war
CATALINA_BASE/webapps$ mv app2.war tomcat#app3.war
CATALINA_BASE/webapps$ mv app3.war tomcat#app3.war

Эффект будет заключаться в том, что теперь все веб-приложения будут иметь / tomcat / app1 (или что-то еще) в качестве пути контекста. Если вы написали их правильно, это перемещение не должно быть проблемой, и вы можете разрешить httpd продолжать обслуживать запросы (даже .jsp, если хотите) на пути за пределами / tomcat /.