I am trying to implement the Hot deployment and Hot update of the synapse artifacts, and realized that there are some issues; I first thought of writing our own deployment behaviour because we wanted some conditions to be checked on the hot update case undeployment of the artifacts.
Let me first describe how Hot update works in axis2, correct me if I am wrong but from what I have figured out so far, axis2 repository listener task calls unDeploy method of the deployer implementation first and then calls the deploy method again to deploy the artifact with the changes.
So this approach has two issues,
I propose adding a update method to the Deployer interface or passing the state as an argument, we could use the DeploymentFileData class to provide the operation, but that doesn't resolve the issue because the undeploy method has a String file name as its argument, so this canot be fixed without an API change in the deployer implementation.
- There is a considerable downtime of the artifact which is being hot updated
- There is no means of knowing the case where the undeploy method being called, for example synapse needs to have a main sequence for it to operate properly, so synapse has to force the user to not to undeploy the main sequence while it should allow the user to hot update it.
Being said the above I can implement this in Synapse, but since we had huge debates earlier on writing stuff on synapse replacing axis2 stuff just because they do not fit into synapse without letting the axis2 community know about those, I thought of proposing this to the axis2 as well.
Or may be I am missign something which can resolve the above 2 issues, in which case please be kind enough to point me to the behaviour that I should be using.. :-)
Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
WSO2 Inc.; http://wso2.org
email: email@example.com; cell: +94 77 341 3097