Как получить встроенный кот с менеджером веб-приложения

Идея состоит в том, чтобы иметь самодостаточный проект (ну, по крайней мере, для разработки) без какой-либо необходимости конфигурировать внешний tomcat - но проблема с использованием tomcat7-maven-plugin - это, исправьте меня, если я ошибаюсь, встроенную версию Tomcat не содержит приложения "менеджер" - и я просто не хочу каждый раз перезапускать весь сервер.

Итак, вопрос в том, как лучше всего включить менеджер веб-приложений во встроенный tomcat?

2 ответа

Я получил Manager работая так, как предлагает @olamy в своем решении. Так как все еще было довольно много работы, чтобы запустить его, и мое решение несколько отличается от его, и поскольку информация об этом редко встречается в Интернете, я собираюсь показать, как я это сделал, в некоторых деталях.

Во-первых, это структура проекта моей WAR:

Изображение структуры WAR

Я скачал файл manager.war по предоставленной ссылке @olamy и поместил его внутрь WEB-INF под tomcat/manager, Я оставил там файл WAR для удобства, но вы можете просто удалить его после извлечения его содержимого, как показано на снимке экрана выше. Вы можете свободно разместить папку в любом месте, просто обновите для нее базовый атрибут документа. server.xml,

Внутри pom.xml Я настроил tomcat7-maven-plugin как это:

<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
    <port>9090</port>
    <path>/webapp</path>
    <serverXml>./src/main/tomcat/conf/server.xml</serverXml>
    <contextFile>./src/main/tomcat/conf/context.xml</contextFile>
    <tomcatUsers>./src/main/tomcat/conf/tomcat-users.xml</tomcatUsers>
    <tomcatLoggingFile>./src/main/tomcat/conf/logging.properties</tomcatLoggingFile>
    <additionalConfigFilesDir>./src/main/tomcat/conf</additionalConfigFilesDir>
</configuration>

Обратите внимание, что хотя additionalConfigFilesDir сообщает плагину, где искать файл конфигурации, и проверяет, что файлы копируются в нужную папку перед запуском сервера. Я не смог заставить его работать правильно, не упомянув отдельные файлы конфигурации в соответствующих тегах. logging.properties а также context.xml можно опустить, но server.xml а также tomcat-users.xml должны быть упомянуты в соответствующих тегах для Manager работать.

Итак, вот содержимое этих двух файлов:

server.xml

<?xml version="1.0" encoding="UTF-8"?>
<Server port="9090" shutdown="SHUTDOWN">
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

    <GlobalNamingResources>
        <!-- Used by Manager -->
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  description="User database that can be updated and saved"
                  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                  pathname="conf/tomcat-users.xml" readonly="true"/>
    </GlobalNamingResources>

    <Service name="Catalina">
        <Connector port="9090" keepAliveTimeout="1800000" maxKeepAliveRequests="30000" maxThreads="300"/>
        <Engine name="Catalina" defaultHost="localhost">
            <Valve className="org.apache.catalina.valves.AccessLogValve" resolveHosts="false" buffered="false"
                   pattern="%t-ip:%a-protocol::%H-status:%s-localPort:%p-path:%U-time:%D ms"/>
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
            <Host name="localhost" appBase="webapps" autoDeploy="true" unpackWARs="true" deployXML="false">
                <Context path="/manager" docBase="../../<your WAR root folder name>/WEB-INF/tomcat/manager" privileged="true"/>
            </Host>
        </Engine>
    </Service>
</Server>

кот-users.xml

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users>
    <role rolename="manager"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <user username="admin" password="password" roles="manager, manager-gui, manager-script"/>
</tomcat-users>

После запуска Tomcat 7 с mvn tomcat7:run-war Я могу войти в Manager через URL http://localhost:9090/manager и учетные данные admin / password,

Вам нужно включить manager.war, который вы найдете здесь: http://svn.apache.org/repos/asf/tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/test/manager.war

На самом деле он не распространяется в центральном репо (так что не стесняйтесь иметь его в вашем менеджере репозитория Maven)

Затем проверьте содержимое этого server.xml, чтобы узнать, как его включить: http://svn.apache.org/repos/asf/tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/test/resources/deploy-war-project/src/main/tomcatconf/server.xml

Хитрость заключается в использовании привилегированного = "истина"

НТН

Другие вопросы по тегам