So a user has a scenario that could 

M1 <-Pa-> M4 <-Pd->  |
                     *
M2 <-Pc-> M5 <-Pd->  M7
                     *
M3 <-Pb-> M6 <-Pe->  |

Px = protocol x with seperate contract_x.jar for interfaces
Mn = mbean n that depends on one or more protocols

whenever a protocol contract jar for which mbeans 1..m depend
on is deployed, mbeans 1..m need to be redeployed. This could
potentially be addressed by extending the current dependency
notion to optionally support redeployment, not just stopping
of the service.

However, in general when contract_x.jar is redeployed, its
not sufficient to simply redeploy the mbeans using the contract,
since at least one of them also needs to be upgraded to use the
modified contract. It seems as though the behavior needed is
that if the contract_x.jar is redeployed, all mbeans depending
on the contract are undeployed, and are not redeployed until
their deployment jar is updated by actually being changed or
just touched.

So the model seems to require an alternate hot deployment service
that has the notion of levels and compartments. At a given level
services are generally independent, but can be made dependent
by lifecycle contract as can be done now. The level below has
a deployment level dependency on the level above in that a redeployment
of a higher level compartment causes an undeploy of the services
depending on that compartment.

New issues this raises:
- The directory structure will not correspond to the levels in general
because a service an mbean can be using multiple protocols, and thus
depend on multiple compartments in the level above. So there has to
be a new dependency description mechanism to say service S1 depends on
compartment level L1a in terms of redeployment. This is going to have
to be a representation of a directed graph describing the inter-level
and intra-level dependencies.
- Updating a contract_x.jar deploys the dependent services and these
remain updeployed until explicitly redeployed or touched. This can't
result in exceptions, but could result in services not being redeployed
if the admin forgets.
- What happens to the upstream services? So in the above diagram,
contract_Pd.jar
is redeployed which affects M4, M5, M7 by type, and M1, M2, and M6 due
to service
availability of M7. M4, M5, and M7 must be redeployed, M1, M2, and M6
simply have
to wait for M4, M5, and M7 respectively. What support is jboss providing
vs
what do you have to code to make this work is the question.

In general this issue raises an issue that has come up a few times due
to
the fact that dependency does not have anything to do with redeployment,
even
though dependency may require redeployment if type system involved in
the
dependency changes. Our service dependency needs to expand to support
the
possibility of dependency to the redeployment level.

xxxxxxxxxxxxxxxxxxxxxxxx
Scott Stark
Chief Technology Officer
JBoss Group, LLC
xxxxxxxxxxxxxxxxxxxxxxxx



-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to