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