springboot 使用第三方tomcat 运行

将这个 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

时间: 2024-12-03 13:07:23

springboot 使用第三方tomcat 运行的相关文章

一个Tomcat运行多个实例

本文介绍在同一个tomcat下运行mydomain.com和mysite.com这两个实例的步骤. 有时候,我们希望周期性的更新Tomcat:有时候,我们又想统一管理安装在一台机器上的tomcat(比如让tomcat版本统一,让多个实例的tomcat的依赖统一.配置统一等).在这些场景下,我们都不希望把Web应用程序的文件放入Tomcat发行版的目录结构中,而是让一个tomcat运行多个实例,并把Web应用放在tomcat的安装目录之外. 一般在使用Tomcat时,服务器会从conf及webap

Docker 搭建 Tomcat 运行环境的方法_docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 1 Docker与虚拟机   2 搭建过程 2.1 准备宿主系统 准备一个 CentOS 7操作系统,具体要求如下: 必须是 64 位操作系统 建议内核在 3.8 以上 通过以下命令查看您的 CentOS 内核: # uname -r 2.2 安装Docker # yum install d

eclipse tomcat运行报错

问题描述 eclipse tomcat运行报错 eclipse的tomcat是不是只需启动一次啊!我启动它却报端口占用 解决方案 那就是有其他的端口被占用了,双击server,改一下端口号就行了 解决方案二: 因为你原来的程序占着端口.(如果第一次启动没有成功,说明端口被占)当你再次想运行时,记得关闭程序,再运行程序,这样就不会报错了 解决方案三: 改端口,或者直接重启eclipse 解决方案四: 确定没有其他的占用这个端口??那可以在进程中将javaw.exe干掉 解决方案五: 估计是启动了2

y clipse-MyEclipse2014部署tomcat项目无法手动启动tomcat运行项目

问题描述 MyEclipse2014部署tomcat项目无法手动启动tomcat运行项目 我在本地写了一个项目,然后用MyEclipse2014部署在tomcat上面正常运行,但是我在MyEclipse里面关闭tomcat之后把tomcat安装目录下面的webapps对应的项目整体上传到了远程服务器上面,发现无法找到项目.而且在本地计算机服务中手动启动tomcat发现本地项目也是无法找到,但是webapps文件夹里面的确存在!问一下这个是什么原因,如何才能部署成功? 解决方案 是不是你的tomc

没有任何提示信息-用eclipse新建WEB项目,tomcat运行空白页面,怎么解决

问题描述 用eclipse新建WEB项目,tomcat运行空白页面,怎么解决 打开其他工作空间的工程没有问题,就是现在这个新建的项目,放哪里运行都是空白,该怎么办(⊙o⊙)!关键是页面不报错,真让人着急,求大神解答 解决方案 Eclipse启动Tomcat Server没有加载(运行)Web项目的解决办法Maven + Eclipse + Tomcat - 运行和调试web项目 解决方案二: 你先看你的Tomcat环境有没有配好的. 解决方案三: 找到web.xml里面那个welcome页,然后

Eclipse通过Tomcat运行项目不成功。

问题描述 大家好,我的项目在Eclipse中通过Tomcat运行项目不成功,显示"HTTP Status 404",如下图所示:发现的异常:打开E:apache-tomcat-7.0.26webapps,如下图:但是我如果直接启动E:apache-tomcat-7.0.26binstartup.bat发现的异常:打开E:apache-tomcat-7.0.26webapps,如下图:输入与Eclipse运行后相同的网址:http://localhost:8090/baobaotao/则

内存泄露-TOMCAT运行一段时间后抛找不到主机异常,紧急。。。。。。。。。

问题描述 TOMCAT运行一段时间后抛找不到主机异常,紧急......... TOMCAT运行一段时间后报:ava.net.UnknownHostException: 主机名,主机名:unknown error at java.net.InetAddress.getLocalHost(InetAddress.java:1484) at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:490) at org.ap

用jdbc实现jsp与sql 2008连接时的tomcat运行时出现

问题描述 用jdbc实现jsp与sql 2008连接时的tomcat运行时出现 第一次用jdbc><.用jdbc实现jsp与sql 2008连接时的tomcat运行时出现Could not launch in profiling mode because no profilers are configured. 用的eclipse 解决方案 看看 http://blog.csdn.net/testcs_dn/article/details/36646243 能不能解决问题 解决方案二: 去网上

重新装的JDK,tomcat运行的时候显示这个怎么回事?求解

问题描述 重新装的JDK,tomcat运行的时候显示这个怎么回事?求解 2015-11-24 13:29:34 org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.