"This chapter contains the models and metamodels that specify the format, semantics and relationship of the managed objects required by all compliant implementations of this specification." [JSR77 pp 19]
By making these (final) concrete classes, you are dictating the implementation. However, the specification is deliberately vague here to allow for different vendor implementations of this model. Even within Geronimo, there could be different implementations - for example, different WebModules from Jetty and Tomcat, different JMSResources from OpenJMS vs Geronimo's. You have also defined the implementation of the relationships between the managed objects - for example, the implementation of J2EEDomainImpl.getServers(). This requires the kernel to ensure that all relationships are accurately reflected in these objects rather than having the implementation here determine that from the true component relationship. Don't get me wrong, I appreciate your contribution here but I think it would be better to define the interfaces across the board. Thanks Jeremy > >These should be interface definitions rather than concrete > classes - there > >could be a variety of classes implementing them. > > I diagree with this one. It is nice to provide an interface but not > required. However, I have refactored the proposed patch. > > >Secondly, there should not need to be any references to > javax.management in > >them - the intention is that this model can be used by non-Java > clients and > >so all the attributes should be simple types; for example, the > spec defines > >the OBJECT_NAME type to be a string. >
