This is a bug; I'll file a JIRA tomorrow. The correct thing to do is to use createService(), startService(), etc. But the WARN that gets logged in postRegister() is a bug. Fairly harmless though; only harm is the spurious WARN. The method actually does what it needs to.
A workaround, if you don't care about the cache and its interceptors being visible in JMX, is to configure the cache with property UseInterceptorMBeans set to false.