On Sep 4, 2005, at 7:10 PM, Dain Sundstrom wrote:

On Sep 4, 2005, at 6:52 PM, Aaron Mulder wrote:

On Sun, 4 Sep 2005, Dain Sundstrom wrote:

    But what if there are two containers named MyJettyContainer, one
in Configuration JettyAdminStuff and one in Configuration
JettyUserStuff?


The J2EEModule property above is the configuration name, so you would
have two unique names one containing the property
J2EEModule=JettyAdminStuff and one containing the property
J2EEModule=JettyUserStuff.


    This only works if the container and connector are in the same
Configuration, right?  Because you don't have a separate
"WebContainerJ2EEModule=Foo". I guess I'm fine if we establish that as a convention (and it's how the console currently behaves), but I don't know
how we'd enforce if it people start writing their own plans.

That is an excellent point. The JSR77 model is based on containment, so in this case the web container would "contain" (own) the connector. Using the JSR77 rules, if the web container name was:

geronimo.server: j2eeType=WebContainer,name=MyJettyContainer,J2EEModule=org/apache/ geronimo/Server,J2EEApplication=null,J2EEServer=geronimo

The web connector would be:

geronimo.server: j2eeType=WebConnector,name=MyConnector,WebContainer=MyJettyContainer,J2 EEModule=org/apache/geronimo/ Server,J2EEApplication=null,J2EEServer=geronimo

This is regardless of which configuration the connector was declared the name must be as declared above to achieve containment. The name building rules are specified in JSR77.3.1.1 Attribute Detail. I don't think this is how we are currently building object names. If we wanted to fully use the JSR77 rules for GBeans, I think we need to add a parent="parentName" attribute to the gbean element in our configuration xml documents. I'm thinking of something like this:

<gbean name="JettyContainer" class="org.apache.geronimo.jetty.JettyContainerImpl"/> <gbean name="JettyWebConnector" parent="JettyContainer" class="org.apache.geronimo.jetty.connector.HTTPConnector"/>

I think this might work, but it is a pretty big change to our naming system.

To my mind there are 2 concepts of containment that happen to be the same for most j2ee components, but not for gbeans:

1. which deployment unit (app, module) describes the component
2. which functional component "owns" the component.

For say a servlet, all the servlets in a j2ee web app have to be deployed in that web app, so the containment relationships between the web module (which we are modeling with the WebAppContext gbean) and servlets are the same in both these senses.

There are several places the current system breaks down to some extent, including:

"link" components such as web filter mappings and web service "links" which have 2 equal parents useless components required by jsr-77 such as application gbeans and resource module gbeans. admin object gbeans that are not really tied to any particular resource adapter instance but only to the classes they use.

Anyway, right now we construct non-j2ee gbean names based on the configuration they are defined in. This has no necessary connection to the "containment hierarchy" for things like web container/web connector. We have 3 choices:

1. keep current system, only track configuration name in the gbean name
2. track both configuration name and functional hierarchy in gbean name
3. track only functional hierarchy in gbean name, dropping the configuration information.

I think I'd prefer (2) but I'd really like to see a fairly extensive set of examples worked out before deciding. I don't expect to have time to do this for several days.

thanks
david jencks


-dain


Reply via email to