Yes, the changes will probably need to be made in the platform level not in the appfactory customizations.
On Tue, Mar 10, 2015 at 8:00 PM, Mahesh Chinthaka <[email protected]> wrote: > Hi all, > According to the findings up to now I presume that, > whenever or whoever tries to validate the request by checking whether its > coming from a webapp or not will face this issue. > So this needs to be fixed I think (from the platform level). > WDYT ? > > > On Tue, Mar 10, 2015 at 7:45 PM, Mahesh Chinthaka <[email protected]> > wrote: > >> Hi Kasun, >> Yes sure, I will debug the flow and see. >> >> Thanks >> >> On Tue, Mar 10, 2015 at 7:44 PM, Mahesh Chinthaka <[email protected]> >> wrote: >> >>> I talked with KasunG and he said that this might be due to a problem in >>> the process we load the webapp and check whether its loaded. I have >>> explained in below sketch as I understood it. >>> @kasunG please correct me if I've misunderstood anything here. >>> >>> >>> According to the above flow, if the webapp is unloaded at the time of >>> request comes, this kind of a issue can occur. >>> >>> On Tue, Mar 10, 2015 at 7:18 PM, Mahesh Chinthaka <[email protected]> >>> wrote: >>> >>>> Hi all, >>>> I think I found the root cause here. >>>> >>>> Actually there are two scenarios, >>>> scenario1 - webapp is loaded >>>> scenario2 - webapp is unloaded >>>> >>>> (Reason for getting this reproduced when the tenant is unloaded; is >>>> that when tenant is unloaded , the webapp gets unloaded too.But actual >>>> effect is unloading the webapp) >>>> >>>> Simply the cause is InitialContext not being set properly. >>>> >>>> In *ApplicationAwareCarbonJavaURLContextFactory* class, before we get >>>> the initial context we check whether the request coming from a webapp. >>>> If yes we return the *CarbonServerSelectorContext* else we just send >>>> the *NamingContext.* >>>> We have used following code to check whether the request is coming from >>>> a webapp or not, As I can see its checking with class loader. >>>> >>>> *if (ContextBindings.isClassLoaderBound())* >>>> >>>> when the webapp is unloaded above code returns false. >>>> >>>> >>>> values of contexts are as follows, >>>> *CarbonServerSelectorContext* - >>>> org.wso2.carbon.appfactory.ext.jndi.Context.CarbonServerSelectorContext >>>> *NamingContext* - org.apache.naming.NamingContext >>>> >>>> Our datasource is available only in *CarbonServerSelectorContext. *So >>>> whenever the *NamingContext* is returned , datasource appears to be >>>> null. So application is unable to show data. Thats pretty much the case. >>>> >>>> I have one question. >>>> >>>> *Is there any other way to check the request whether its coming from a >>>> webapp or not ?* If yes we can easily solve this issue. >>>> >>>> >>>> >>>> >>>> >>>> On Mon, Mar 9, 2015 at 12:12 PM, Mahesh Chinthaka <[email protected]> >>>> wrote: >>>> >>>>> Hi Harsha, >>>>> >>>>> Frankly I dont have much idea why its happenning like that, and this >>>>> happens in that way after the fix for APPFAC -2195 [1] >>>>> >>>>> This is the exact code segment im talking about. >>>>> >>>>> >>>>> try { >>>>> context.startTenantFlow(); >>>>> >>>>> >>>>> context.getThreadLocalCarbonContext().setTenantId(tenantManager.getTenantId(tenantDomain)); >>>>> >>>>> context.getThreadLocalCarbonContext().setTenantDomain(tenantDomain); >>>>> context.getThreadLocalCarbonContext().setUsername(userName); >>>>> accessUrl = >>>>> server.osgiService('org.wso2.carbon.appfactory.application.mgt.service.ApplicationManagementService') >>>>> >>>>> .getApplicationUrl(applicationKey, version, stage, tenantDomain); >>>>> status = >>>>> server.osgiService('org.wso2.carbon.appfactory.application.mgt.service.ApplicationManagementService') >>>>> >>>>> .getApplicationStatus(applicationKey, version, stage, tenantDomain); >>>>> >>>>> if(!status){ >>>>> //fix for APPFAC-2195 >>>>> //load the tenant >>>>> if(accessUrl){ >>>>> var xhr = new XMLHttpRequest(); >>>>> xhr.open("GET",accessUrl + "",false); >>>>> xhr.send(""); >>>>> } >>>>> >>>>> status = >>>>> server.osgiService('org.wso2.carbon.appfactory.application.mgt.service.ApplicationManagementService') >>>>> >>>>> .getApplicationStatus(applicationKey, version, stage, tenantDomain); >>>>> } >>>>> if(status){ >>>>> url=accessUrl; >>>>> } >>>>> >>>>> } finally { >>>>> context.endTenantFlow(); >>>>> } >>>>> >>>>> >>>>> >>>>> [1] - https://wso2.org/jira/browse/APPFAC-2195 >>>>> >>>>> >>>>> On Mon, Mar 9, 2015 at 11:59 AM, Harsha Thirimanna <[email protected]> >>>>> wrote: >>>>> >>>>>> Hi Mahesh, >>>>>> >>>>>> One question, >>>>>> What is the meaning of deploy status false and why it try >>>>>> to retrieve URl if it is not deploy ? Is that the behavior we are doing >>>>>> or >>>>>> are there any logic behind the seen ? >>>>>> >>>>>> If it is required then, I think you suggestion may be good. But how >>>>>> it load the tenant ? >>>>>> >>>>>> >>>>>> *Harsha Thirimanna* >>>>>> Senior Software Engineer; WSO2, Inc.; http://wso2.com >>>>>> * <http://www.apache.org/>* >>>>>> *email: **[email protected]* <[email protected]>* cell: +94 71 5186770 >>>>>> , +94 * >>>>>> *774617784twitter: **http://twitter.com/ >>>>>> <http://twitter.com/afkham_azeez>* >>>>>> *harshathirimannlinked-in: **http: >>>>>> <http://lk.linkedin.com/in/afkhamazeez>**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122 >>>>>> <http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122>* >>>>>> >>>>>> *Lean . Enterprise . Middleware* >>>>>> >>>>>> >>>>>> On Sun, Mar 8, 2015 at 11:21 PM, Mahesh Chinthaka <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Hi all, >>>>>>> >>>>>>> Found that when the "Launch" button is clicked in Repos n builds >>>>>>> page it checks for the application deployed status, >>>>>>> If deployed status is false, then it loads the tenant again and get >>>>>>> access url for the app. >>>>>>> If deployed status is true, then it just access the app url without >>>>>>> loading the tenant. >>>>>>> >>>>>>> When I tried with removing the if statement and tried loading the >>>>>>> tenant each time fixed the issue. >>>>>>> >>>>>>> What are the bad/good effects of solving this issue with above >>>>>>> mentioned change ? >>>>>>> >>>>>>> On Sat, Mar 7, 2015 at 10:08 AM, Harsha Thirimanna <[email protected] >>>>>>> > wrote: >>>>>>> >>>>>>>> Hi Mahesh, >>>>>>>> >>>>>>>> You can set tenant unloading time for few minutes. And check that. >>>>>>>> >>>>>>>> >>>>>>>> *Harsha Thirimanna* >>>>>>>> Senior Software Engineer; WSO2, Inc.; http://wso2.com >>>>>>>> * <http://www.apache.org/>* >>>>>>>> *email: **[email protected]* <[email protected]>* cell: +94 71 5186770 >>>>>>>> , +94 * >>>>>>>> *774617784twitter: **http://twitter.com/ >>>>>>>> <http://twitter.com/afkham_azeez>* >>>>>>>> *harshathirimannlinked-in: **http: >>>>>>>> <http://lk.linkedin.com/in/afkhamazeez>**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122 >>>>>>>> <http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122>* >>>>>>>> >>>>>>>> *Lean . Enterprise . Middleware* >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Mar 6, 2015 at 8:35 PM, Mahesh Chinthaka <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi Danushka, >>>>>>>>> >>>>>>>>> Tenant domain and tenant Id are set properly at everytime. other >>>>>>>>> parameters are null. ok, lets see on Monday. >>>>>>>>> @Harsha, >>>>>>>>> Could be, have any idea of overcoming that ?? >>>>>>>>> >>>>>>>>> On Fri, Mar 6, 2015 at 10:08 PM, Danushka Fernando < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> May be this is due to some missing patch. Lets discuss this >>>>>>>>>> monday. >>>>>>>>>> >>>>>>>>>> Thanks & Regards >>>>>>>>>> Danushka Fernando >>>>>>>>>> Software Engineer >>>>>>>>>> WSO2 inc. http://wso2.com/ >>>>>>>>>> Mobile : +94716332729 >>>>>>>>>> >>>>>>>>>> On Fri, Mar 6, 2015 at 9:43 PM, Harsha Thirimanna < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Mahesh, >>>>>>>>>>> Is this may be tenant loading delay for the first time ? >>>>>>>>>>> On Mar 6, 2015 6:51 AM, "Danushka Fernando" <[email protected]> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> When you say "CarbonContext data are empty" are they null or >>>>>>>>>>>> are they not tenant data? >>>>>>>>>>>> What's the value of tenant domain and tenant id of carbon >>>>>>>>>>>> context? >>>>>>>>>>>> >>>>>>>>>>>> Thanks & Regards >>>>>>>>>>>> Danushka Fernando >>>>>>>>>>>> Software Engineer >>>>>>>>>>>> WSO2 inc. http://wso2.com/ >>>>>>>>>>>> Mobile : +94716332729 >>>>>>>>>>>> >>>>>>>>>>>> On Fri, Mar 6, 2015 at 8:10 PM, Mahesh Chinthaka < >>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Hi All, >>>>>>>>>>>>> >>>>>>>>>>>>> Im working on [1]. This is regarding appfactory sample >>>>>>>>>>>>> "Customer Portal". >>>>>>>>>>>>> >>>>>>>>>>>>> We have a webapp that uses a datasource/database. >>>>>>>>>>>>> When we deploy it and access for the first time , context data >>>>>>>>>>>>> doesn't get loaded. When refreshed the browser or try to access >>>>>>>>>>>>> the app for >>>>>>>>>>>>> the second time (click again in 'open' url) it works fine. >>>>>>>>>>>>> >>>>>>>>>>>>> When I analyzed and debugged the code I found that >>>>>>>>>>>>> CarbonContext data are empty. >>>>>>>>>>>>> But in ApplicationAwareDataSourceRepository.java class and >>>>>>>>>>>>> in CarbonContextCreatorValve.java class those context details are >>>>>>>>>>>>> being set >>>>>>>>>>>>> properly. >>>>>>>>>>>>> >>>>>>>>>>>>> When our sample webapp tries to read those values it returns >>>>>>>>>>>>> null for the first time. >>>>>>>>>>>>> >>>>>>>>>>>>> What can be the reason for this ? >>>>>>>>>>>>> >>>>>>>>>>>>> [1] - https://wso2.org/jira/browse/APPFAC-2998 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>>>>>>>>>>> WSO2, Inc | lean. enterprise. middleware. >>>>>>>>>>>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>>>>>>>>>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>>>>>>>>>>> Email: [email protected] | Web: www.wso2.com >>>>>>>>>>>>> >>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>> Dev mailing list >>>>>>>>>>>>> [email protected] >>>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Dev mailing list >>>>>>>>>>>> [email protected] >>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>>>>>>> WSO2, Inc | lean. enterprise. middleware. >>>>>>>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>>>>>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>>>>>>> Email: [email protected] | Web: www.wso2.com >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>>>>> WSO2, Inc | lean. enterprise. middleware. >>>>>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>>>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>>>>> Email: [email protected] | Web: www.wso2.com >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>>> WSO2, Inc | lean. enterprise. middleware. >>>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>>> Email: [email protected] | Web: www.wso2.com >>>>> >>>> >>>> >>>> >>>> -- >>>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>>> WSO2, Inc | lean. enterprise. middleware. >>>> #20, Palm Grove, Colombo 03, Sri Lanka >>>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>>> Email: [email protected] | Web: www.wso2.com >>>> >>> >>> >>> >>> -- >>> *Mahesh Chinthaka Vidanagama* | Software Engineer >>> WSO2, Inc | lean. enterprise. middleware. >>> #20, Palm Grove, Colombo 03, Sri Lanka >>> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >>> Email: [email protected] | Web: www.wso2.com >>> >> >> >> >> -- >> *Mahesh Chinthaka Vidanagama* | Software Engineer >> WSO2, Inc | lean. enterprise. middleware. >> #20, Palm Grove, Colombo 03, Sri Lanka >> Mobile: +94 71 63 63 083 | Work: +94 112 145 345 >> Email: [email protected] | Web: www.wso2.com >> > > > > -- > *Mahesh Chinthaka Vidanagama* | Software Engineer > WSO2, Inc | lean. enterprise. middleware. > #20, Palm Grove, Colombo 03, Sri Lanka > Mobile: +94 71 63 63 083 | Work: +94 112 145 345 > Email: [email protected] | Web: www.wso2.com > -- *Kasun Gajasinghe*Senior Software Engineer, WSO2 Inc. email: kasung AT spamfree wso2.com linked-in: http://lk.linkedin.com/in/gajasinghe blog: http://kasunbg.org
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
