简体   繁体   English

Springboot应用程序无法在现有的Tomcat上完全启动

[英]Springboot application not fully start on an existing tomcat

I have a working springboot application, build in java 1.8 我有一个工作正常的springboot应用程序,构建在Java 1.8中

I follow the springboot documentation to create a war, and deploy it in a Tomcat server. 我按照springboot文档进行创建战争,并将其部署在Tomcat服务器中。

I successfully started and tested the application in IntelliJ in local : 我在本地的IntelliJ中成功启动并测试了该应用程序:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.6.RELEASE)

2019-08-13 14:44:07.801  INFO 10824 --- [on(3)-127.0.0.1] com.oaa.cos.web.Application         : Starting Application v0.0.33-SNAPSHOT on NBL000197 with PID 10824 (C:\Users\10067726\Documents\apache-tomcat-9.0.22\webapps\cosw\WEB-INF\classes started by 10067726 in C:\Users\10067726\Documents\apache-tomcat-9.0.22\bin)
2019-08-13 14:44:07.841  INFO 10824 --- [on(3)-127.0.0.1] com.oaa.cos.web.Application         : No active profile set, falling back to default profiles: default
2019-08-13 14:44:14.017  INFO 10824 --- [on(3)-127.0.0.1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 5885 ms
13-Aug-2019 14:44:18.011 AVERTISSEMENT [RMI TCP Connection(3)-127.0.0.1] javax.xml.soap.FactoryFinder.find Using deprecated META-INF/services mechanism with non-standard property: javax.xml.soap.MetaFactory. Property javax.xml.soap.SAAJMetaFactory should be used instead.
2019-08-13 14:44:26.385  INFO 10824 --- [on(3)-127.0.0.1] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-08-13 14:44:27.240  INFO 10824 --- [on(3)-127.0.0.1] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
2019-08-13 14:44:27.687  INFO 10824 --- [on(3)-127.0.0.1] com.oaa.cos.web.Application         : Started Application in 23.395 seconds (JVM running for 49.022)

I want to deploy the war on an existing server, in an existing server instance, which already working for other war. 我想在现有服务器实例中的现有服务器上部署战争,该服务器实例已经可以用于其他战争。

When a start the instance, it seems to stop before the end... 当启动实例时,它似乎在结束之前就停止了...

It never ends, and the application doesn't respond : 它永远不会结束,并且应用程序不会响应:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.6.RELEASE)

2019-08-13 14:53:34.993  INFO 11239 --- [           main] com.oaa.cos.web.Application         : Starting Application v0.0.33-SNAPSHT on dfrlmasoatc01.int.com with PID 11239 (/home1/tomcat9-multiharden/instances/default/webapps/EdgeCustomerOfferStorageWeb/WEB-INFclasses started by tomcat9 in /)
2019-08-13 14:53:35.005  INFO 11239 --- [           main] com.oaa.cos.web.Application         : No active profile set, falling backto default profiles: default
2019-08-13 14:53:36.659  INFO 11239 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialzation completed in 1591 ms

I already check these points : 我已经检查了以下几点:

  • My application extends SpringBootServletInitializer 我的应用程序扩展了SpringBootServletInitializer
  • I put the starter tomcat dependencies in provided 我把启动器的tomcat依赖项放在了
  • The war is named "EdgeCustomerOfferStorageWeb.war", and the instance port is 10080, so I use : http://server:10080/EdgeCustomerOfferStorageWeb/ It does not respond, it never ends loading. 战争名为“ EdgeCustomerOfferStorageWeb.war”,实例端口为10080,因此我使用: http:// server:10080 / EdgeCustomerOfferStorageWeb /它没有响应,它永远不会结束加载。 Servlet is 3.+, so no need of web.xml Servlet是3. +,因此不需要web.xml

How could I know what is going on after this step and why my application isn't really deployed ? 我如何知道此步骤之后发生了什么以及为什么我的应用程序没有真正部署? How can I access to the tomcat manager interface ? 如何访问tomcat管理器界面? Do you really think the application could be deployed and the incomplete logs could get me wrong here ? 您是否真的认为可以部署该应用程序,并且日志不完整可能会使我在这里弄错?

I find the problem. 我找到问题了。 Putting the log level in setenv.sh for my instance : -Dlogging.level.org.springframework=DEBUG 将日志级别放入我的实例的setenv.sh中:-Dlogging.level.org.springframework = DEBUG

I see that the application wait on a specific bean creation. 我看到该应用程序正在等待特定的bean创建。 In my case, this bean instanciate a soap client for a wsdl url. 就我而言,该bean实例化了一个wsdl url的soap客户。 The url was not correct, so the bean can't connect to it. 网址不正确,因此Bean无法连接到该网址。

But there is one thing I don't understand : Why there is no default timeout or error from tomcat ? 但是有一件我不了解的事情:为什么tomcat没有默认的超时或错误? And why the other war in the same instance, which could be deployed before, can't work correctly ? 为何以前可能部署过的同一场战争无法正常进行? Tomcat block every application in the instance while one of them can't be deployed ? Tomcat阻止实例中的每个应用程序,而其中一个无法部署?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM