sprint boot

Spring Boot建议在构建期间使用嵌入式容器(tomcat或码头)创建一个可执行jar,并在运行时将此可执行jar作为独立进程使用。 但是,通常将应用程序部署到一个外部容器是很常见的,Spring Boot提供了打包应用程序的方式,专门针对这种需求。

我在这里的重点不是重复关于创建war构件的已经详细的Spring Boot 指导 ,而是在测试创建的文件以查看它是否可以在独立容器上可靠地工作。 我最近在通过Spring Boot项目创建战争并将其部署在Jetty上时遇到了一个问题,这实际上是从该经验中学到的东西。

测试战争能否可靠进行的最佳方法是简单地使用jetty-maven和/或tomcat maven插件 ,并在pom.xml文件中添加以下条目:

<plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version>
</plugin>
<plugin><groupId>org.eclipse.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>9.2.3.v20140905</version>
</plugin>

安装好插件后,使用tomcat插件开始战争:

mvn tomcat7:run

并带有码头插件:

mvn jetty:run

如果创建战争的方式有任何问题,则应在启动时使用这些容器来解决。 例如,如果我要保留嵌入式tomcat依赖项:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>

然后在启动maven tomcat插件时,将出现以下错误:

java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer

指示servlet jar与war文件打包在一起,通过指定maven依赖项中提供的范围来解决:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope>
</dependency>

为什么同时使用jetty和tomcat插件,原因是我看到了行为上的差异,特别是在websocket支持下,jetty作为运行时,而不是tomcat。 因此,请考虑通过以下方式拉出的websocket依赖项:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

使用jetty运行时启动时,这给了我一个错误,并且解决方法是再次标记提供的基础tomcat依赖项,并用以下内容替换上面的内容:

<dependency><groupId>org.springframework</groupId><artifactId>spring-websocket</artifactId>
</dependency>
<dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-websocket</artifactId><scope>provided</scope>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-messaging</artifactId>
</dependency>

综上所述,验证为Spring-boot应用程序生成的war文件是否将干净地部署到容器(至少是tomcat和jetty)的一种快速方法是添加tomcat和jetty maven插件并使用这些插件来启动应用程序。 。 这是一个演示此示例的示例项目– https://github.com/bijukunjummen/spring-websocket-chat-sample.git

翻译自: https://www.javacodegeeks.com/2014/11/spring-boot-war-packaging.html

sprint boot

sprint boot_Sprint Boot子战争包装相关推荐

  1. Spring靴子战争包装

    Spring Boot建议在构建期间使用嵌入式容器(tomcat或码头)创建一个可执行jar,并在运行时将此可执行jar作为独立进程使用. 但是,通常将应用程序部署到外部容器上是很常见的,Spring ...

  2. Spring Boot参考指南

    Spring Boot参考指南 作者 菲利普·韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪·威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安·德勒兹,迈克尔·西蒙斯 ...

  3. 针对新手的Java EE7和Maven项目-第2部分-为我们的应用程序定义一场简单的战争

    从第一部分恢复 第1部分 我们刚刚定义了父 pom. 一种特殊的pom类型,它最终定义了我们的应用程序将要使用的库. 它还配置了所有用于包装我们应用程序每个模块的Maven工具. 您可以在此处 签出 ...

  4. 针对新手的Java EE7和Maven项目–第2部分–为我们的应用程序定义一场简单的战争...

    从第一部分恢复 第1部分 我们刚刚定义了父 pom. 一种特殊的pom类型,它最终定义了我们的应用程序将要使用的库. 它还配置了所有用于打包我们应用程序每个模块的Maven工具. 您可以在此处 签出 ...

  5. spring boot面试_Spring Boot面试问题

    spring boot面试 Today we will look into some spring boot interview questions and answers. So far, we h ...

  6. spring boot应用启动原理分析

    spring boot quick start 在spring boot 里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个W ...

  7. 在5分钟内将Spring Boot作为Windows服务启动

    最近,我不得不将Spring Boot应用程序部署为Windows服务,并且对使用winsw如此容易感到惊讶. 我之前曾写过关于使用procrun – Java程序作为Windows服务的文章 ,但是 ...

  8. ideal新建springboot工程_MyBatis初级实战之一:Spring Boot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. spring boot 2.1.7启动过程源码解析

    约定 本文基于spring boot 2.1.7.RELEASE进行剖析,使用的spring cloud为Greenwich.SR6版本,github仓库为:spring boot演示.该仓库有多个子 ...

最新文章

  1. 13.组合查询--SQL
  2. B2B行业网站编辑轻松创造内容,提高搜索权重
  3. 补码还原为原码c语言,C语言知识汇总 | 12-整数(有、无符号数)在内存中的存储——原码、反码与补码...
  4. 头文件的用法及注意事项
  5. CDS view里inner join, left outer join和association的区别
  6. 以C#编写的Socket服务器的Android手机聊天室Demo
  7. P5135-painting【组合数学】
  8. 使用FactoryBean定制实例化逻辑
  9. 有以下程序C语言a b cdef,[工学]全国计算机二级笔试基础部分和C语言程序设计.doc...
  10. DIY RazorEngine 的程序集生成方式
  11. Poj(2679),SPFA,邻接表(主流写法)
  12. jenkins相关下载链接
  13. 点阵字库制作和使用(一)
  14. 计算机网络配置vlan实验报告,北京理工大学-计算机网络实践-VLAN配置及VLAN间通信实验报告...
  15. mockito参数匹配_Mockito参数匹配器– any(),eq()
  16. 浪潮服务器显示一个红色闪电图标,华为手机开不了机,只显示一个红色圆圈里面一个红色闪电符号...
  17. 霍尼236主机说明书_霍尼韦尔236系统中文说明.DOC
  18. Ruby中yield和block的用法
  19. BUUCTF中的“新年快乐”
  20. 调用微信红包接口返回(转)

热门文章

  1. 2018/7/9-纪中某B组题【jzoj1503,jzoj1158,jzoj1161】
  2. jzoj1158-荒岛野人【扩欧,gcd,同余方程】
  3. 【LCT】【树状数组】Matches Are Not a Child‘s Play(luogu CF1137F)
  4. 【贪心】失意(jzoj 2318)
  5. 初一模拟赛总结(3.30)
  6. 13、oracle数据库下的游标
  7. 详解proxy_pass、upstream与resolver
  8. 一篇文章了解RPC框架原理
  9. ItemCF,基于物品的协同过滤算法
  10. 坑爹的日志无法按天切割问题