如何使用manager web app创建嵌入式tomcat

如何使用manager web app创建嵌入式tomcat,tomcat,tomcat7,maven-tomcat-plugin,Tomcat,Tomcat7,Maven Tomcat Plugin,其想法是拥有一个自包含的项目(至少对于开发而言),而不需要配置外部tomcat——但使用tomcat7 maven插件的问题在于,如果我错了,请纠正我,tomcat的嵌入式版本不包含“管理器”应用程序——我只是不想每次都重新运行整个服务器 所以问题是,将manager webapp合并到嵌入式tomcat的最佳方式是什么?您需要包括manager.war,您可以在这里找到: 它实际上并没有在中央回购中分发(所以可以将它放在您的Maven存储库管理器中) 然后检查此server.xml的内容以了解

其想法是拥有一个自包含的项目(至少对于开发而言),而不需要配置外部tomcat——但使用tomcat7 maven插件的问题在于,如果我错了,请纠正我,tomcat的嵌入式版本不包含“管理器”应用程序——我只是不想每次都重新运行整个服务器


所以问题是,将manager webapp合并到嵌入式tomcat的最佳方式是什么?

您需要包括manager.war,您可以在这里找到:

它实际上并没有在中央回购中分发(所以可以将它放在您的Maven存储库管理器中)

然后检查此server.xml的内容以了解如何启用它:

诀窍是使用privileged=“true”


HTH

我让
经理按照@olamy在解决方案中的建议工作。由于要让它运行还需要相当多的工作,而且我的解决方案与他的有所不同,而且关于这方面的信息在互联网上很少见,因此我将详细介绍我是如何做到的

首先,这是我的战争的项目结构:

我从@olamy提供的链接下载了该文件,并将其放在
WEB-INF
下的
tomcat/manager
中。为了方便起见,我将WAR文件放在那里,但是您可以在提取其内容后将其删除,如上面的屏幕截图所示。实际上,您可以将文件夹随意放置在任何位置,只需确保在
server.xml
中更新该文件夹的文档库属性即可

pom.xml
中,我将
tomcat7 maven插件配置如下:

<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>
tomcat-users.xml

使用
mvn tomcat7:run war启动tomcat7后,我可以通过URL和凭据
admin
/
密码登录
管理器

<?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>
<?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>