Given the interactions between CacheIgnoreManager and AbstractProtocolServer it seems that CacheIgnoreManager should be a global component in the registry of the EmbeddedCacheManager sitting behind the AbstractProtocolServer. It should be looked up from there, or better injected, rather than being received in ProtocolServer.start method. The start method also has an overloaded version that does not take a CacheIgnoreManager to support tests the do not need it. This lack of orthogonality is annoyoing.
Another aspect to refactor: the startInternal method receives parametters that it assigns to fields. It seems that this should have been done already in the start method. That would get rid of some clunky hacks and some comments/excuses for the said hacks.