首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用管理器web-app实现嵌入式tomcat?

如何使用管理器web-app实现嵌入式tomcat?
EN

Stack Overflow用户
提问于 2014-02-18 12:57:01
回答 2查看 3.1K关注 0票数 3

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

那么问题是,将manager webapp集成到嵌入式tomcat的最佳方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-22 14:40:19

正如@olamy在他的解决方案中所建议的那样,我让Manager工作起来了。由于它仍然是相当多的工作,使它运行,我的解决方案与他的有点不同,由于这方面的信息在互联网上是罕见的,我将展示我如何在一些细节。

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

我从@olamy提供的链接下载了manager.war文件,并将其放在WEB-INFtomcat/manager下。为了方便起见,我将WAR文件放在那里,但是您可以在提取其内容后删除它,如上面的屏幕快照所示。实际上,您可以自由地将文件夹放置到任何您想要的位置,只需确保在server.xml中更新它的文档基属性即可。

pom.xml中,我按照以下方式配置了tomcat7-maven-plugin

代码语言:javascript
复制
<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.propertiescontext.xml,但是必须在相应的标记中提到server.xmltomcat-users.xml才能使Manager工作。

下面是这两个文件的内容:

server.xml

代码语言:javascript
复制
<?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>

tomcat-users.xml

代码语言:javascript
复制
<?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>

使用mvn tomcat7:run-war启动Tomcat 7之后,我可以通过URL http://localhost:9090/manager和凭据admin / password登录到Manager

票数 6
EN

Stack Overflow用户

发布于 2014-02-19 03:31:33

您需要包括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

诀窍是使用privileged=“真”

HTH

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21854550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档