Search code examples
springspring-bootgroovyserverdaemon

How to prevent Spring Boot daemon/server application from closing/shutting down immediately?


My Spring Boot application is not a web server, but it's a server using custom protocol (using Camel in this case).

But Spring Boot immediately stops (gracefully) after started. How do I prevent this?

I'd like the app to stop if Ctrl+C or programmatically.

@CompileStatic
@Configuration
class CamelConfig {

    @Bean
    CamelContextFactoryBean camelContext() {
        final camelContextFactory = new CamelContextFactoryBean()
        camelContextFactory.id = 'camelContext'
        camelContextFactory
    }

}

Solution

  • As of Apache Camel 2.17 there is a cleaner answer. To quote http://camel.apache.org/spring-boot.html:

    To keep the main thread blocked so that Camel stays up, either include the spring-boot-starter-web dependency, or add camel.springboot.main-run-controller=true to your application.properties or application.yml file.

    You will want the following dependency too:

    <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-spring-boot-starter</artifactId> <version>2.17.0</version> </dependency>

    Clearly replace <version>2.17.0</version> or use the camel BOM to import dependency-management information for consistency.