Why does the Spring web application load right after launch?

Using STS, if I import the project "Rest Service" Getting Started using the latest Spring boot and select "Run As Spring Boot App" , it will start and then shut down immediately.

Looking at the debug logs, Spring, for some reason, the project solution is not a web application, but I have no idea why.

If I switch from Spring Boot 1.1.1.RELEASE to 1.0.1.RELEASE , the project will work as expected and the default Tomcat built-in server will be found.

Can't I find anything in the release notes for 1.1.1 that says there is a configuration change or something else?

UPDATE: steps to play and exit the log

I am running STS 3.6.0.M1 and Spring 4.0.5 and Spring Boot 1.1.1. I can easily reproduce this by following these steps:

  • Import REST Service Application Getting Started.
  • Select Run As Spring Boot Project
  • This is the result:

     :: Spring Boot :: (v1.1.1.RELEASE) 2014-06-14 11:08:34.226 INFO 47728 --- [ main] hello.Application : Starting Application on localhost with PID 47728 (/Users/pdrummond/src/sts/gs-rest-service-complete/target/classes started by pdrummond in /Users/pdrummond/src/sts/gs-rest-service-complete) 2014-06-14 11:08:34.257 INFO 47728 --- [ main] scaAnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@802b249: startup date [Sat Jun 14 11:08:34 BST 2014]; root of context hierarchy 2014-06-14 11:08:34.680 INFO 47728 --- [ main] osjeaAnnotationMBeanExporter : Registering beans for JMX exposure on startup 2014-06-14 11:08:34.908 INFO 47728 --- [ main] hello.Application : Started Application in 0.917 seconds (JVM running for 1.351) 2014-06-14 11:08:36.397 INFO 47728 --- [ Thread-3] scaAnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@802b249: startup date [Sat Jun 14 11:08:34 BST 2014]; root of context hierarchy 2014-06-14 11:08:36.398 INFO 47728 --- [ Thread-3] osjeaAnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown 
  • If I edit pom and change spring-boot-starter-parent to 1.0.1.RELEASE , it will boot as expected.

UPDATE 2: Added output from the --debug command

  :: Spring Boot :: (v1.1.1.RELEASE) 2014-06-14 19:29:03.814 INFO 986 --- [ main] hello.Application : Starting Application on localhost with PID 986 (/Users/pdrummond/src/sts/gs-rest-service-complete/target/classes started by pdrummond in /Users/pdrummond/src/sts/gs-rest-service-complete) 2014-06-14 19:29:03.816 DEBUG 986 --- [ main] osboot.SpringApplication : Loading source class hello.Application 2014-06-14 19:29:03.838 INFO 986 --- [ main] scaAnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@c163956: startup date [Sat Jun 14 19:29:03 BST 2014]; root of context hierarchy 2014-06-14 19:29:04.177 INFO 986 --- [ main] osjeaAnnotationMBeanExporter : Registering beans for JMX exposure on startup 2014-06-14 19:29:04.346 DEBUG 986 --- [ main] utoConfigurationReportLoggingInitializer : ========================= AUTO-CONFIGURATION REPORT ========================= Positive matches: ----------------- PropertyPlaceholderAutoConfiguration#propertySourcesPlaceholderConfigurer - @ConditionalOnMissingBean (types: org.springframework.context.support.PropertySourcesPlaceholderConfigurer; SearchStrategy: current) found no beans (OnBeanCondition) JacksonAutoConfiguration - @ConditionalOnClass classes found: com.fasterxml.jackson.databind.ObjectMapper (OnClassCondition) JacksonAutoConfiguration#jacksonObjectMapper - @ConditionalOnMissingBean (types: com.fasterxml.jackson.databind.ObjectMapper; SearchStrategy: all) found no beans (OnBeanCondition) JmxAutoConfiguration - @ConditionalOnClass classes found: org.springframework.jmx.export.MBeanExporter (OnClassCondition) - SpEL expression on org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration: ${spring.jmx.enabled:true} (OnExpressionCondition) JmxAutoConfiguration#mbeanServer - @ConditionalOnMissingBean (types: javax.management.MBeanServer; SearchStrategy: all) found no beans (OnBeanCondition) JmxAutoConfiguration#objectNamingStrategy - @ConditionalOnMissingBean (types: org.springframework.jmx.export.naming.ObjectNamingStrategy; SearchStrategy: all) found no beans (OnBeanCondition) HttpMessageConvertersAutoConfiguration - @ConditionalOnClass classes found: org.springframework.http.converter.HttpMessageConverter (OnClassCondition) HttpMessageConvertersAutoConfiguration#messageConverters - @ConditionalOnMissingBean (types: org.springframework.boot.autoconfigure.web.HttpMessageConverters; SearchStrategy: all) found no beans (OnBeanCondition) HttpMessageConvertersAutoConfiguration.ObjectMappers - @ConditionalOnClass classes found: com.fasterxml.jackson.databind.ObjectMapper (OnClassCondition) HttpMessageConvertersAutoConfiguration.ObjectMappers#mappingJackson2HttpMessageConverter - @ConditionalOnMissingBean (types: org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; SearchStrategy: all) found no beans (OnBeanCondition) Negative matches: ----------------- MessageSourceAutoConfiguration - Bundle found for spring.messages.basename: messages (MessageSourceAutoConfiguration.ResourceBundleCondition) RabbitAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.amqp.rabbit.core.RabbitTemplate,com.rabbitmq.client.Channel (OnClassCondition) AopAutoConfiguration - required @ConditionalOnClass classes not found: org.aspectj.lang.annotation.Aspect,org.aspectj.lang.reflect.Advice (OnClassCondition) BatchAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.batch.core.launch.JobLauncher,org.springframework.jdbc.core.JdbcOperations (OnClassCondition) ElasticsearchRepositoriesAutoConfiguration - required @ConditionalOnClass classes not found: org.elasticsearch.client.Client,org.springframework.data.elasticsearch.repository.ElasticsearchRepository (OnClassCondition) JpaRepositoriesAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.data.jpa.repository.JpaRepository (OnClassCondition) MongoRepositoriesAutoConfiguration - required @ConditionalOnClass classes not found: com.mongodb.Mongo,org.springframework.data.mongodb.repository.MongoRepository (OnClassCondition) RepositoryRestMvcAutoConfiguration - not a web application (OnWebApplicationCondition) SolrRepositoriesAutoConfiguration - required @ConditionalOnClass classes not found: org.apache.solr.client.solrj.SolrServer,org.springframework.data.solr.repository.SolrRepository (OnClassCondition) ElasticsearchAutoConfiguration - required @ConditionalOnClass classes not found: org.elasticsearch.client.Client,org.springframework.data.elasticsearch.client.TransportClientFactoryBean,org.springframework.data.elasticsearch.client.NodeClientFactoryBean (OnClassCondition) ElasticsearchDataAutoConfiguration - required @ConditionalOnClass classes not found: org.elasticsearch.client.Client,org.springframework.data.elasticsearch.core.ElasticsearchTemplate (OnClassCondition) FlywayAutoConfiguration - required @ConditionalOnClass classes not found: org.flywaydb.core.Flyway (OnClassCondition) FreeMarkerAutoConfiguration - required @ConditionalOnClass classes not found: freemarker.template.Configuration,org.springframework.ui.freemarker.FreeMarkerConfigurationFactory (OnClassCondition) GroovyTemplateAutoConfiguration - required @ConditionalOnClass classes not found: groovy.text.TemplateEngine (OnClassCondition) HypermediaAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.hateoas.Resource (OnClassCondition) IntegrationAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.integration.config.EnableIntegration (OnClassCondition) JacksonAutoConfiguration.JodaModuleAutoConfiguration - required @ConditionalOnClass classes not found: com.fasterxml.jackson.datatype.joda.JodaModule (OnClassCondition) JacksonAutoConfiguration.Jsr310ModuleAutoConfiguration - Required JVM version 1.8 or newer found 1.6 (OnJavaCondition) DataSourceAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType (OnClassCondition) DataSourceTransactionManagerAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.jdbc.core.JdbcTemplate,org.springframework.transaction.PlatformTransactionManager (OnClassCondition) JmsAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.jms.core.JmsTemplate (OnClassCondition) ActiveMQAutoConfiguration - required @ConditionalOnClass classes not found: javax.jms.ConnectionFactory,org.apache.activemq.ActiveMQConnectionFactory (OnClassCondition) HornetQAutoConfiguration - required @ConditionalOnClass classes not found: javax.jms.ConnectionFactory,org.hornetq.api.jms.HornetQJMSClient (OnClassCondition) JmxAutoConfiguration#mbeanExporter - @ConditionalOnMissingBean (types: org.springframework.jmx.export.MBeanExporter; SearchStrategy: current) found the following [mbeanExporter] (OnBeanCondition) LiquibaseAutoConfiguration - required @ConditionalOnClass classes not found: liquibase.integration.spring.SpringLiquibase (OnClassCondition) DeviceDelegatingViewResolverAutoConfiguration - not a web application (OnWebApplicationCondition) DeviceResolverAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.mobile.device.DeviceResolverHandlerInterceptor,org.springframework.mobile.device.DeviceHandlerMethodArgumentResolver (OnClassCondition) SitePreferenceAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.mobile.device.site.SitePreferenceHandlerInterceptor,org.springframework.mobile.device.site.SitePreferenceHandlerMethodArgumentResolver (OnClassCondition) MongoAutoConfiguration - required @ConditionalOnClass classes not found: com.mongodb.Mongo (OnClassCondition) MongoDataAutoConfiguration - required @ConditionalOnClass classes not found: com.mongodb.Mongo,org.springframework.data.mongodb.core.MongoTemplate (OnClassCondition) HibernateJpaAutoConfiguration - did not find HibernateEntityManager class (HibernateJpaAutoConfiguration.HibernateEntityManagerCondition) ReactorAutoConfiguration - required @ConditionalOnClass classes not found: reactor.spring.context.config.EnableReactor (OnClassCondition) RedisAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.data.redis.connection.jedis.JedisConnection,org.springframework.data.redis.core.RedisOperations,redis.clients.jedis.Jedis (OnClassCondition) FallbackWebSecurityAutoConfiguration - SpEL expression on org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration: !${security.basic.enabled:true} (OnExpressionCondition) SecurityAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.security.authentication.AuthenticationManager (OnClassCondition) FacebookAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.social.facebook.connect.FacebookConnectionFactory (OnClassCondition) LinkedInAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.social.linkedin.connect.LinkedInConnectionFactory (OnClassCondition) SocialWebAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.social.connect.web.ConnectController,org.springframework.social.config.annotation.SocialConfigurerAdapter (OnClassCondition) TwitterAutoConfiguration - required @ConditionalOnClass classes not found: org.springframework.social.twitter.connect.TwitterConnectionFactory (OnClassCondition) SolrAutoConfiguration - required @ConditionalOnClass classes not found: org.apache.solr.client.solrj.SolrServer (OnClassCondition) ThymeleafAutoConfiguration - required @ConditionalOnClass classes not found: org.thymeleaf.spring4.SpringTemplateEngine (OnClassCondition) VelocityAutoConfiguration - required @ConditionalOnClass classes not found: org.apache.velocity.app.VelocityEngine,org.springframework.ui.velocity.VelocityEngineFactory (OnClassCondition) DispatcherServletAutoConfiguration - not a web application (OnWebApplicationCondition) EmbeddedServletContainerAutoConfiguration - not a web application (OnWebApplicationCondition) ErrorMvcAutoConfiguration - required @ConditionalOnClass classes not found: javax.servlet.Servlet,org.springframework.web.servlet.DispatcherServlet (OnClassCondition) MultipartAutoConfiguration - required @ConditionalOnClass classes not found: javax.servlet.Servlet,javax.servlet.MultipartConfigElement (OnClassCondition) ServerPropertiesAutoConfiguration - not a web application (OnWebApplicationCondition) WebMvcAutoConfiguration - not a web application (OnWebApplicationCondition) WebSocketAutoConfiguration - required @ConditionalOnClass classes not found: javax.servlet.Servlet,org.apache.catalina.startup.Tomcat,org.springframework.web.socket.WebSocketHandler,org.apache.tomcat.websocket.server.WsSci (OnClassCondition) 2014-06-14 19:29:04.348 INFO 986 --- [ main] hello.Application : Started Application in 0.73 seconds (JVM running for 1.085) 2014-06-14 19:29:06.378 INFO 986 --- [ Thread-3] scaAnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@c163956: startup date [Sat Jun 14 19:29:03 BST 2014]; root of context hierarchy 2014-06-14 19:29:06.379 INFO 986 --- [ Thread-3] osjeaAnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown 
+14
spring spring-boot
Jun 13 '14 at
source share
7 answers

I had the same problem. For it to work, I had to configure pom.xml and comment on the "provided" area for the spring-boot-starter-tomcat artifact and update the dependencies.

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <!--<scope>provided</scope>--> </dependency> 

Now it starts as expected! Thanks to some other answers that set me on the right track.

+16
Apr 25 '16 at 16:29
source share

Check the mvn log when you run the package phase, and make sure the tomcat-embed-core box is assigned to the application jar.

+6
Feb 23 '15 at 15:40
source share

I had the same problem when my spring-boot application immediately shut down without any signs of tomcat starting up, although I had the <artifactId>spring-boot-starter-web</artifactId> dependency included in my pom.xml. This means that spring-boot does not recognize my application as a web application.

I tried to clean and repack my application using the mvn clean install utilities to check if the tomcat libraries will be packaged in my binary / deployable application. Found the following problem:

 [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ exam-launcher --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 2 source files to C:\XXXXX\XXXXXX\XXXX_Workspace\my-app\target\classes [WARNING] error reading c:\.m2\org\apache\tomcat\embed\tomcat-embed-core\8.5.14\tomcat-embed-core-8.5.14.jar; invalid LOC header (bad signature) [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ exam-launcher --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory C:\Chaithu\Work_Related\Eclipse_Neon_Workspace\exam-portal-server\src\test\resources 

The tomcat library that I had on my local repo is corrupted (for unknown reasons), because of which it was not included in the maven package. Delete the appropriate folder from my local maven repository and let maven just download it. And now it works like a charm!

+2
Jul 25 '17 at 10:53 on
source share

I found the reason for this. My thing was that I did not include any library that brings tomcat working time with it. I have included the dependency spring -web and spring-boot-starter-data-jpa (shown below), but none of these packages will cause tomcat runtime for this application to start. So it was an automatic shutdown.

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-web</artifactId> </dependency> 

The solution was to change spring -web to spring-boot-starter-web (shown below). This library includes the tomcat library, and my application started up.

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 
+1
Jun 12 '17 at 6:01
source share

Just add

  spring.main.web-environment=true 

in application.properties and restart.

+1
Aug 09 '17 at 23:07 on
source share

In addition, you should check that your application has at least one controller for rest (@RestController) and make sure that you compile it using spring-boot-starter-tomcat

 providedRuntime ('org.springframework.boot:spring-boot-starter-tomcat') 
0
Mar 16 '17 at 22:36
source share

I had the same problem and spent some time finding a solution. I know the question has been around for several years, but it could save someone else in the future.

I received this warning when I ran mvn clean install :

 [WARNING] error reading /Users/fotouhm/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.16/tomcat-embed-core-8.5.16.jar; zip file is empty 

For some reason, this file is corrupt. Just follow the link below and replace it.

http://central.maven.org/maven2/org/apache/tomcat/embed/tomcat-embed-core/8.5.16/tomcat-embed-core-8.5.16.jar

0
Jul 27 '17 at 21:17
source share



All Articles