[
https://issues.redhat.com/browse/ISPN-6496?page=com.atlassian.jira.plugin...
]
Dan Berindei closed ISPN-6496.
------------------------------
Resolution: Won't Do
The reason the interceptor is not started is not because it's added after the cache
has started, but because it is not registered in the component registry.
You can use {{cache.getAdvancedCache().getComponentRegistry().registerComponent(new
LocalIndexInterceptor(), LocalIndexInterceptor.class)}}, and both the injection and
lifecycle methods will be invoked.
Custom interceptor's start method not called if interceptor added
via AdvancedCache
-----------------------------------------------------------------------------------
Key: ISPN-6496
URL:
https://issues.redhat.com/browse/ISPN-6496
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 8.1.2.Final
Reporter: Jiří Holuša
Priority: Major
Suppose I want to add trivial custom interceptor like this:
{code}
public class LocalIndexInterceptor extends BaseCustomInterceptor {
@Override
protected void start() {
System.out.println("Start method executed");
}
// override some command methods here
}
{code}
When I attach the interceptor via:
{code}
cache.getAdvancedCache().addInterceptor(new LocalIndexInterceptor(), 0);
{code}
the start method never gets called and nothing is printed. When I add the interceptor
during the cache configuration (via
ConfigurationBuilder.customInterceptor().addInterceptor().interceptor()), everything works
fine and the start method is executed.
I noticed at the @Start annotation Javadoc: "Method level annotation that indicates
a (no-param) method to be called on a component registered in the ComponentRegistry when
the cache starts.", so I get it that it's not executed since the cache is already
started. However, without the start() method being executed, I cannot access cache
additional object (DistributionManager, RpcManager) in the interceptor, which might be
needed (and I needed it :) ).
--
This message was sent by Atlassian Jira
(v7.13.8#713008)