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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++实现简单的信息管理系统

本文为大家分享C实现简单的信息管理系统&#xff0c;小编之前在学习的时候也要做一些管理系统&#xff0c;在网上查了许多资料&#xff0c;现在我把资料分享给大家&#xff0c;希望能够帮助到大家。#include <stdio.h> #include <stdlib.h> #include "file.…

php 多图上传编辑器,ThinkPHP5整合LayUI编辑器图片上传

一、创建上传方法public function uploadimg(){$image $_FILES[file];$filebase file_get_contents($image[tmp_name]);$upimg $this->uploadImage($filebase);$upfile[code] 0;$upfile[msg] 上传成功;$upfile[data][src] $upimg;$upfile[data][title] $image[name];…

jaxb_JAXB众所周知的秘密

jaxb介绍 我重新发现了Java向大众提供的库。 当我第一次阅读该规范时&#xff0c;我很困惑&#xff0c;以为我需要所有这些特殊工具来实现。 我最近发现&#xff0c;只需要一些注释和一个POJO。 杰克斯 JAXB代表XML绑定的Java体系结构。 这种体系结构允许开发人员将来自类的数…

C# 面向对象三大特性:封装、继承、多态

面向对象有封装、继承、多态这三个特性&#xff0c;面向对象编程按照现实世界的特点来管理复杂的事物&#xff0c;把它们抽象为对象&#xff0c;具有自己的状态和行为&#xff0c;通过对消息的反应来完成任务。这种编程方法提供了非常强大的多样性&#xff0c;大大增加了代码的…

行车记录仪设置php,行车记录仪怎么调设置

行车记录仪设置方法如下&#xff1b;1、视频分辨率视频分辨率一直是厂家着力宣传的卖点&#xff0c;从最初的高清720P、全高清1080P到现在的超高清2K&#xff0c;车主朋友们也都耳熟能详。一般行车记录仪的分辨率提供以下几个选项&#xff1a;1080FHD、720P、WVGA、VGA。视频分…

gtest 测试部分_全部关于测试–第2部分

gtest 测试部分这是有关测试的系列文章的第二篇。 在第一部分中&#xff0c;我解释了在开发测试时需要具备的心态。 或者&#xff0c;换句话说&#xff0c;开发可测试的代码。 在这一部分中&#xff0c;我将介绍一些测试方法的技术。 我将描述的技术可以看作是如何将思维定势转…

C++面试常见问题整理汇总(面试者必看哦!)

1. 继承方式public   父类的访问级别不变#include <iostream> using namespace std; class base { public: void printa() { cout <<"base"<< endl; } protected: void printhello() { cout <<"helo"<< endl; } p…

java servlet applet,详解Java Servlet与Applet比较

Java Servlet与Applet相似之处&#xff1a;◆它们不是独立的应用程序&#xff0c;没有main()方法。◆它们不是由用户或程序员调用&#xff0c;而是由另外一个应用程序(容器)调用。◆它们都有一个生存周期&#xff0c;包含init()和destroy()方法。Java Servlet与Applet不同之处&…

gtest 测试部分_全部关于测试–第1部分

gtest 测试部分这是三个系列文章中的第一篇。 测试思路 技巧 工具和提示 心态 测试代码是需要学习的东西。 吸收如何做好需要花费时间。 这是一种应该始终练习和改进的技巧。 过去&#xff0c;开发人员没有进行测试&#xff0c;而是检查了他们的代码。 这是一个很好的技巧…

C++ vector使用的一些注意事项

更多精彩&#xff0c;请点击上方蓝字关注我们&#xff01;1. 初始化c 11以后新增了大括号{}的初始化方式&#xff0c;需要注意与()的区别,如&#xff1a;std::vector<int> vecTest1(5); //初始化5个元素&#xff0c;每个都是0std::vector<int> vecTest2{ 5…

java改文字乱码快捷键,java.util.Properties读取中文内容(UTF-8格式)的配置文件,发生中文乱码...

转自http://blog.csdn.net/zhangzikui/article/details/7708827碰到了用java.util.Properties读取中文内容(UTF-8格式)的配置文件&#xff0c;发生中文乱码的现象&#xff0c;Java代码Properties propnewProperties();prop.load(Client.class.getClassLoader().getResourceAsSt…

什么是jsf_为什么应该避免JSF

什么是jsf长期以来&#xff0c;对我而言&#xff0c;JSF只是另一个我不太在乎的Web框架。 这改变了。 在被迫使用了几个月之后&#xff0c;我认为几乎在所有情况下这都是主要的项目风险。 在这里&#xff0c;我介绍作出这一裁决的理由。 UI和处理逻辑的纠缠不清。 官方教程声称…

matlab 英语怎么读,MATLAB SPTooL

Image:114994698204558.jpgmatlabmatlab是矩阵实验室(matrix laboratory)之意。除具备卓越的数值计算能力外&#xff0c;它还提供了专业水平的符号计算&#xff0c;文字处理&#xff0c;可视化建模仿真和实时控制等功能。matlab的基本数据单位是矩阵&#xff0c;它的指令表达式…

最全的C++面试题来啦!(来自各大一线互联网)

更多精彩&#xff0c;请点击上方蓝字关注我们&#xff01;此面试题全部由成功就业学员提供&#xff0c;来自各大一线互联网企业&#xff0c;在此谢谢他们的贡献&#xff01;1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存&#xff0c;n…

drools。drools_使用Drools跟踪输出

drools。droolsDrools 6包含一个跟踪输出&#xff0c;可以帮助您了解系统中正在发生的事情&#xff0c;事物执行的频率以及多少数据。 这也有助于理解Drools 6现在是基于目标的算法&#xff0c;它使用链接机制链接评估规则。 有关此的更多详细信息&#xff1a; http://www.ja…

matlab 万年历,matlab时钟万年历 matlab时钟万年历(附word说明文档): 程序主要 联合开发网 - pudn.com...

matlab时钟万年历所属分类&#xff1a;图形图像处理开发工具&#xff1a;matlab文件大小&#xff1a;54KB下载次数&#xff1a;6上传日期&#xff1a;2018-08-24 21:54:23上 传 者&#xff1a;小小葡萄123说明&#xff1a; matlab时钟万年历(附word说明文档)&#xff1a;程序主…

基于C++实现五子棋AI算法思想

更多精彩&#xff0c;请点击上方蓝字关注我们&#xff01;今天我想要分享一下我做五子棋AI的思路。因为在做这个之前&#xff0c;我没有接触过任何像这种类似的东西。通过这一次&#xff0c;我也算是有所了解&#xff0c;我的思路也是来自很多网络上的博客&#xff0c;看了很多…

php通知多有人,PHP通知抑制;只有某些情况/方法

tl; dr – 在非常严格的环境中工作时,是否有一种有效的方法来管理PHP的错误报告级别,因为某些流程在不太严格的级别下会变得更容易&#xff1f;好的;首先,我不相信“错误抑制”是一个解决方案.我(有理由确定我)从未使用过 error suppress运算符,并且无意这样做.我利用set_error…

java代码初体验_第一次Java 8体验

java代码初体验像世界其他地方一样&#xff0c;我深深地爱上了Slack。 为什么&#xff1f; 原因很多&#xff0c;但主要的原因是它提供了一种围绕通讯而非工具真正构建SDLC流程的新方法。 您认为这些天哪个更常见&#xff0c;杂乱无章的机智团队在荒野中四处徘徊&#xff0c;尽…

C++学习 | 面试官:我们只想要这样的C++工程师

更多精彩&#xff0c;请点击上方蓝字关注我们&#xff01;最近好多同学来找就就说&#xff0c;我想找 xxx 方向的工作&#xff0c;我怎么学习呀&#xff1f;我也不知道这个岗位的招聘要求是啥&#xff1f;这个很正常哈&#xff0c;主要是咱们平时很少去关注企业的招聘要求&…