gpt4 book ai didi

tomcat - 如何拥有带有管理器网络应用程序的嵌入式 tomcat

转载 作者:行者123 更新时间:2023-11-28 21:50:33 25 4
gpt4 key购买 nike

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

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

最佳答案

我按照@olamy 在他的解决方案中建议的那样让 Manager 工作。由于让它运行起来还有很多工作要做,而且我的解决方案与他的解决方案有些不同,而且由于互联网上关于这方面的信息很少见,所以我将详细展示我是如何做到的。

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

Image of WAR structure

我下载了 manager.war来自@olamy 提供的链接的文件,并将其放在 tomcat/manager 下的 WEB-INF 中。为了方便起见,我将 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.propertiescontext.xml可以省略,但是server.xmltomcat-users.xml有在它们相应的标签中被提及,以便 Manager 工作。

所以,这是这两个文件的内容:

服务器.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>

tomcat-用户.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>

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

关于tomcat - 如何拥有带有管理器网络应用程序的嵌入式 tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21854550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com