我可以为Spring Boot的嵌入式tomcat启用tomcat管理器应用程序吗?

gyo*_*der 3 tomcat spring-boot

我正在做一个研究项目,以确定我们可以在多大程度上使用Spring启动配置嵌入式Tomcat.我被要求调查的一个项目是关于我们是否仍然可以使用应用程序管理器.我没有具体的用例说明我们为什么要使用嵌入式tomcat的应用程序管理器,所以也许这使得这个问题无法回答:

Spring Boot使用的嵌入式tomcat 7是否包含tomcat管理器应用程序,如果没有,添加/启用它需要什么?

And*_*son 8

Spring Boot使用的嵌入式tomcat 7是否包含tomcat管理器应用程序

不,它没有,我不确定尝试添加它是否有意义.

管理器应用程序的主要功能是允许您在不停止容器的情况下启动和停止单个应用程序,以及部署和取消部署单个应用程序.当您使用嵌入式Tomcat的Spring Boot时,您应该将您的应用程序和容器视为一个单独的实体,因此启动或停止您的应用程序以及启动和停止容器是同一件事.

管理器应用程序的第二个功能是提供对OS和JVM属性的访问,这是Spring Boot的执行器已经为您完成的.

添加/启用它需要什么?

如果您选择不注意上述内容,则可以轻松添加管理器应用程序(尽管我不能保证这一切都按预期工作 - 我将其作为(蛮干)读者的练习):

@Bean
public EmbeddedServletContainerFactory servletContainer() {
    return new TomcatEmbeddedServletContainerFactory() {
        @Override
        protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(
                Tomcat tomcat) {
            tomcat.addUser("admin", "secret");
            tomcat.addRole("admin", "manager-gui");

            try {
                tomcat.addWebapp("/manager", "/path/to/manager/app");
            }
            catch (ServletException ex) {
                throw new IllegalStateException("Failed to add manager app", ex);
            }
            return super.getTomcatEmbeddedServletContainer(tomcat);
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

当管理器应用程序使用JSP时,您还需要依赖Jasper.假设你正在使用Maven:

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)