I am just coming up to speed on the use of Features in CXF and I like the concept of having a single class responsible for managing all the pieces of a particular behaviour. What would make this feature even better would be to create the infrastructure to manage these features via JMX. So for instance if I had a series of interceptors that comprised a performance metrics feature, I would like to be able to toggle this capability on an off at runtime. Currently the AbstractFeature class does not have the appropriate life-cycle methods for doing this. It would be good if there was a toggleFeature() method or a turnOffFeature() method. This might need to be accompanied by a reinitialize() method as well.
In addition, it would be nice if a user could dynamically deploy a feature at runtime even if it had not previously been deployed. The key to doing this would be to be able to get access the Spring ApplicationContext and pass it a Spring configuration file, url, etc. in order to create the Feature. Once the user had a handle to the feature they could initialize it with the desired InterceptorProvider. On a slight tangent, there have been many times that I would have liked to have access the the Spring ApplicationContext at runtime. What about making the Spring ApplicationContext available via a Bus extensor? Also from a management perspective it would be nice to be able to query what Features were currently deployed to an InterceptorProvidor. This might require adding a getName() method to the AbstractFeature class in order for a user to identify the particular desired feature. Regards, Seumas
