sprint boot_Sprint Boot子战争包装
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子战争包装相关推荐
- Spring靴子战争包装
Spring Boot建议在构建期间使用嵌入式容器(tomcat或码头)创建一个可执行jar,并在运行时将此可执行jar作为独立进程使用. 但是,通常将应用程序部署到外部容器上是很常见的,Spring ...
- Spring Boot参考指南
Spring Boot参考指南 作者 菲利普·韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪·威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安·德勒兹,迈克尔·西蒙斯 ...
- 针对新手的Java EE7和Maven项目-第2部分-为我们的应用程序定义一场简单的战争
从第一部分恢复 第1部分 我们刚刚定义了父 pom. 一种特殊的pom类型,它最终定义了我们的应用程序将要使用的库. 它还配置了所有用于包装我们应用程序每个模块的Maven工具. 您可以在此处 签出 ...
- 针对新手的Java EE7和Maven项目–第2部分–为我们的应用程序定义一场简单的战争...
从第一部分恢复 第1部分 我们刚刚定义了父 pom. 一种特殊的pom类型,它最终定义了我们的应用程序将要使用的库. 它还配置了所有用于打包我们应用程序每个模块的Maven工具. 您可以在此处 签出 ...
- spring boot面试_Spring Boot面试问题
spring boot面试 Today we will look into some spring boot interview questions and answers. So far, we h ...
- spring boot应用启动原理分析
spring boot quick start 在spring boot 里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个W ...
- 在5分钟内将Spring Boot作为Windows服务启动
最近,我不得不将Spring Boot应用程序部署为Windows服务,并且对使用winsw如此容易感到惊讶. 我之前曾写过关于使用procrun – Java程序作为Windows服务的文章 ,但是 ...
- ideal新建springboot工程_MyBatis初级实战之一:Spring Boot集成
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- spring boot 2.1.7启动过程源码解析
约定 本文基于spring boot 2.1.7.RELEASE进行剖析,使用的spring cloud为Greenwich.SR6版本,github仓库为:spring boot演示.该仓库有多个子 ...
最新文章
- 13.组合查询--SQL
- B2B行业网站编辑轻松创造内容,提高搜索权重
- 补码还原为原码c语言,C语言知识汇总 | 12-整数(有、无符号数)在内存中的存储——原码、反码与补码...
- 头文件的用法及注意事项
- CDS view里inner join, left outer join和association的区别
- 以C#编写的Socket服务器的Android手机聊天室Demo
- P5135-painting【组合数学】
- 使用FactoryBean定制实例化逻辑
- 有以下程序C语言a b cdef,[工学]全国计算机二级笔试基础部分和C语言程序设计.doc...
- DIY RazorEngine 的程序集生成方式
- Poj(2679),SPFA,邻接表(主流写法)
- jenkins相关下载链接
- 点阵字库制作和使用(一)
- 计算机网络配置vlan实验报告,北京理工大学-计算机网络实践-VLAN配置及VLAN间通信实验报告...
- mockito参数匹配_Mockito参数匹配器– any(),eq()
- 浪潮服务器显示一个红色闪电图标,华为手机开不了机,只显示一个红色圆圈里面一个红色闪电符号...
- 霍尼236主机说明书_霍尼韦尔236系统中文说明.DOC
- Ruby中yield和block的用法
- BUUCTF中的“新年快乐”
- 调用微信红包接口返回(转)
热门文章
- 2018/7/9-纪中某B组题【jzoj1503,jzoj1158,jzoj1161】
- jzoj1158-荒岛野人【扩欧,gcd,同余方程】
- 【LCT】【树状数组】Matches Are Not a Child‘s Play(luogu CF1137F)
- 【贪心】失意(jzoj 2318)
- 初一模拟赛总结(3.30)
- 13、oracle数据库下的游标
- 详解proxy_pass、upstream与resolver
- 一篇文章了解RPC框架原理
- ItemCF,基于物品的协同过滤算法
- 坑爹的日志无法按天切割问题