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

Reply via email to