想法是要有一个自包含的项目(至少要用于开发),而无需配置外部tomcat-但是使用tomcat7-maven-plugin的问题是,如果我错了,请纠正我的嵌入式版本的tomcat不包含“管理器”应用程序-我只是不想每次都重新运行整个服务器。
因此,问题是,将管理器Webapp集成到嵌入式tomcat的最佳方法是什么?
我Manager
按照@olamy在他的解决方案中的建议进行工作。由于运行它仍然是一项艰巨的工作,并且我的解决方案与他的解决方案有所不同,并且由于有关此信息在互联网上很少见,因此我将详细介绍如何做到这一点。
首先,这是我的WAR的项目结构:
我下载了manager.war从提供的链接@olamy文件,并把它放在里面WEB-INF
下tomcat/manager
。为了方便起见,我将WAR文件留在了那里,但是您可以在提取其内容之后将其删除,如上面的屏幕快照所示。实际上,您可以将文件夹自由放置在所需的任何位置,只需确保在中更新了该文件夹的document base属性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
工作。
因此,这是这两个文件的内容:
<?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>
使用Tomcat 7启动后,mvn tomcat7:run-war
我可以Manager
通过URL http:// localhost:9090 / manager和凭据admin
/登录到password
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句