日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springboot 2.x tomcat war包部署 localhost-startStop-1 启动卡顿卡死

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot 2.x tomcat war包部署 localhost-startStop-1 启动卡顿卡死 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是烤鴨:? ?

? ? 關于springboot war包部署tomcat。

? ? 環境:

????? ? springboot 2.0.3.RELEASE

????????apache-tomcat-8.5.32


1.? ? 修改pom

<?xml version="1.0" encoding="UTF-8"?> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version></parent><groupId>com.xxx.xxx</groupId><version>1.0.0-SNAPSHOT</version><artifactId>xxx_xxxx_interface</artifactId><packaging>war</packaging><name>xxx_xxxx_interface</name><description>xxx接口</description><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.encoding>UTF-8</maven.compiler.encoding><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.build.locales>zh_CN</project.build.locales></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><profiles><profile><!--本地開發環境 --><id>dev</id><properties><profiles.active>dev</profiles.active></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><!--測試環境 --><id>test</id><properties><profiles.active>test</profiles.active></properties></profile><profile><!--生產環境 --><id>pro</id><properties><profiles.active>pro</profiles.active></properties></profile></profiles><build><finalName>xxxx_interface</finalName> <!-- 指定package生成的文件名為my-spring-boot.jar --><resources><!-- 所有環境配置文件過濾 --><resource><directory>src/main/resources</directory><filtering>true</filtering><excludes><exclude>test/*</exclude><exclude>pro/*</exclude><exclude>dev/*</exclude></excludes></resource><!-- 指定環境配置文件導入 --><resource><directory>src/main/resources/${profiles.active}</directory></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><delimiters><delimiter>@</delimiter></delimiters><useDefaultDelimiters>false</useDefaultDelimiters><archive><manifest><addClasspath>true</addClasspath><useUniqueVersions>false</useUniqueVersions><classpathPrefix>lib/</classpathPrefix><mainClass>xxx.xxx.xxxInterfaceMainApplication</mainClass></manifest><manifestEntries><version>${project.version}</version></manifestEntries></archive></configuration></plugin></plugins></build> </project>

網上很多人都說需要再加忽略內置tomcat,或者servlet.api的包,其實都不需要。

主要就是? ?

???? ????????<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version></parent> ????????????????<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> <packaging>war</packaging>

<parent> ????spring-boot-starter-parent????</parent>

<dependency>? ? ? ? ?spring-boot-starter-web????</dependency>

?<packaging> war </packaging>


2.? ? 修改啟動方法

package com.xxx.xxxx.config;import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors;import javax.annotation.PostConstruct;import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.stereotype.Controller;@Configuration @EnableAutoConfiguration @ComponentScan(value = "com.xxx.xxxx", excludeFilters = { @Filter(Controller.class),@Filter(type = FilterType.ASSIGNABLE_TYPE, value = { RootConfiguration.class }) }) @MapperScan({"com.xxx.xxxx.dao"}) public class RootConfiguration extends SpringBootServletInitializer {@PostConstructpublic void postConstruct() {}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return configureApplication(builder);}public static void main(String[] args) {configureApplication(new SpringApplicationBuilder()).run(args);}private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) {return builder.sources(RootConfiguration.class);}}

主要就是繼承?SpringBootServletInitializer?,重寫?configure 方法。


3.? ? 問題及猜想

? ? 之前的項目就是這么配置的,用的springboot 1.5.6.RELEASE,是沒有問題的。

? ? ?改了新項目,升級了springboot,也加了很多東西,項目就起不來了。

? ? ?本地run方法運行是沒有問題的

? ? 3.1 問題?:

? ? ????啟動卡死:

? ? 這是tomcat下log日志的最后幾行,乍一看并沒有什么問題。但是總覺得哪里不對。訪問tomcat也訪問不到。

[2018-07-04 06:48:10.199] [main] [DEBUG] o.h.validator.internal.xml.ValidationXmlParser - No META-INF/validation.xml found. Using annotation based configuration only. [2018-07-04 06:48:10.205] [main] [DEBUG] o.h.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.springframework.validation.beanvalidation.LocaleContextMessageInterpolator as ValidatorFactory-scoped message interpolator. [2018-07-04 06:48:10.206] [main] [DEBUG] o.h.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.resolver.TraverseAllTraversableResolver as ValidatorFactory-scoped traversable resolver. [2018-07-04 06:48:10.206] [main] [DEBUG] o.h.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.util.ExecutableParameterNameProvider as ValidatorFactory-scoped parameter name provider. [2018-07-04 06:48:10.206] [main] [DEBUG] o.h.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.DefaultClockProvider as ValidatorFactory-scoped clock provider. [2018-07-04 06:48:10.207] [main] [DEBUG] o.h.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.scripting.DefaultScriptEvaluatorFactory as ValidatorFactory-scoped script evaluator factory. [2018-07-04 06:48:10.654] [main] [WARN ] org.thymeleaf.templatemode.TemplateMode - [THYMELEAF][main] Template Mode 'HTML5' is deprecated. Using Template Mode 'HTML' instead. [2018-07-04 06:48:10.823] [main] [INFO ] org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler [http-nio-8161] [2018-07-04 06:48:10.839] [main] [INFO ] org.apache.tomcat.util.net.NioSelectorPool - Using a shared selector for servlet write/read [2018-07-04 06:48:10.877] [main] [INFO ] com.xx.xx.xxxInterfaceMainApplication - Started xxxInterfaceMainApplication in 5.237 seconds (JVM running for 5.691)

或者卡在這:

[2018-07-04 06:48:10.056] [main] [DEBUG] o.h.validator.internal.engine.ConfigurationImpl - Setting custom MessageInterpolator of type org.springframework.validation.beanvalidation.LocaleContextMessageInterpolator [2018-07-04 06:48:10.057] [main] [DEBUG] o.h.validator.internal.engine.ConfigurationImpl - Setting custom ConstraintValidatorFactory of type org.springframework.validation.beanvalidation.SpringConstraintValidatorFactory [2018-07-04 06:48:10.057] [main] [DEBUG] o.h.validator.internal.engine.ConfigurationImpl - Setting custom ParameterNameProvider of type org.springframework.validation.beanvalidation.LocalValidatorFactoryBean$1 [2018-07-04 06:48:10.059] [main] [DEBUG] o.h.validator.internal.xml.ValidationXmlParser - Trying to load META-INF/validation.xml for XML based Validator configuration. [2018-07-04 06:48:10.059] [main] [DEBUG] o.h.validator.internal.xml.ResourceLoaderHelper - Trying to load META-INF/validation.xml via user class loader [2018-07-04 06:48:10.059] [main] [DEBUG] o.h.validator.internal.xml.ResourceLoaderHelper - Trying to load META-INF/validation.xml via TCCL [2018-07-04 06:48:10.060] [main] [DEBUG] o.h.validator.internal.xml.ResourceLoaderHelper - Trying to load META-INF/validation.xml via Hibernate Validator's class loader [2018-07-04 06:48:10.060] [main] [DEBUG] o.h.validator.internal.xml.ValidationXmlParser - No META-INF/validation.xml found. Using annotation based configuration only. [2018-07-04 06:48:10.067] [main] [DEBUG] o.h.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.springframework.validation.beanvalidation.LocaleContextMessageInterpolator as ValidatorFactory-scoped message interpolator. [2018-07-04 06:48:10.067] [main] [DEBUG] o.h.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.resolver.TraverseAllTraversableResolver as ValidatorFactory-scoped traversable resolver. [2018-07-04 06:48:10.067] [main] [DEBUG] o.h.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.util.ExecutableParameterNameProvider as ValidatorFactory-scoped parameter name provider. [2018-07-04 06:48:10.068] [main] [DEBUG] o.h.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.DefaultClockProvider as ValidatorFactory-scoped clock provider. [2018-07-04 06:48:10.068] [main] [DEBUG] o.h.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.scripting.DefaultScriptEvaluatorFactory as ValidatorFactory-scoped script evaluator factory. [2018-07-04 06:48:10.189] [main] [DEBUG] o.h.v.i.engine.resolver.TraversableResolvers - Cannot find javax.persistence.Persistence on classpath. Assuming non JPA 2 environment. All properties will per default be traversable.

或者卡在springboot讀取banner之后。

????

? ? 這種問題真的是難找,也不報錯。

? ? 3.2????猜想:

? ??? ? 1????是不是springboot版本升級導致的問題,第一時間降版本,無效。

????? ? 2????是不是引了多余的包,導致jar包沖突,解決了之后,無效。

????? ? 3????tomcat本身問題,換tomcat版本,保證tomcat是沒問題的,無效。

????? ? ????如果這些都做了,還是無效的話,考慮一下是不是代碼的問題。


我嘗試注釋掉部分代碼,再打包啟動,如果成功了,就說明代碼部分有問題。最后找到了代碼中的問題。

問題代碼:

/*** * 定時任務回調輪詢*/ @Component public class TaskUpdateNotify implements CommandLineRunner {public static Log logger = LogFactory.getLog(TaskUpdateNotify.class);public static final long timeFlag = 1000;@Autowiredprivate RedisClient redisClient;@Autowiredprivate ThreadHandler threadHandler;/*** 25小時以內完成8次通知(通知的間隔頻率一般是:4m,10m,10m,1h,2h,6h,15h) 異步通知回調*/@Overridepublic void run(String... args) throws Exception {while (true) {// 先處理發二維碼threadHandler.doNotifyAgainHandler(); //threadHandler.doPayNotifyAgainHandler(); //多線程方法//線成休息 1 minTimeUnit.MINUTES.sleep(1);}} }

我懷疑原因是在實現?CommandLineRunner?接口,并在我在方法中?TimeUnit.MINUTES.sleep(1)?

????? ? 之后把這個方法改成了定時任務,又取消了線程sleep,就可以啟動了。


最后貼一下:

????啟動成功的日志最后幾行,應該是有tomcat容器啟動的。

6-Jul-2018 06:14:03.022 信息 [localhost-startStop-1] org.springframework.boot.StartupInfoLogger.logStarted Started RootConfiguration in 6.223 seconds (JVM running for 12.622) 06-Jul-2018 06:14:03.063 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\preauth_interface.war] has finished in [10,773] ms 06-Jul-2018 06:14:03.064 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\docs] 06-Jul-2018 06:14:03.086 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\docs] has finished in [22] ms 06-Jul-2018 06:14:03.086 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\examples] 06-Jul-2018 06:14:03.357 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\examples] has finished in [271] ms 06-Jul-2018 06:14:03.357 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\host-manager] 06-Jul-2018 06:14:03.386 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\host-manager] has finished in [29] ms 06-Jul-2018 06:14:03.386 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\manager] 06-Jul-2018 06:14:03.409 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\manager] has finished in [23] ms 06-Jul-2018 06:14:03.410 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\ROOT] 06-Jul-2018 06:14:03.432 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [G:\develop\environment\apache-tomcat-8.5.32-1\webapps\ROOT] has finished in [22] ms 06-Jul-2018 06:14:03.441 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 06-Jul-2018 06:14:03.455 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 06-Jul-2018 06:14:03.462 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 11229 ms

4.? ? 總結

? ? 如果有報錯信息一切都好說,最怕的就是這樣,找不到原因。只能一點點摸索,算是分享一下吧。每個人的原因不可能一樣。這種問題只能慢慢找了。多嘗試幾次,如果還是找不到。

? ? 就用 jar包方式 運行 springboot 項目。如果有 靜態頁面,就前后端分離,簡單的方式 Nginx。

????

總結

以上是生活随笔為你收集整理的springboot 2.x tomcat war包部署 localhost-startStop-1 启动卡顿卡死的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。