Got lifecycle working.
Are any of the lifecycle methods (create, start, stop, destroy) optional?
All of the lifecycle calls are optional in the legacy jmx service contract as an mbean is wrapped in a proxy that only delegates the lifecycle calls if there is a mapping. The underlying bean may not have a corresponding lifecycle method, or it may map the method to another name (start mapped to go for example).
For the moment I'll just implement it with the 4 basic methods being optional.