While starting the Spring boot, application gets stuck and SpringApplication.run is not returning.
#Configuration
#ComponentScan
#EnableAutoConfiguration
public class AccountServiceApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(AccountServiceApplication.class, args);
System.out.println("----------------------------- I'm done -------------------------");
}
}
I can see that Spring creates all the beans but it never returns, though embedded tomcat is started on 9000, it's not listening
class org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory's object [after] tomcatEmbeddedServletContainerFactory
[05/16/19 06:17:44:044 IST] INFO tomcat.TomcatEmbeddedServletContainer: : Tomcat initialized with port(s): 9000 (http)
May 16, 2019 6:17:44 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-9000"]
May 16, 2019 6:17:44 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Tomcat]
Trying 127.0.0.1...
Connection failed: Connection refused
Trying ::1...
telnet: Unable to connect to remote host: Connection refused
Application is stuck forever post creating JMS connection.
class org.springframework.expression.spel.support.StandardEvaluationContext's object [after] integrationEvaluationContext
class org.springframework.integration.handler.LoggingHandler's object [after] _org.springframework.integration.errorLogger.handler
class org.springframework.integration.config.ConsumerEndpointFactoryBean's object [before]_org.springframework.integration.errorLogger
class org.springframework.integration.config.ConsumerEndpointFactoryBean's object [after] _org.springframework.integration.errorLogger
class org.springframework.integration.config.IdGeneratorConfigurer's object [before]org.springframework.integration.config.IdGeneratorConfigurer#0
class org.springframework.integration.config.IdGeneratorConfigurer's object [after] org.springframework.integration.config.IdGeneratorConfigurer#0
[05/16/19 05:58:02:002 IST] INFO annotation.AnnotationMBeanExporter: : Registering beans for JMX exposure on startup
class org.springframework.expression.spel.support.StandardEvaluationContext's object [after] integrationEvaluationContext
[05/16/19 05:58:02:002 IST] INFO support.DefaultLifecycleProcessor: : Starting beans in phase 0
[05/16/19 05:58:02:002 IST] INFO endpoint.EventDrivenConsumer: : Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
[05/16/19 05:58:02:002 IST] INFO channel.PublishSubscribeChannel: : Channel 'application:9000.errorChannel' has 1 subscriber(s).
[05/16/19 05:58:02:002 IST] INFO endpoint.EventDrivenConsumer: : started _org.springframework.integration.errorLogger
[05/16/19 05:58:02:002 IST] INFO support.DefaultLifecycleProcessor: : Starting beans in phase 2147483647
[05/16/19 05:58:02:002 IST] INFO connection.CachingConnectionFactory: : Established shared JMS Connection: ActiveMQConnection {id=ID:SDSD121SFSSDF.local-54305-1557966482134-1:1,clientId=null,started=false}
Any pointer on how can I debug it?
in your application,it may be exist a thread with an infinite loop. your application start up fail. and this thread is not quit. the process still is exist.it looks like start up successfully.
The common practice that might help in such cases is to "catch the lion in the desert / binary search" for the cause the problem.
Try comment out halves of your application till you reach a point where the application starts with no problem. Then you will be able to nail the problematic code/section.
I also got stuck at :
INFO support.DefaultLifecycleProcessor: : Starting beans in phase X
It was because in a #RestController class I made a #GetMapping method return a #Entity, where it should have been a DTO instead.
Related
Small question regarding Spring Cloud Stream Kafka please.
I am having a very simple and straightforward consumer.
It is consuming only, does not produce messages, the topic is already there, I do not need to create topic.
#SpringBootApplication
public class StreamReactiveConsumerApplication implements CommandLineRunner {
private static final Logger log = LoggerFactory.getLogger(StreamReactiveConsumerApplication.class);
public static void main(String... args) {
new SpringApplicationBuilder(StreamReactiveConsumerApplication.class).web(WebApplicationType.NONE).run(args);
}
#Override
public void run(String... args) throws Exception {
log.warn("Remember about calling <.subscribe()> at the end of your Consumer<Flux> bean!");
log.warn("Remember about finishing the span manually before calling subscribe!");
}
#Bean
Consumer<Flux<Message<String>>> channel(Tracer tracer, ObservationRegistry observationRegistry) {
return flux -> flux.doOnNext(msg -> log.info("<ACCEPTANCE_TEST> <TRACE:{}> Hello from consumer",
tracer.currentSpan().context().traceId())).subscribe();
}
}
Yet on application startup, I am seeing interactions from the admin client please see logs below:
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.s.i.endpoint.EventDrivenConsumer : Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.s.i.c.PublishSubscribeChannel : Channel 'stream-reactive-consumer.errorChannel' has 1 subscriber(s).
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.s.i.endpoint.EventDrivenConsumer : started bean '_org.springframework.integration.errorLogger'
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.s.c.s.binder.DefaultBinderFactory : Creating binder: kafka
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.s.c.s.binder.DefaultBinderFactory : Constructing binder child context for kafka
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.s.c.s.binder.DefaultBinderFactory : Caching the binder: kafka
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.a.k.c.admin.AdminClientConfig : AdminClientConfig values:
[bunch of values...]
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.a.kafka.common.utils.AppInfoParser : Kafka version: 3.3.1
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.a.kafka.common.utils.AppInfoParser : Kafka commitId: e23c59d00e687ff5
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.a.kafka.common.utils.AppInfoParser : Kafka startTimeMs: 1675650324403
As you can see, the app is calling the admin client:
2023-02-06 10:25:24 [stream-reactive-consumer,,] o.a.k.c.admin.AdminClientConfig : AdminClientConfig values:
May I ask why this reliance on the admin for a consumer only app please?
Again, I am not producing anything, not creating any topic.
Is there a way to consume without this admin client, disable this admin client please?
Thank you
As suggested by #Gary Russell, the bug is fixed and seeing Admin client on startup for a consumer only app is indeed not expected.
In my case, it is due to a mix of couple of things:
1 - How can I configure a Spring Cloud Stream (Kafka) application to autocreate the topics in Confluent Cloud?
spring.cloud.stream.kafka.binder.autoCreateTopics property is set to true by default, this will "trigger the Admin Client"
I did set it to false on my side, but because of this issue: https://github.com/spring-cloud/spring-cloud-stream/issues/2644 when running on native, the property was not being taken into account.
Making sure the property is false, and setting the breakpoint as Gary suggested is the correct solution (upvoted what he said)
Building a separate Web Client and Rest Service in Spring Boot. Making two separate apps. Trying to make an AJAX call from the client on http://localhost:8081/ and hit the rest service on http://localhost:8080/someURL/invokeMethod which should invoke the rest service controller method and make a LOGGER.info() out to the console. When I launch the page at http://localhost:8081/ the AJAX on the client should make a call to the service however I am unable to get a log out to the console from the controller getLogOut() method on the rest service controller.
Rest Service Controller
package com.demo.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
#RestController
#RequestMapping("/someURL")
public class ServiceController {
private static final Logger LOGGER = LoggerFactory.getLogger(SearchController.class.getName());
#GetMapping("/invokeMethod")
public void getLogOut() {
LOGGER.info("/n/n/n/n/n***************LOGGER IN getLogOut************");
}
}
Web Client index.html :
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$.ajax({
url: "http://localhost:8080/someURL/invokeMethod"
});
});
</script>
</head>
<body>
<h1>Load Page to make ajax call</h1>
</body>
</html>
Web Client Controller :
package com.demo.Web.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
#Controller
#RequestMapping
public class WebController {
private static final Logger LOGGER = LoggerFactory.getLogger(WebController.class.getName());
#GetMapping("/")
public String viewPage() {
LOGGER.info("\n\n\n**********In Index**********");
return "index";
}
}
Not getting errors from the console. Just simply getting from console :
0:0:0:0:0:0:0:1 - - [06/Oct/2019:21:21:28 -0500] "GET /someURL/invokeMethod HTTP/1.1" 200 722
Not sure what above from console is trying tell me.
Stacktrace (should be complete)
[INFO]~2019-10-07-09.53.05.313CDT~~~~~~ c.e.h.RestServiceApplication Starting RestServiceApplication on 5CG9107HK6 with PID 162992
[INFO]~2019-10-07-09.53.05.317CDT~~~~~~ c.e.h.RestServiceApplication No active profile set, falling back to default profiles: default
[INFO]~2019-10-07-09.53.05.543CDT~~~~~~ o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
[INFO]~2019-10-07-09.53.05.544CDT~~~~~~ o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
[INFO]~2019-10-07-09.53.06.685CDT~~~~~~ o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$6e19173b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[INFO]~2019-10-07-09.53.06.692CDT~~~~~~ o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[INFO]~2019-10-07-09.53.06.694CDT~~~~~~ o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler#cb177' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[INFO]~2019-10-07-09.53.06.701CDT~~~~~~ o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$92edb9ed] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[INFO]~2019-10-07-09.53.06.706CDT~~~~~~ o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'org.springframework.security.config.annotation.method.configuration.Jsr250MetadataSourceConfiguration' of type [org.springframework.security.config.annotation.method.configuration.Jsr250MetadataSourceConfiguration$$EnhancerBySpringCGLIB$$b842d203] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[INFO]~2019-10-07-09.53.06.707CDT~~~~~~ o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'jsr250MethodSecurityMetadataSource' of type [org.springframework.security.access.annotation.Jsr250MethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[INFO]~2019-10-07-09.53.06.708CDT~~~~~~ o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[INFO]~2019-10-07-09.53.07.074CDT~~~~~~ o.s.b.w.e.t.TomcatWebServer Tomcat initialized with port(s): 8080 (http)
[INFO]~2019-10-07-09.53.07.092CDT~~~~~~ o.a.c.h.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8080"]
[INFO]~2019-10-07-09.53.07.104CDT~~~~~~ o.a.c.c.StandardService Starting service [Tomcat]
[INFO]~2019-10-07-09.53.07.105CDT~~~~~~ o.a.c.core.StandardEngine Starting Servlet engine: [Apache Tomcat/9.0.26]
[INFO]~2019-10-07-09.53.07.225CDT~~~~~~ o.a.c.c.C.[.[.[/] Initializing Spring embedded WebApplicationContext
[INFO]~2019-10-07-09.53.07.225CDT~~~~~~ o.s.w.c.ContextLoader Root WebApplicationContext: initialization completed in 1681 ms
[INFO]~2019-10-07-09.53.07.962CDT~~~~~~ n.r.s.b.l.a.LogbackAccessContext Configured the Logback-access: context=[default], config=[classpath:logback-access.xml]
[INFO]~2019-10-07-09.53.08.093CDT~~~~~~ o.s.s.c.ThreadPoolTaskExecutor Initializing ExecutorService 'applicationTaskExecutor'
[INFO]~2019-10-07-09.53.08.334CDT~~~~~~ o.s.s.w.DefaultSecurityFilterChain Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter#1c48ba2, org.springframework.security.web.context.SecurityContextPersistenceFilter#c57134, org.springframework.security.web.header.HeaderWriterFilter#1248239, org.springframework.security.web.csrf.CsrfFilter#183a2cf, org.springframework.security.web.authentication.logout.LogoutFilter#159fde7, com.edwardjones.framework.security.spring.wam.WamAuthenticationFilter#146ee78, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#261552, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter#e0f96e, org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter#300ae4, org.springframework.security.web.authentication.www.BasicAuthenticationFilter#44ff58, org.springframework.security.web.savedrequest.RequestCacheAwareFilter#1de5909, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter#15d7b9c, org.springframework.security.web.authentication.AnonymousAuthenticationFilter#df7a4d, org.springframework.security.web.session.SessionManagementFilter#348fee, org.springframework.security.web.access.ExceptionTranslationFilter#13719ad, org.springframework.security.web.access.ExceptionTranslationFilter#b78775, org.springframework.security.web.access.intercept.FilterSecurityInterceptor#1f01a41]
[INFO]~2019-10-07-09.53.08.807CDT~~~~~~ o.s.s.c.ThreadPoolTaskScheduler Initializing ExecutorService 'taskScheduler'
[INFO]~2019-10-07-09.53.08.836CDT~~~~~~ o.s.b.d.a.OptionalLiveReloadServer LiveReload server is running on port 35729
[INFO]~2019-10-07-09.53.08.843CDT~~~~~~ o.s.b.a.e.w.EndpointLinksResolver Exposing 2 endpoint(s) beneath base path '/actuator'
[INFO]~2019-10-07-09.53.08.889CDT~~~~~~ o.a.c.h.Http11NioProtocol Starting ProtocolHandler ["http-nio-8080"]
[INFO]~2019-10-07-09.53.08.996CDT~~~~~~ o.s.b.w.e.t.TomcatWebServer Tomcat started on port(s): 8080 (http) with context path ''
[INFO]~2019-10-07-09.53.09.001CDT~~~~~~ c.e.h.RestServiceApplication Started RestServiceApplication in 3.959 seconds (JVM running for 4.804)
[INFO]~2019-10-07-09.53.39.001CDT~~~~~~ o.a.c.c.C.[.[.[/] Initializing Spring DispatcherServlet 'dispatcherServlet'
[INFO]~2019-10-07-09.53.39.001CDT~~~~~~ o.s.w.s.DispatcherServlet Initializing Servlet 'dispatcherServlet'
[INFO]~2019-10-07-09.53.39.008CDT~~~~~~ o.s.w.s.DispatcherServlet Completed initialization in 7 ms
0:0:0:0:0:0:0:1 - - [07/Oct/2019:09:53:39 -0500] "GET /someURL/invokeMethod HTTP/1.1" 200 722
By reading Spring-boot docs I have understood that I can create a class implementing ApplicationRunner or CommandLineRunner in order to execute code before application starts.
From docs:
An ApplicationReadyEvent is sent after any application and command-line runners have been called. It indicates that the application is ready to service requests.
However, I have following class:
#Component
public class MyClass implements ApplicationRunner {
#Override
public void run(ApplicationArguments args) throws Exception {
Thread.sleep(10000);
}
}
And instead of waiting those 10 seconds to start, it says application started in 3seconds:
2018-11-19 08:51:21.906 INFO 24872 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2018-11-19 08:51:21.909 INFO 24872 --- [ main] com.mycompany.Application : Started Application in 3.565 seconds (JVM running for 4.016)
I assume my class is running in another thread. But I have the feeling that this does not guarantee that my code has finished executing before any possible incoming request.
Is this the correct approach? Am I missing something?
I am learning spring-cloud-config and I would like to use different profiles but I always get back values from the default profile.
I have two property files in the git repository and the file with prod suffix overrides a key from default profile:
image-service.properties
image-service-prod.properties
It seems that my config server works fine:
GET http://localhost:8888/image-service/default:
{"name":"image-service","profiles":["default"],"label":null,"version":"fb78fe4429a33c266d6eb07a9e482b8fd264dd7c","state":null,"propertySources":
[{"name":"https://bitbucket.org/.../...-configuration.git/image-service.properties","source":{"service.image.hello":"image-common"}}]}
GET http://localhost:8888/image-service/prod
{"name":"image-service","profiles":["prod"],"label":null,"version":"fb78fe4429a33c266d6eb07a9e482b8fd264dd7c","state":null,"propertySources":
[{"name":"https://bitbucket.org/.../...-configuration.git/image-service-prod.properties","source":{"service.image.hello":"image-prod"}},
{"name":"https://bitbucket.org/.../...-configuration.git/image-service.properties","source":{"service.image.hello":"image-common"}}]}
I activated prod profile in my REST application but always value from the default profile is shown.
application.properties of the client app:
server.port=8889
spring.application.name=image-service
spring.cloud.config.uri=http://localhost:8888
spring.profiles.active=prod
REST controller of the client app:
#RefreshScope
#RestController
public class EchoController {
#Value("${service.image.hello}")
private String hello;
#RequestMapping("/show")
#ResponseBody
public String showConfig() {
return new StringBuilder()
.append("image-service: ").append(hello)
.toString();
}
}
Result:
image-service: image-common
Log from client app:
c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
c.c.c.ConfigServicePropertySourceLocator : Located environment: name=image-service, profiles=[default], label=null, version=fb78fe4429a33c266d6eb07a9e482b8fd264dd7c, state=null
b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='configService', propertySources=[MapPropertySource {name='configClient'}, MapPropertySource {name='https://bitbucket.org/.../...-configuration.git/image-service.properties'}]}
c.r.d.springconfig.client.Application : The following profiles are active: prod
ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext#7ccdc9e7: startup date [Sun Sep 23 22:31:55 CEST 2018]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext#7fd618b5
o.s.cloud.context.scope.GenericScope : BeanFactory id=51790958-c0a2-3d61-91d6-a8dcd5395c7e
trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$bf37cae6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8889 (http)
It seems I missed something but I can not see what.
I have a SpringBatch project where I want to catch an exception thrown when the application cannot find the datasource. I've already by-passed this, so it will use 'in memory DAO objects' instead of tables.. but it still throws an exception when datasource is not found.
I want to catch that exception and throw my own error code, but I have no idea where the try/catch block must be placed.
Here is a piece of the error log:
2016-11-24 09:25:36.171 INFO 36770 --- [main] c.d.d.e.config.ReaderConfiguration : Configuring FlatFileItemReader for [MAP]
2016-11-24 09:25:51.664 ERROR 36770 --- [main] o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool.
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host [***], port 1433 has failed. Error: "null. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190) ~[sqljdbc4.jar:na]
This is overridden to bypass table creation. Also, I use two datasources and this class needed to be here anyway.
#Component
public class MyBatchConfigurer extends DefaultBatchConfigurer {
//Spring batch needs this in order to allow to use more than one datasource
#Override
public JobRepository createJobRepository() throws Exception {
return new MapJobRepositoryFactoryBean().getObject();
}
}
To be noted that I even tried to place try/catch on "the main" method.. and it still throws the exception above.. and then gets to the breakpoint inside catch.
Also, I tried creating the datasource manually.. but to no avail. Even more, ApplicationEvent doesn't seem to work either.
This is a log where datasource is found:
2016-10-25 16:05:13 [main] INFO c.d.d.e.config.CompanyConfiguration - Configure FlatFileItemReader for [IW]
2016-10-25 16:05:13 [main] INFO o.s.jdbc.datasource.init.ScriptUtils - Executing SQL script from class path resource [org/springframework/batch/core/schema-sqlserver.sql]
2016-10-25 16:05:13 [main] INFO o.s.jdbc.datasource.init.ScriptUtils - Executed SQL script from class path resource [org/springframework/batch/core/schema-sqlserver.sql] in 49 ms.
2016-10-25 16:05:13 [main] INFO o.s.b.f.config.PropertiesFactoryBean - Loading properties file from URL [jar:file:/home/etl/d-d/d-e-1.0.4-SNAPSHOT.jar!/lib/spring-integration-core-4.2.5.RELEASE.jar!/META-INF/spring.integration.default.properties]