美文网首页
Tomcat与springboot配置

Tomcat与springboot配置

作者: 辣条棒棒冰 | 来源:发表于2019-06-12 21:59 被阅读0次

    将springboot打成war包

    1. 移除内置tomcat
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
    1. 添加一个tomcat
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
    
    1. 修改打包方法
    <packaging>war</packaging>
    
    1. 修改启动类(配置类)
      继承一个类,重写它的一个方法,这个可以写到配置类里。
    public class DiscoveryApp  extends SpringBootServletInitializer {
        public static void main(String[] args) {
            SpringApplication.run(DiscoveryApp.class, args);
        }
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(DiscoveryApp.class);
        }
    }
    
    1. 添加war包插件
      在纯springboot项目里,上述四步就可以了。但在springcloud里会出现缺失web.xml文件的错误。需要添加如下配置:
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.5</version>
                    <configuration>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
                </plugin>
    

    在tomcat里运行多个springboot

    按照上面的方法在tomcat里只能运行一个springboot项目,运行多个项目时会出现:
    UnableToRegisterMBeanException: Unable to register MBean之类的异常信息,对此可以在application.yml(或同等配置文件里)写上

    spring:
      jmx:
        enabled: false
    

    据说只需在第二个、第三个springboot项目上配置,但建议全配。

    单tomcat多个端口

    修改server.xml文件:
    增加端口就是server.xml文件里增加<Service></Service>标签。如下:

         <Service name="gateway">
              <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
              <Engine name="gateway" defaultHost="localhost">
                   <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
                   <Host name="localhost" appBase="gateway" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
                        <Context path="" docBase="/gateway" reloadable="true"/>
                   </Host>
              </Engine>
         </Service>
    

    <Service name="gateway">将会在tomcat的安装目录下新建一个指定名称的文件夹,把war包放在里面。

    标签<Connector/>定义端口。

    <Context docBase="/gateway"/>这里指定war包解压后的路径名,使用相对路径时,是相对于标签里<Service name="gateway">指定的路径,配置后访问该端口就可以直接访问项目的内容,而不需要加上项目路径了。

    相关文章

      网友评论

          本文标题:Tomcat与springboot配置

          本文链接:https://www.haomeiwen.com/subject/xrzrfctx.html