sprint boot_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值