zoukankan      html  css  js  c++  java
  • Intellij Idea创建SpringBoot项目使用内置Tomcat能成功访问,将项目war包部署至第三方Tomcat访问出现404问题及解决方案

    利用Intellij Idea搭建SpringBoot项目无疑是十分便捷的,但是博主最近遇到了问题,项目在内置的Tomcat中成功运行并正常访问,可将项目war包部署至第三方Tomcat虽成功运行项目但无法正常访问出现404问题。

    首先要想将项目部署至第三方Tomcat前必须要在原项目的maven配置文件pom.xml修改配置,包括声明打包方式,取消内置Tomcat的使用以及继承SpringBootServletInitializer类以及实现configure方法。

    声明打包方式
    pom.xml中:

    <packaging>war</packaging>

    取消内置Tomcat使用
    pom.xml中

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!--如果要使用内置Tomcat启动项目请把exclusions注释掉,否则无法正常启动-->
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    继承SpringBootServletInitializer类以及实现configure方法
    启动类中:

    @SpringBootApplication
    public class MyProjectApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder         configure(SpringApplicationBuilder builder) {
        return super.configure(builder);
    }
    
    public static void main(String[] args) {
        SpringApplication.run(MyProjectApplication.class, args);
    }
    }       

    启动提示

     然后pom.xml 中再引入

    <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
    </dependency>


    再运行,正常

    404错误解决方案
    打成war包后利用第三方Tomcat启动war包项目后发现项目启动成功并且可以正常访问Tomcat主页,可无论如何都无法访问自己项目的内容,错误提示404。

    解决方法很简单,在访问的URL中加入war包名就能解决这个问题:

    例如原URL:localhost:8080/test/main
    加入war包名URL:localhost:8080/MyApp/test/main

    这时候有些朋友就反应过来刚学J2EE的时候好像也踩过类似的坑。

    不加入war包名直接访问
    要想不加入包名进行直接访问也是可以的,需要在第三方Tomcat的根目录中找到conf里的server.xml文件,右键进行编辑。
    找到如下标签:

    <Host name="localhost" appBase="webapps"
    unpackWARs="true" autoDeploy="true">
    
    <!-- SingleSignOn valve, share authentication between web applications
    Documentation at: /docs/config/valve.html -->
    <...>
    </Host>

    插入如下代码:

    <Context path="" reloadable="false" docBase="MyProject(你的war包名)"/>

    总体如下:

     

    之后便可不加包名直接进行访问。


    ————————————————
    版权声明:本文为CSDN博主「一行代码3个bug」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_42168094/article/details/105919242

  • 相关阅读:
    9、Spring Boot 2.x 集成 Thymeleaf
    【专题】Spring Boot 2.x 面试题
    8、Spring Boot 2.x 服务器部署
    7、Spring Boot 2.x 集成 Redis
    6、Spring Boot 2.x 集成 MyBatis
    5、Spring Boot 2.x 启动原理解析
    4、Spring Boot 2.x 自动配置原理
    3、Spring Boot 2.x 核心技术
    2、Spring Boot 2.x 快速入门
    centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL
  • 原文地址:https://www.cnblogs.com/liuqiang18/p/14531937.html
Copyright © 2011-2022 走看看