Cloned from https://issues.jboss.org/browse/ENTESB-3811 Suppose we have two SwitchYard applications, 'switchyard-example1' and 'switchyard-example2'. 'switchyard-example1' (consumer) invokes 'switchyard-example2' (provider) via SCA binding. 'switchyard-example2' has an exchange intercepter 'SimpleInterceptor'. When we deploy 'switchyard-example2' and 'switchyard-example1' in sequence, 'SimpleInterceptor' doesn't work. The log shows: [example1.ConsumerServiceBean] ============================================================ [example2.ProviderServiceBean] Received: ConsumerServiceBean [example1.ConsumerServiceBean] Hello, ConsumerServiceBean! [example1.ConsumerServiceBean] ============================================================ Then redeploying 'switchyard-example2' alone, we see it starts to work: [example1.ConsumerServiceBean] ============================================================ [example2.SimpleInterceptor] ***** Before: ProviderService -> ProviderService [example2.ProviderServiceBean] Received: ConsumerServiceBean [example2.SimpleInterceptor] ***** After: ProviderService <- ProviderService [example1.ConsumerServiceBean] Hello, ConsumerServiceBean! [example1.ConsumerServiceBean] ============================================================ But then redeploying 'switchyard-example1' alone this time, we now see it disabled again: [example1.ConsumerServiceBean] ============================================================ [example2.ProviderServiceBean] Received: ConsumerServiceBean [example1.ConsumerServiceBean] Hello, ConsumerServiceBean! [example1.ConsumerServiceBean] ============================================================ Interestingly, if we redeploy 'switchyard-example1' but invoke 'switchyard-example2' in some other way (e.g. remote client invocation using 'HttpInvoker') before 'switchyard-example1' starts to invoke 'switchyard-example2', the interceptor remains working. This observation makes me suspect that a local SCA invocation from a newly deployed application somehow overrides the bean registry with its thread local context.
Backported changes to core 1.x branch.
VERIFIED with reproducers cd switchyard-example2 mvn clean package jboss-as:deploy cd ../switchyard-example1 mvn clean package jboss-as:deploy 23:17:45,013 INFO [com.example.switchyard.example2.SimpleInterceptor] (DefaultQuartzScheduler-camel-5_Worker-3) * Before: Provider -> ProviderService 23:17:45,014 INFO [com.example.switchyard.example2.ProviderServiceBean] (DefaultQuartzScheduler-camel-5_Worker-3) Received: ConsumerServiceBean 23:17:45,016 INFO [com.example.switchyard.example2.SimpleInterceptor] (DefaultQuartzScheduler-camel-5_Worker-3) * After: Provider <- ProviderService 23:17:45,022 INFO [com.example.switchyard.example1.ConsumerServiceBean] (DefaultQuartzScheduler-camel-5_Worker-3) Hello, ConsumerServiceBean! 23:17:45,023 INFO [com.example.switchyard.example1.ConsumerServiceBean] (DefaultQuartzScheduler-camel-5_Worker-3) ============================================================