On Monday, August 25, 2014, Dimuthu Leelarathne <dimut...@wso2.com> wrote:
> Hi Amila, > > It is not a standalone product. Please read my mail carefully, it says > what each product should do. In the offline chat I even said what should > AFTenantMgtListner should contain. > Right. What you have said works for AF. We, as the cloud, have more concerns. What I have summarized is what is going to be implemented and works for the entire cloud. > > thanks, > dimuthu > > > > On Mon, Aug 25, 2014 at 9:20 PM, Amila Maha Arachchi <ami...@wso2.com > <javascript:_e(%7B%7D,'cvml','ami...@wso2.com');>> wrote: > >> >> >> On Monday, August 25, 2014, Dimuthu Leelarathne <dimut...@wso2.com >> <javascript:_e(%7B%7D,'cvml','dimut...@wso2.com');>> wrote: >> >>> Hi Amila, >>> >>> You are only repeating what I have said in my previous mail. >>> >> >> Well... That only contained a solution for a standalone product. To make >> this working for both standalone product and a distributed deployment we >> had to discuss for two hours and the missing pieces in your mail can be >> found in my one. >> >> Intention of my mail was to provide the final summary for others >> information. >> >>> >>> thanks, >>> dimuthu >>> >>> >>> On Mon, Aug 25, 2014 at 7:22 PM, Amila Maha Arachchi <ami...@wso2.com> >>> wrote: >>> >>>> Following is the finally agreed approach. >>>> >>>> 1. TenantMgtListener will have a preDelete() method. >>>> 2. deleteTenant() of TenantMgtAdminService will notify the listeners at >>>> the beginning. >>>> 3. We need to set a flag whether to completely remove the tenant or not >>>> (i.e. delete from registry and LDAP). If this flag is set to true, >>>> deleteTenant() remove the tenant completely. If not, it will just invoke >>>> the listeners and return. >>>> >>>> With 1,2,3, any standalone product will be able to support tenant >>>> deletion properly and it will be product teams' responsibility to cleanup >>>> everything properly by implementing the preDelete() method. >>>> >>>> But, for a distributed deployment such as WSO2 Cloud, we need to >>>> coordinate with multiple clouds and, iff all the clouds has done the >>>> cleanup only, we can delete the tenant permanently. For this, we will be >>>> writing a BPEL which will invoke the deleteTenant() of the available clouds >>>> (i.e. AF and APIM). Both above products will have the previously mentioned >>>> flag set to false. For the cloud deployment, we'll have a separate carbon >>>> server with the flag set to true and once its deleteTenant() is invoked, >>>> tenant will be deleted completely. >>>> >>>> Azeez, we would like to know your feedback too on this. >>>> >>>> Regards, >>>> Amila. >>>> >>>> >>>> On Sat, Aug 23, 2014 at 8:40 PM, Amila Maha Arachchi <ami...@wso2.com> >>>> wrote: >>>> >>>>> >>>>> >>>>> >>>>> On Sat, Aug 23, 2014 at 3:12 AM, Dimuthu Leelarathne < >>>>> dimut...@wso2.com> wrote: >>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Fri, Aug 22, 2014 at 10:01 PM, Godwin Amila Shrimal < >>>>>> god...@wso2.com> wrote: >>>>>> >>>>>>> >>>>>>> Hi Amila, >>>>>>> >>>>>>> >>>>>>> As per the discussion we had with Dimuthu and AF team. Listed below >>>>>>> the decision made to implement this. >>>>>>> >>>>>>> >>>>>>> 1. Add onDelete() and onPreDelete() methods to TenantMgtListener >>>>>>> interface >>>>>>> >>>>>> >>>>>> Add the onPreDelete() method to TenantMgtListener interface and call >>>>>> that method from the deleteTenant of the TenantMgtService. I don't see >>>>>> the >>>>>> point of adding onDelete method to TenantMgtListenter interface >>>>>> currently. >>>>>> >>>>> >>>>> I see couple of problems with this approach. >>>>> >>>>> 1. Since this involved an interface change, we are going to get >>>>> trouble when using this with existing products in our setup. We'll have to >>>>> patch their tenant.mgt code and all implementations of the listener. >>>>> 2. Even if we add the onPreDelete method, it will only execute the >>>>> implementation classes in that jvm only. So, if I call the deleteTenant >>>>> method in AF, it won't affect other products such as SS, Jenkins AS, >>>>> Stratos Manager. This will end of tenants' bits and pieces remaining in >>>>> other products even after we delete the tenant. >>>>> >>>>> Do we have a solution for this? >>>>> >>>>>> >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>> 2. Implement those methods in AppFactoryTenantMgtListener as we >>>>>>> discussed. >>>>>>> >>>>>>> 3. We don’t use any BPEL implementation and use the existing >>>>>>> listeners to implement this >>>>>>> >>>>>>> 4. Future Cloud products can implement the onDelete() and >>>>>>> onPreDelete() methods in TenantMgtListener interface >>>>>>> >>>>>>> >>>>>>> >>>>>> thanks, >>>>>> dimuthu >>>>>> >>>>>> >>>>>> >>>>>>> Please share your feedback on this. >>>>>>> >>>>>>> Thanks >>>>>>> Godwin >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Fri, Aug 22, 2014 at 6:09 PM, Amila Maha Arachchi < >>>>>>> ami...@wso2.com> wrote: >>>>>>> >>>>>>>> +1 for preOnDelete method. Actually there is a place which has this >>>>>>>> kind of an implementation. Thats the user.core. So, we can learn from >>>>>>>> it >>>>>>>> and do this implementation. >>>>>>>> >>>>>>>> BTW, >>>>>>>> >>>>>>>> Mahesh, can you post what did you agreed online+offline? >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Aug 22, 2014 at 4:51 PM, Mahesh Chinthaka <mahe...@wso2.com >>>>>>>> > wrote: >>>>>>>> >>>>>>>>> Thanks Dimuthu, Danushka & Ajanthan for your feedback. >>>>>>>>> We will do this with the approach discussed online+offline. >>>>>>>>> >>>>>>>>> >>>>>>>>> On Fri, Aug 22, 2014 at 10:59 AM, Danushka Fernando < >>>>>>>>> danush...@wso2.com> wrote: >>>>>>>>> >>>>>>>>>> Hi >>>>>>>>>> +1 for the OnPreDelete concept. But the thing is we don't have >>>>>>>>>> this Pre and Post events anywhere in platform. I think that's >>>>>>>>>> something we >>>>>>>>>> should consider about. WDYT? >>>>>>>>>> >>>>>>>>>> Thanks & Regards >>>>>>>>>> Danushka Fernando >>>>>>>>>> Software Engineer >>>>>>>>>> WSO2 inc. http://wso2.com/ >>>>>>>>>> Mobile : +94716332729 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Fri, Aug 22, 2014 at 9:14 AM, Dimuthu Leelarathne < >>>>>>>>>> dimut...@wso2.com> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Mahesh all, >>>>>>>>>>> >>>>>>>>>>> Lets consider Carbon Platform aspect first. >>>>>>>>>>> >>>>>>>>>>> Before we remove tenant from user core and registry, we have to >>>>>>>>>>> delete it from all other places. So +1 for the interface that would >>>>>>>>>>> allow >>>>>>>>>>> different product teams to clean up their cleanup process, but here >>>>>>>>>>> is what >>>>>>>>>>> I recommend, >>>>>>>>>>> >>>>>>>>>>> We need a method call "onPreDelete()" on TenantMgtListener. This >>>>>>>>>>> is to allow all product teams to implement it. So the first rule of >>>>>>>>>>> thumb >>>>>>>>>>> is, if any product is moving to cloud they must implement this >>>>>>>>>>> method and >>>>>>>>>>> prove that they clean up the tenant before they move to WSO2Cloud. >>>>>>>>>>> >>>>>>>>>>> So basically, in tenant.core what you have to do is call all >>>>>>>>>>> OSGi registered TenantMgtListener's onPreDelete(), and after that >>>>>>>>>>> delete >>>>>>>>>>> from registry and finally user.core. >>>>>>>>>>> >>>>>>>>>>> That would be the most elegant and extensible fix for platform. >>>>>>>>>>> >>>>>>>>>>> Now we come to AF as a product/solution. We have to implement >>>>>>>>>>> onPreDelete() method. So we as a product team should decide whether >>>>>>>>>>> we are >>>>>>>>>>> going to implement it from BPEL or not. So as a product in order to >>>>>>>>>>> be >>>>>>>>>>> WSO2Cloud friendly we have to implement onPreDelete() method. From >>>>>>>>>>> what I >>>>>>>>>>> feel, I believe the way to do is code + BPEL. >>>>>>>>>>> >>>>>>>>>>> thanks, >>>>>>>>>>> dimuthu >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Fri, Aug 22, 2014 at 7:26 AM, Ajanthan Balachandran < >>>>>>>>>>> ajant...@wso2.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Fri, Aug 22, 2014 at 5:48 AM, Danushka Fernando < >>>>>>>>>>>> danush...@wso2.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi Ajanthan >>>>>>>>>>>>> Problem with OnDelete is it is called after tenant deleted >>>>>>>>>>>>> (After deleting userstore and registry). But we need to cleanup >>>>>>>>>>>>> before that >>>>>>>>>>>>> otherwise we cannot call admin services since tenant is not >>>>>>>>>>>>> there. As per I >>>>>>>>>>>>> mentioned in the previous thread we need to call this at a >>>>>>>>>>>>> OnPreDelete. >>>>>>>>>>>>> >>>>>>>>>>>> IMO OnDelete method should be called as first step. >>>>>>>>>>>> >>>>>>>>>>>>> @Mahesh : I think you have missed delete applications step. >>>>>>>>>>>>> And delete applications step would Issue tracker details as well >>>>>>>>>>>>> I guess. @ >>>>>>>>>>>>> Ajanthan : Correct me if I am wrong. >>>>>>>>>>>>> >>>>>>>>>>>> Looping through each applications and deleting will not be a >>>>>>>>>>>> salable solution. >>>>>>>>>>>> >>>>>>>>>>>>> Thanks & Regards >>>>>>>>>>>>> Danushka Fernando >>>>>>>>>>>>> Software Engineer >>>>>>>>>>>>> WSO2 inc. http://wso2.com/ >>>>>>>>>>>>> Mobile : +94716332729 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Aug 21, 2014 at 8:46 PM, Ajanthan Balachandran < >>>>>>>>>>>>> ajant...@wso2.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, Aug 21, 2014 at 8:24 PM, Mahesh Chinthaka < >>>>>>>>>>>>>> mahe...@wso2.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Everyone, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> We are working on the Training Project -[Cloud] Tenant >>>>>>>>>>>>>>> deletion code/script for cloud - >>>>>>>>>>>>>>> https://redmine.wso2.com/issues/3121. Listed below the >>>>>>>>>>>>>>> workflow of the tenant deletion process in the App Cloud as we >>>>>>>>>>>>>>> identified. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 1. Undeploy Jenkins web app from application server >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2. Delete Git repository (use gitblit api to delete repo in >>>>>>>>>>>>>>> Git) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 3. Unsubscribe Stratos using Stratos Rest Services >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 4. Check database created by RSSAdmin and delete them >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 5. Perform TenantMgtAdminService deleteTenant operation >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> - >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> i. Delete Billing data >>>>>>>>>>>>>>> ii. Delete Tenant Registration Data (Ex. >>>>>>>>>>>>>>> REG_CLUSTER_LOCK, REG_LOG) >>>>>>>>>>>>>>> iii. Delete Tenant User management data (Ex. >>>>>>>>>>>>>>> UM_USER_PERMISSION, UM_USER) >>>>>>>>>>>>>>> iv. Remove Tenant information from cache >>>>>>>>>>>>>>> v. Delete UM_TENANT table >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Don't you need to cleanup issue tracker? >>>>>>>>>>>>>> >>>>>>>>>>>>>>> As per the analysis there are two solutions we have >>>>>>>>>>>>>>> identified to implement this , such as BPEL and Carbon >>>>>>>>>>>>>>> Component. We >>>>>>>>>>>>>>> thought of going for a *carbon component* implementation >>>>>>>>>>>>>>> rather than using a* BPEL* due to following reasons. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 1. Plugging a Carbon Component will give more extensibility >>>>>>>>>>>>>>> to implement Tenant Deletion operation in future Cloud base >>>>>>>>>>>>>>> products >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2. If we used a BPEL we will have to reconstruct at each >>>>>>>>>>>>>>> time when we meet a new requirement (ex: esb cloud integration). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Proposed Solution >>>>>>>>>>>>>>> >>>>>>>>>>>>>> Why can't you use existing TenantMgtListener and add >>>>>>>>>>>>>> onDelete method.It also has ListenerOrder and every >>>>>>>>>>>>>> implementation should be registered as OSGI service. >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 1. Create an abstraction for delete operation >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> public interface TenantDeletion{ >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> public void onDeletion(); >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2. Implement TenantDeletion for each operations >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> public class JenkinsAppUndeployer implements TenantDeletion{ >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> public void onDeletion(){ >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> //Implementation of the JenkinsApp undeploy process >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 3. Use a configuration file to maintain the execution order >>>>>>>>>>>>>>> which help to dynamically add new requirement >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> <ExecutionOrder> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> <class >>>>>>>>>>>>>>> name=”org.wso2.cloud.tenant.JenkinsAppUndeployer”></class> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> <class >>>>>>>>>>>>>>> name=”org.wso2.cloud.tenant.GitRepoRemover”></class> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> <class name=”org.wso2.cloud.tenant.XXXXXX”></class> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> </ExecutionOrder> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> We are looking for a feedback on this to move forward with >>>>>>>>>>>>>>> selected design. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> Mahesh Chinthaka >>>>>>>>>>>>>>> Software Engineer , WSO2. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Phone : (+94) 71 63 63 083 >>>>>>>>>>>>>>> Email : mahe...@wso2.com >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> ajanthan >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> Ajanthan Balachandiran >>>>>>>>>>>>>> Senior Software Engineer; >>>>>>>>>>>>>> Solutions Technologies Team ;WSO2, Inc.; http://wso2.com/ >>>>>>>>>>>>>> >>>>>>>>>>>>>> email: ajanthan <http://goog_595075977>@wso2.com; cell: >>>>>>>>>>>>>> +94775581497 >>>>>>>>>>>>>> blog: http://bkayts.blogspot.com/ >>>>>>>>>>>>>> >>>>>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>>>>> >>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> ajanthan >>>>>>>>>>>> -- >>>>>>>>>>>> Ajanthan Balachandiran >>>>>>>>>>>> Senior Software Engineer; >>>>>>>>>>>> Solutions Technologies Team ;WSO2, Inc.; http://wso2.com/ >>>>>>>>>>>> >>>>>>>>>>>> email: ajanthan <http://goog_595075977>@wso2.com; cell: >>>>>>>>>>>> +94775581497 >>>>>>>>>>>> blog: http://bkayts.blogspot.com/ >>>>>>>>>>>> >>>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Dimuthu Leelarathne >>>>>>>>>>> Architect & Product Lead of App Factory >>>>>>>>>>> >>>>>>>>>>> WSO2, Inc. (http://wso2.com) >>>>>>>>>>> email: dimut...@wso2.com >>>>>>>>>>> Mobile : 0773661935 >>>>>>>>>>> >>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Architecture mailing list >>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Architecture mailing list >>>>>>>>>> Architecture@wso2.org >>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Mahesh Chinthaka >>>>>>>>> Software Engineer , WSO2. >>>>>>>>> >>>>>>>>> Phone : (+94) 71 63 63 083 >>>>>>>>> Email : mahe...@wso2.com >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Architecture mailing list >>>>>>>>> Architecture@wso2.org >>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> *Amila Maharachchi* >>>>>>>> Senior Technical Lead >>>>>>>> WSO2, Inc.; http://wso2.com >>>>>>>> >>>>>>>> Blog: http://maharachchi.blogspot.com >>>>>>>> Mobile: +94719371446 >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Architecture mailing list >>>>>>>> Architecture@wso2.org >>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> *Godwin Amila Shrimal* >>>>>>> Senior Software Engineer >>>>>>> WSO2 Inc.; http://wso2.com >>>>>>> lean.enterprise.middleware >>>>>>> >>>>>>> mobile: *+94772264165* >>>>>>> linkedin: *http://lnkd.in/KUum6D <http://lnkd.in/KUum6D>* >>>>>>> twitter: https://twitter.com/godwinamila >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Dimuthu Leelarathne >>>>>> Architect & Product Lead of App Factory >>>>>> >>>>>> WSO2, Inc. (http://wso2.com) >>>>>> email: dimut...@wso2.com >>>>>> Mobile : 0773661935 >>>>>> >>>>>> Lean . Enterprise . Middleware >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> *Amila Maharachchi* >>>>> Senior Technical Lead >>>>> WSO2, Inc.; http://wso2.com >>>>> >>>>> Blog: http://maharachchi.blogspot.com >>>>> Mobile: +94719371446 >>>>> >>>>> >>>> >>>> >>>> -- >>>> *Amila Maharachchi* >>>> Senior Technical Lead >>>> WSO2, Inc.; http://wso2.com >>>> >>>> Blog: http://maharachchi.blogspot.com >>>> Mobile: +94719371446 >>>> >>>> >>> >>> >>> -- >>> Dimuthu Leelarathne >>> Architect & Product Lead of App Factory >>> >>> WSO2, Inc. (http://wso2.com) >>> email: dimut...@wso2.com >>> Mobile : 0773661935 >>> >>> Lean . Enterprise . Middleware >>> >> >> >> -- >> *Amila Maharachchi* >> Senior Technical Lead >> WSO2, Inc.; http://wso2.com >> >> Blog: http://maharachchi.blogspot.com >> Mobile: +94719371446 >> >> >> > > > -- > Dimuthu Leelarathne > Architect & Product Lead of App Factory > > WSO2, Inc. (http://wso2.com) > email: dimut...@wso2.com > <javascript:_e(%7B%7D,'cvml','dimut...@wso2.com');> > Mobile : 0773661935 > > Lean . Enterprise . Middleware > -- *Amila Maharachchi* Senior Technical Lead WSO2, Inc.; http://wso2.com Blog: http://maharachchi.blogspot.com Mobile: +94719371446
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture