javascript
Spring靴子战争包装
Spring Boot建議在構(gòu)建期間使用嵌入式容器(tomcat或碼頭)創(chuàng)建一個可執(zhí)行jar,并在運行時將此可執(zhí)行jar作為獨立進程使用。 但是,通常將應用程序部署到外部容器上是很常見的,Spring Boot提供了打包應用程序的方式,專門針對此類需求。
我在這里的重點不是重復關于創(chuàng)建war構(gòu)件的已經(jīng)詳細的Spring Boot 指導 ,而是在測試創(chuàng)建的文件以查看它是否可以在獨立容器上可靠地工作。 我最近在通過Spring Boot項目創(chuàng)建戰(zhàn)爭并將其部署在Jetty上時遇到了一個問題,這實際上是從該經(jīng)驗中學到的東西。
測試戰(zhàn)爭能否可靠進行的最佳方法是簡單地使用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插件開始戰(zhàn)爭:
mvn tomcat7:run并帶有碼頭插件:
mvn jetty:run如果創(chuàng)建戰(zhàn)爭的方式存在任何問題,則應在啟動時使用這些容器來解決。 例如,如果我要保留嵌入式tomcat依賴項:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId> </dependency>然后在啟動maven tomcat插件時,將出現(xiàn)以下錯誤:
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依賴項,并用以下內(nèi)容替換上面的內(nèi)容:
<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
總結(jié)
以上是生活随笔為你收集整理的Spring靴子战争包装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何查看网络连接人数如何查看路由器网络连
- 下一篇: 光猫怎么无线连接路由器设置光猫设置路由器