博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用WAR的方式部署SpringBoot项目
阅读量:4605 次
发布时间:2019-06-09

本文共 6531 字,大约阅读时间需要 21 分钟。

  接SpringBoot 快速入门(Eclipse)

步骤一:部署方式

  Springboot 和 web 应用程序不一样,其本质上是一个 Java 应用程序,那么又如何部署呢?

  通常来说,Springboot 部署会采用两种方式:全部打包成一个jar,或者打包成一个war。
  下面是war的方式。

步骤二:可运行项目

   该项目是springboot入门的小demo

步骤三:修改 Application类

   application修改如下代码

   新加@ServletComponentScan注解,并且继承SpringBootServletInitializer 。(规定这么改)

package cn.xdf.springboot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.ServletComponentScan;import org.springframework.boot.web.support.SpringBootServletInitializer;@SpringBootApplication@ServletComponentScanpublic class Application extends SpringBootServletInitializer{    @Override    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {        return application.sources(Application.class);    }    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

步骤四:修改 pom.xml文件

  pom.xml修改为如下代码,主要两个改动

  新加打包成war的声明: <packaging>war</packaging>

4.0.0
cn.xdf
springbootTest
0.0.1-SNAPSHOT
springboot
springboot
war
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
org.springframework.boot
spring-boot-starter-web
junit
junit
3.8.1
test
1.8
org.springframework.boot
spring-boot-maven-plugin
org.apache.maven.plugins
maven-jar-plugin
2.5

 

步骤五:创建war包

   在 E:\PROJECT3\springbootTest 目录下,shift+右键,“在此处打开命令窗口”

   输入命令: mvn clean package,生产war文件。(该命令表示 删除target目录及内容后重新打包)

   这样就在 target 目录下 生成了一个 springbootTest-0.0.1-SNAPSHOT.war 文件

步骤六:重命名war包 , 然后部署

  如果用 springboot-0.0.1-SNAPSHOT.war 这个文件名部署,那么访问的时候就要在路径上加上springbootTest-0.0.1-SNAPSHOT。 所以把这个文件重命名为 ROOT.war

  然后把它放进tomcat 的webapps目录下。
  注:ROOT.war 并不是指访问的时候要使用 /ROOT/hello ,而是直接使用/hello 进行访问,ROOT表示根路径

 步骤七:启动并测试

  运行tomcat下的 bin目录里的startup.bat(Windows下的tomcat), 然后就可以启动了. 启动后访问如下地址测试:

  http://127.0.0.1:8080/hello

  

注意点:tomcat启动失败

......严重: ContainerBase.addChild: start:org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095)        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1930)        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)        at java.util.concurrent.FutureTask.run(FutureTask.java:266)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)        at java.lang.Thread.run(Thread.java:745)Caused by: java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;        at org.apache.tomcat.websocket.WsWebSocketContainer.
(WsWebSocketContainer.java:79) at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131) at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5506) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 10 more七月 24, 2018 3:00:16 下午 org.apache.catalina.startup.HostConfig deployWAR严重: Error deploying web application archive D:\tomcat7-8080-eclipse\webapps\ROOT.warjava.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:905) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1930) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)七月 24, 2018 3:00:16 下午 org.apache.catalina.startup.HostConfig deployWAR信息: Deployment of web application archive D:\tomcat7-8080-eclipse\webapps\ROOT.war has finished in 2,494 ms七月 24, 2018 3:00:16 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["http-bio-8080"]七月 24, 2018 3:00:16 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["ajp-bio-8089"]七月 24, 2018 3:00:16 下午 org.apache.catalina.startup.Catalina start信息: Server startup in 2571 ms

  该错是由于application启动类中嵌入的tomcat与部署war的tomcat冲突引起的,需要在pom.xml添加配置,来避免冲突!

  在pom.xml添加依赖:

org.springframework.boot
spring-boot-starter-tomcat
provided

  然后,重复步骤四、五、六。

 

转载于:https://www.cnblogs.com/zs-notes/p/9359676.html

你可能感兴趣的文章
jQuery中事件绑定与解绑
查看>>
js原生Ajax的封装与使用
查看>>
周总结6
查看>>
PostgreSQL 务实应用(二/5)插入冲突
查看>>
一种公众号回复关键词机制
查看>>
java多线程入门学习(一)
查看>>
基于 Web 的 Go 语言 IDE - Wide 1.1.0 公布!
查看>>
nyist oj 138 找球号(二)(hash 表+位运算)
查看>>
Movidius软件手册阅读 2017-09-04
查看>>
ytu 1910:字符统计(水题)
查看>>
201671030110 姜佳宇 实验三作业互评与改进
查看>>
mysql-5.6.15 开启二进制文件
查看>>
python的沙盒环境--virtualenv
查看>>
软件自动化测试——入门、进阶与实战
查看>>
BZOJ1878 [SDOI2009]HH的项链 树状数组 或 莫队
查看>>
BZOJ3675 [Apio2014]序列分割 动态规划 斜率优化
查看>>
Django extend(继承)模板标签
查看>>
2016.10.24 继续学习
查看>>
产品功能对标 - 服务授权管理
查看>>
各地IT薪资待遇讨论
查看>>