如何使用经理web-app创建嵌入式tomcat

sha*_*unc 3 tomcat tomcat7 maven-tomcat-plugin

这个想法是有一个自包含的项目(好吧,至少对于开发)而不需要配置外部tomcat - 但是使用tomcat7-maven-plugin的问题,如果我错了就纠正我,嵌入式版本tomcat不包含"manager"应用程序 - 我只是不想每次都重新运行整个服务器.

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

Joh*_*nes 6

Manager正如@olamy在他的解决方案中建议的那样,我得到了工作.由于它仍然需要一些工作才能让它运行起来,而且我的解决方案与他的解决方案有些不同,因为在互联网上很少有关于此的信息,我将展示我是如何做到的.

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

WAR结构的图像

我下载了manager.war从提供的链接@olamy文件,并把它放在里面WEB-INFtomcat/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>
Run Code Online (Sandbox Code Playgroud)

请注意,尽管additionalConfigFilesDir告诉插件在哪里查找配置文件并确保在服务器启动之前将文件复制到正确的文件夹,但是如果没有明确提及其中的单独配置文件,我无法正常工作.相应的标签.logging.properties并且context.xml可以省略,但server.xmltomcat-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>
Run Code Online (Sandbox Code Playgroud)

的tomcat-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>
Run Code Online (Sandbox Code Playgroud)

在启动Tomcat 7后,mvn tomcat7:run-war我可以Manager通过URL http:// localhost:9090/manager和凭证admin/ 登录password.