Как получить встроенный кот с менеджером веб-приложения
Идея состоит в том, чтобы иметь самодостаточный проект (ну, по крайней мере, для разработки) без какой-либо необходимости конфигурировать внешний tomcat - но проблема с использованием tomcat7-maven-plugin - это, исправьте меня, если я ошибаюсь, встроенную версию Tomcat не содержит приложения "менеджер" - и я просто не хочу каждый раз перезапускать весь сервер.
Итак, вопрос в том, как лучше всего включить менеджер веб-приложений во встроенный tomcat?
2 ответа
Я получил Manager
работая так, как предлагает @olamy в своем решении. Так как все еще было довольно много работы, чтобы запустить его, и мое решение несколько отличается от его, и поскольку информация об этом редко встречается в Интернете, я собираюсь показать, как я это сделал, в некоторых деталях.
Во-первых, это структура проекта моей 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
Хитрость заключается в использовании привилегированного = "истина"
НТН