美文网首页
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