springboot 使用第三方tomcat 运行

简介: 将这个 spring Boot 项目的打包方式设置为 war。 <packaging>war</packaging>去除內嵌tomcat SpringBoot 默认有内嵌的 tomcat 模块,因此,我们要把这一部分排除掉。(注意不放在第三方tomcat不要去掉),可以先自测没问题,再去除,当然不去除在第三方tomcat下也可以运行 <d

将这个 spring Boot 项目的打包方式设置为 war。

<packaging>war</packaging>

去除內嵌tomcat

SpringBoot 默认有内嵌的 tomcat 模块,因此,我们要把这一部分排除掉。(注意不放在第三方tomcat不要去掉),可以先自测没问题,再去除,当然不去除在第三方tomcat下也可以运行

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!-- 如果在使用自带tomcat请注释下面,如果使用第三方tomcat不要注释下面 -->
         <exclusions>  
                <exclusion>  
                    <groupId>org.springframework.boot</groupId>  
                    <artifactId>spring-boot-starter-tomcat</artifactId>  
                </exclusion>  
            </exclusions> 
    </dependency>


完整maven配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>springboot</groupId>
  <artifactId>springboot-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>springboot-test</name>
  <packaging>war</packaging>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.3.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!-- 如果在使用自带tomcat请注释下面,如果使用第三方tomcat不要注释下面 -->
         <exclusions>  
                <exclusion>  
                    <groupId>org.springframework.boot</groupId>  
                    <artifactId>spring-boot-starter-tomcat</artifactId>  
                </exclusion>  
            </exclusions> 
    </dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>3.0-alpha-1</version>
</dependency>

    
</dependencies>

  <build>
        <plugins>
        <!-- 如果要打成jar包并使用 java -jar **.jar运行,请不要注释spring-boot-maven-plugin -->
         <!--    <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin> -->
            <plugin>
				    <groupId>org.apache.maven.plugins</groupId>
				    <artifactId>maven-war-plugin</artifactId>
				    <configuration>
				        <warName>springboot</warName>
				    </configuration>
				</plugin>
        </plugins>
    </build>
</project>


项目结构

springboot-test
├── pom.xml
├── src
│   ├── main
│   │   ├── index.jsp
│   │   ├── java
│   │   │   └── com
│   │   │       └── lhy
│   │   │           ├── controller
│   │   │           │   └── SampleController.java
│   │   │           └── init
│   │   │               └── Application.java
│   │   └── resources
│   │       └── application.properties
│   └── test
│       ├── java
│       └── resources
├── target
│   ├── classes
│   ├── m2e-jee
│   └── test-classes
└── work
    └── Tomcat
        └── localhost
            └── aaa


注意,程序不要放在默认的default package 目录下,不然有可能会报错

main程序,Application.java

启动tomcat会自动找

提供一个 SpringBootServletInitializer 子类,并覆盖它的 configure 方法。我们可以把应用的主类改为继承 SpringBootServletInitializer。或者另外写一个类。

package com.lhy.init;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@SpringBootApplication
@Configuration  
@ComponentScan(basePackages="com.lhy")   //默认扫描是当前包下的路径
@EnableAutoConfiguration  
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}


controller 类SampleController.java

package com.lhy.controller;


import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@Controller
public class SampleController {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello world";
    }


}


打包运行

注意:部署到 tomcat 以后,访问这个项目的时候,须要带上这个项目的 war 包名。

另外,我们还可以使用 war 插件来定义打包以后的 war 包名称,以免 maven 为我们默认地起了一个带版本号的 war 包名称。例如:

  <plugin>
				    <groupId>org.apache.maven.plugins</groupId>
				    <artifactId>maven-war-plugin</artifactId>
				    <configuration>
				        <warName>springboot</warName>
				    </configuration>
				</plugin>

把打包好的springboot.war 放在tomcat中,启动。

输入 localhost:8080/springboot




目录
相关文章
|
14天前
|
前端开发 Java 应用服务中间件
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
该文是一系列关于从零开始手写实现 Apache Tomcat 的教程概述。作者希望通过亲自动手实践理解 Tomcat 的核心机制。文章讨论了 Spring Boot 如何实现直接通过 `main` 方法启动,Spring 与 Tomcat 容器的集成方式,以及两者生命周期的同步原理。文中还提出了实现 Tomcat 的启发,强调在设计启动流程时确保资源的正确加载和初始化。最后提到了一个名为 mini-cat(嗅虎)的简易 Tomcat 实现项目,开源于 [GitHub](https://github.com/houbb/minicat)。
|
1月前
|
前端开发 Java 应用服务中间件
Springboot对MVC、tomcat扩展配置
Springboot对MVC、tomcat扩展配置
|
14天前
|
前端开发 Java 应用服务中间件
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
本文探讨了Spring Boot如何实现像普通Java程序一样通过main方法启动,关键在于Spring Boot的自动配置、内嵌Servlet容器(如Tomcat)以及`SpringApplication`类。Spring与Tomcat集成有两种方式:独立模式和嵌入式模式,两者通过Servlet规范、Spring MVC协同工作。Spring和Tomcat的生命周期同步涉及启动、运行和关闭阶段,通过事件和监听器实现。文章鼓励读者从实现Tomcat中学习资源管理和生命周期管理。此外,推荐了Netty权威指南系列文章,并提到了一个名为mini-cat的简易Tomcat实现项目。
|
11天前
|
存储 Java 应用服务中间件
Springboot项目打war包部署到外置tomcat容器【详解版】
该文介绍了将Spring Boot应用改为war包并在外部Tomcat中部署的步骤:1) 修改pom.xml打包方式为war;2) 排除内置Tomcat依赖;3) 创建`ServletInitializer`类继承`SpringBootServletInitializer`;4) build部分需指定`finalName`;5) 使用`mvn clean package`打包,将war包放入外部Tomcat的webapps目录,通过startup脚本启动Tomcat并访问应用。注意,应用访问路径和静态资源引用需包含war包名。
|
23天前
|
前端开发 Java 应用服务中间件
springboot 升级(1.5.7.RELEASE升级到2.7.10) Tomcat启动报错
springboot 升级(1.5.7.RELEASE升级到2.7.10) Tomcat启动报错
|
26天前
|
运维 Java 应用服务中间件
Tomcat详解(六)——Tomcat运行模式调优
Tomcat详解(六)——Tomcat运行模式调优
11 3
|
Java 应用服务中间件 Apache
springboot+maven+tomcat问题
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26654727/article/details/78456345 问题背景 版本介绍 jdk1.7 、springboot:1.3.1.RELEASE、tomcat8 、maven3 解决过程 1. 搭建Springboot+jsp项目。
2305 0
|
16天前
|
XML Java 应用服务中间件
Tomcat_servlet部署、编译、配置、打包
Tomcat_servlet部署、编译、配置、打包
21 0
|
29天前
|
运维 Java 应用服务中间件
Tomcat详解(二)——tomcat安装与配置
Tomcat详解(二)——tomcat安装与配置
21 1
|
2天前
|
IDE Java 应用服务中间件
JDK1.6.0+Tomcat6.0的安装配置(配置JAVA环境)
JDK1.6.0+Tomcat6.0的安装配置(配置JAVA环境)
12 1