Hi Mahesh, Find out how the ContextBindings checks whether a request is coming for a webapp. ContextBindings must be keeping some kind of flag. Then, find out why that flag is not getting set for the very first request.
On Tue, Mar 10, 2015 at 7:18 PM, Mahesh Chinthaka <mahe...@wso2.com> 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 <mahe...@wso2.com> > 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 <hars...@wso2.com> >> 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: **hars...@wso2.com* <az...@wso2.com>* 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 <mahe...@wso2.com> >>> 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 <hars...@wso2.com> >>>> 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: **hars...@wso2.com* <az...@wso2.com>* 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 <mahe...@wso2.com> >>>>> 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 < >>>>>> danush...@wso2.com> 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 <hars...@wso2.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi Mahesh, >>>>>>>> Is this may be tenant loading delay for the first time ? >>>>>>>> On Mar 6, 2015 6:51 AM, "Danushka Fernando" <danush...@wso2.com> >>>>>>>> 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 <mahe...@wso2.com >>>>>>>>> > 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: mahe...@wso2.com | Web: www.wso2.com >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Dev mailing list >>>>>>>>>> Dev@wso2.org >>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Dev mailing list >>>>>>>>> Dev@wso2.org >>>>>>>>> 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: mahe...@wso2.com | 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: mahe...@wso2.com | 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: mahe...@wso2.com | 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: mahe...@wso2.com | Web: www.wso2.com > > _______________________________________________ > Dev mailing list > Dev@wso2.org > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- *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 Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev